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