본문 바로가기

디지털포렌식

gitstack - 메모리 포렌식

반응형
인증서 비밀번호와 악성 코드를 찾아라


Pstree


인증서는 ssl에서 사용하므로 openssl 프로그램에
HTTPS를 인증하기 위한 비밀번호가 적혀있을 것으로 생각된다. 


cmd 자식 프로세스에 mimikatz는 단순히 윈도우 계정 암호 탈취를 위해 사용한 것으로 추측된다. 

이는 악성코드가 아닌 크랙 도구라고 하는게 맞다.

하지만 부모 프로세스인 powershell에서 다른 행위를 했을 가능성이 있으므로 의심해 볼 여지가 있다.
우선 openssl을 추출하여 명령 실행 이력이 있는지 확인한다.

Memdump -> strings -> openssl.exe


openssl 명령어에 인증서 비밀번호("boI3jss2")가 적혀있다.
인증 이후 gitstack과 관련된 취약점 악용, 파워쉘을 통해 특정 명령어를 수행하는 것으로 추정된다.

gitstack은 개인용 PC에 git 서버를 띄우는 소프트웨어이며
2.3.10 버전에 원격코드 취약점이 존재한다.


https://www.exploit-db.com/exploits/43777

실제 환경을 구축하고 공격을 시연해보겠다.
위 사이트에서 Exploit 코드를 다운받고 파일을 연다.



Gitstack의 ip를 등록하고 exploit 성공 이후에 실행할 명령어를 입력한다.
필자는 whoami를 ipconfig로 변경하였다.
공격이 성공하면 username과 password에서 지정한 이름으로 계정이 생성될 것이다.



공격 이후 우측에 피해자 Gitstack 서버에서 공격자의 계정이 생성된 것을 알 수 있다.
또한 아래와 같이 exploit.php 파일도 생성된다.



외부에서 전달받은 명령이 실행되는 코드이다.
공격자는 아래와 같은 명령을 통해 피해자 서버의 원격 명령 실행이 가능해진다.

OS 버전 조회


이제 악성코드를 찾을 차례다.
아까전 파워쉘이 실행한 코드가 상당히 의심스러우니 
관련된 실행 로그를 모두 찾아보자.

pstree에서 Sysmon을 확인할 수 있는데 이 도구는
시스템 서비스로 등록되어 자동으로 이벤트를 모니터링하는 역할을 한다.
따라서 이벤트 로그 파일에 단서가 남아 있을거라 생각된다. 

Sysmon을 검색하여 이벤트 로그 파일(evtx)을 추출한다.



이벤트 로그를 보면 powershell로 실행한 코드가 base64로 인코딩되어 있다.



아래 사이트에서 디코딩하면 파워쉘 스크립트가 나온다. 
Base64Decode
그런데 GzipStream, Frombase64StringFrombase64String 함수에 또 다른 base64 문자열이 존재한다.



base64로 다시 디코딩 해보니 출력 형태를 hex형태로 출력한다.
gz은 실행파일 이므로, hex형태로 저장되기 때문이다.
base64.guru로 이동하여 출력결과를 hxd로 저장한다.



gz 파일의 압축을 해제하면 아래와 같이 다시 base64로 인코딩된 코드가 나온다.



이 부분을 다시 hex 출력형태로 디코딩하고 hxd를 이용하여 저장한다.
virustotal에 해당 파일을 업로드 하면 powershell에서 사용하는 악성 코드임을 확인할 수 있다.












반응형