취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit 2012-07-19 RedAlert Team 안상환
목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Simple Web Server 취약점... 2 2.1. Simple Web Server 취약점개요... 2 2.2. Simple Web Server 취약점테스트시스템목록... 2 2.3. Simple Web Server 취약점공격기법원리... 2 3. 분석... 4 3.1. 공격테스트... 4 3.2. 공격기법분석... 7 4. 결론... 10 5. 대응방안... 10 6. 참고자료... 11 6.1. 참고문헌... 11 6.2. 참고웹문서... 11
그림목차 그림 1 Simple Web Server Buffer Overflow 공격개요도... 3 그림 2 취약한프로그램... 4 그림 3 운용중인웹서버... 4 그림 4 공격코드... 5 그림 5 피해자시스템권한탈취... 6 그림 6 피해자시스템네트워크연결상태... 6 그림 7 immunity Debugger 를이용하여디버깅... 7 그림 8 Stack 에삽입된공격코드... 7 그림 9 Return Address 변조... 8 그림 10 JMP ESP 동작... 8 그림 11 Egg Hunter Code 실행... 9 그림 12 Shellcode 실행... 9 그림 13 공격자시스템과 Session 연결... 10
1. 개요 1.1. 취약점분석추진배경 본취약성을가진프로그램은간단한설치만으로웹서버를구축할수있는프로그램입니다. 주로일반사용자들이사용하고있습니다. 그렇기때문에본취약성을이용한공격은기업보다는개인을타깃으로한공격에사용될수있습니다. 일반사용자는해당프로그램을사용하여간단하게웹서버를구축할수있지만, 취약한프로그램을포함한이와비슷한종류의프로그램들은공격자로부터전송된공격코드에유연하게대처하지못하는실정입니다. 더욱이피해자는공격을당하더라도전문적인지식없이는이를인지하지못하며, 공격자는피해자시스템을기점으로한 2 차,3 차공격을감행할수있습니다. 1
2. Simple Web Server 취약점 2.1. Simple Web Server 취약점개요 취약점이름 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit 최초발표일 2012 년 07 월 19 일 문서작성일 2012 년 7 월 19 일 제품 Simple Web Server (2.2) 벤더 personal 공격범위 Remote / Network Access 공격유형 Stack Buffer Overflow 취약한 OS Windows 위험등급 위험 취약점영향원격코드실행및서비스거부발생 CVE-ID N/A 표 1 Simple Web Server 취약점개요 Windows 기반의웹서버구축프로그램인 Simple Web Server 에서발생한 Buffer Overflow 취약점입니다. 해당취약점을이용한공격은원격을통해가능하며원격공격자는취약웹서버를대상으로특수하게제작된패킷을전송함으로써원격코드실행및서비스거부를발생시킬수있습니다. 2.2. Simple Web Server 취약점테스트시스템목록 Simple Web Server 취약점을이용한공격은 XP SP3 32bit 영문버전에서테스트하였습니다. Microsoft Windows XP Professional SP3 표 2 취약한시스템 2.3. Simple Web Server 취약점공격기법원리 해당취약점은클라이언트로부터전송된웹페이지요청구문을웹서버에서분석하는과정에서발생하는 Buffer Overflow 취약점입니다. 공격자는특수하게제작한긴요청구문을서버로전송하여 Buffer Overflow 를발생시킬수있으며, 이를이용하여공격자는프로그램의흐름을원하는주소로변경할수있습니다. 피해자시스템은해당프로그램을이용하여웹서버를운용하기만하여도시스템의최고관리자권한을탈취당할뿐만아니라, 임의의코드실행및서비스거부가발생할수있습니다. 2
그림 1 Simple Web Server Buffer Overflow 공격개요도 첫째, 공격자는피해자시스템으로부터운용중인웹서버로공격코드가삽입된웹요청구문을전송합니다. 둘째, 취약한웹서버에서는공격자로부터전송된패킷을분석하기시작하는데, 이과정에서 Buffer Overflow 가발생합니다. 셋째, Buffer Overflow 가발생하여인접스택의데이터및 return address 를변조하여, 프로그램의흐름을변경 / Attacking Code 를실행합니다. 3
3. 분석 3.1. 공격테스트 < 그림 2> 은해당취약점을가진프로그램을실행시킨화면입니다. < 그림 3> 은취약한웹 서버메인페이지입니다. 공격자는해당웹서버가동작할때공격할수있습니다. 그림 2 취약한프로그램 그림 3 운용중인웹서버 4
공격코드는아래 < 그림 3> 과같습니다. 메모리내삽입된 Shellcode 를검색해실행하는 Egg Hunter 기법을사용하고있으며, 직접적으로 Return Address 를변조하여 Egg Hunter Code 로이동하도록합니다. 그림 4 공격코드 5
피해자시스템의대상프로그램을타깃으로공격코드를실행하여피해자시스템의관리자권한을획득한것을 < 그림 5> 를통해확인할수있습니다. 공격이완료된후대상프로그램은종료되지않고정상동작하며, 공격자가 Session 을종료시킬때대상프로그램은종료됩니다. 이는피해자가전문적지식이있지않고서자신의시스템관리자권한이탈취당한것을인지할수없습니다. 그림 5 피해자시스템권한탈취 피해자는아래명령이나 netstat an 과같은 Session 연결상태를확인하는명령을사용하여 해킹여부를확인할수있습니다. 그림 6 피해자시스템네트워크연결상태 6
3.2. 공격기법분석 본인은 immunity Debugger 를이용하여분석하였습니다.. 그림 7 immunity Debugger 를이용하여디버깅 공격자로부터공격코드가삽입된패킷이전송되면대상프로그램은해당요청구문을 분석하는과정에서 Buffer Overflow 가발생하게됩니다. < 그림 8> 을통해 Stack 의데이터들이변조된것을확인할수있습니다. 그림 8 Stack 에삽입된공격코드 7
Buffer Overflow 로인해인접스택의데이터침범및변조가발생하여 Return Address 의본 주소도변조된것을확인할수있습니다. 변조된 Return Address 의주소는 kernel32 의 JMP ESP 주소로써, 메모리에삽입된 Egg Hunter Code 로이동하도록합니다. 그림 9 Return Address 변조 JMP ESP 코드가동작하고 Attacking Code 인근 Nop sled 로이동하게됩니다. Nop sled 를타고 Egg Hunter Code 가실행됩니다. 그림 10 JMP ESP 동작 8
< 그림 11> 은 Egg Hunter Code 가실행되는모습입니다. Egg Hunter Code 는메모리내위치한 Shellcode 를검색하여실행하는역할을하고있습니다. 그림 11 Egg Hunter Code 실행 Egg Hunter 코드가 Shellcode 를검색하는알고리즘은간단한검색알고리즘으로 Shellcode 앞에위치한 Tag 로불리는유니크한문자열을검색하여 Shellcode 의위치를찾고 해당위치로이동하게됩니다. 아래 < 그림 12> 는 Egg Hunter Code 가정상적으로동작하여 Shellcode 로이동한화면이며 Shellcode 가실행됩니다. 그림 12 Shellcode 실행 9
Shellcode 가정상적으로실행되고공격자시스템과 Session 이연결된것을확인할수 있습니다. 그림 13 공격자시스템과 Session 연결 4. 결론 대상프로그램은간단한방법으로 Attacking code 를실행시킬수있었습니다. 위에서테스트한공격은고급기술을요구하지않고간단한 Buffer Overflow 지식만으로도해당공격을수행할수있습니다. 간단한지식만으로할수있는공격치고는너무나위협적인결과를보여주며, 해당공격을통해 2 차, 3 차공격을감행하여더큰피해를입힐수있습니다. 이러한부분으로인하여사용자뿐만아니라개발사또한큰피해를입을수있으며, 개발사에서는제품출시전에제품내모든입력값에대한무결성검증을할필요가있으며, 기타보안검사후출시하여야합니다. 5. 대응방안 해당취약점은제한된버퍼내입력값에대한제한이없기때문에발생한취약점입니다. 그러므로사용자입력값의길이제한을두어인접스택영역을침범하지못하게할수있습니다. 사용자는방화벽사용을철저히하여야하고수시로의심스러운네트워크와연결되어있지는않은지확인하여야합니다. 10
6. 참고자료 6.1. 참고문헌 6.2. 참고웹문서 http://www.exploit-db.com/exploits/19937/ 11