Malware Analysis 도서관/악성코드 분석 스터디

d113cd13983a1644984f2a89ff1a868a PDF 분석 notetasking

0x00 2023. 11. 8. 10:52

PDF 을 통해 악성코드 유입 및 위장.

 

우선 바이러스 토탈에 돌렸다

hash 정보

md5: d113cd13983a1644984f2a89ff1a868a  

 

https://github.com/jesparza/peepdf

 

GitHub - jesparza/peepdf: Powerful Python tool to analyze PDF documents

Powerful Python tool to analyze PDF documents. Contribute to jesparza/peepdf development by creating an account on GitHub.

github.com

 

peepdf 로 내부 정보 을 열어 보려고 시도 했다.

 

-f 옵션 쪽에서 문자열 을 확인 할수 있었다. 

 

python sploit 을 통해 보기 쉽게 해놓았다

synAnnotScan 을 하는것을 확인 하였다.

 

 

pdf-parser -a 옵션으로  Annot 이 오브젝트 5번을 reference 하는것을 확인 했다.

 

 

우선 계속 오브젝트 을 trace 을 하면서 확인 하니 compress 가 되어있는 정보을 확인 하였다 

 

난독화 되어있는 상태 이고 y 16 진수 패턴 으로 난독화 가 되어있기 때문에  말질라 을 사용했다.

말질라

 

 

pdfstreamDumper

우선 알수 없는 코드 을 pdfstremdumper 로 돌려 보니 자바스크립트 코드 을 얻었다 (난독화 해제)

 

 

 

 

 

shellcode

 

shellcode 을 확이 하였고 이것을 마질라 로 16진수 로 변환 시켰다

 

 

C2 확보

 

 

 

동적 분석

우선 shellcode 로 exe 파일 을 만들고 strings 을 통해서 문자열 을 확인 하였다.

URL 과 WSAStartup 함수을 확인 할수 있었고  이로 인해 URL 경로 을 통해서 서로 통신 을 할수 있다. 추측 할수 있었다.

 

Slivana packing 확인

 

정확한 분석 이 필요하기 때문에 디버거 로 동적 분석을 시작 하였고 DNS 질의 요청 string 에서 response 출력 관련 문자열 을 확인 할수 있었다 .

위 내용에 입증 할수 있는 사진

 

다음 은 프로세스(프로세스 모니터링) , regedit( Winalysis)  ,

Snaps hot util 확인

registery 와 Services 이 잡혔고  service 을 확인 해보니 

kernel  RDITSC 을 Kill 을 하는 되게 크리티컬 한 서비스 가 실행 되는것을 알수 있다. 

 

드라이버 관련 해서 레지스트리 가  생성 된것을 확인 할수 있었다

 

이는 드라이버 을 통해서 rootkit 을 하려는게 아닌가 싶다.

 

우선 쉘코드 을 실행 시키는곳에서 fakerdtsc 라는 드라이버 가 생성 되고  이를 디버거 로 열어 보려고 햇으나 

파일 이 삭제 가 됬다 이는 이파일에서 anit-debugger 가 걸려서 있을 가능성이 크다.

 

 

GMER 을 통해서 드라이버 rookkit 을 확인 해보고 

 

확인이 실제 로 되었다  전에 rooklit 을 하려는 추측이 입증 이 됬다.

 

우선은 다시 디버거 로 들어가서 shellcode 주소 을 찾았는데 ( 아이다 로 사용 해도 됨)

Kenrel32.LoadLibaryA Kernel32.WinExec Kernel32.GetTempPathA  이런 함수을 실행 시키는 패턴을 확인 하였다 

어떤 라이브러리 어떤 경로 의 파일 로 Exce 을 할것인지 확인 해보자 그러기 위해서는 우선 LoadLibaryA 을 확인 해보자

우선 ASCII 형식으로 urlmon 이 있는것을 확인 했고 

 

쉘코드 확인 했고 

 

아래 디렉토리 도 확인 

 

우선 조건 분기 가 있는것을 확인 할수 있고  inc , cmp , jnz  을 통해서(이는 정형적인 탐색 패턴 이다)  검색 디렉토리 위치 을 확인 한다 

디렉토리 위치  확인 하게 되고 그 디렉토리 의 위치에 있는 파일 을 실행 시킨다 ,

마지막 으로 ExitProcess 로 빠져 나오는거 까지 확인 이 되었다

 

 

flow