-->

explorer.exe 코드인젝션 한글(hwp) 악성코드 분석

 

악성코드 정보

MD5  ec0c543675374a0ee9a83a4d55ca1a6c
특징  hwp/EPS/코드인젝션/드로퍼/???
다운로드  https://app.any.run/tasks/496f832b-fee2-4224-8b0e-bed22d171354/

 

 

악성코드 상세분석

먼저, SSView를 사용해 악성 hwp 구조를 살펴보면 BinData 스토리지에 BIN0001.PS가 들어있다.

 

 

 

BIN0001.PS를 스트림 형태로 저장한 다음 zlib 압축을 풀어주면, 아래와 같이 디코딩된 eps 코드를 볼 수 있다. 이전에 분석한 한글 악성코드와 형태가 매우 유사해, get 뒤에 있는 <>가 xor 키값임을 알 수 있었다. 이번 키길이는 16바이트이다. 

 

 

 

16바이트 키값을 활용해 직접 파이썬 코드를 짜도 되지만, 여기서는 eps 코드의 맨 마지막에 있는 exec 명령어를 print로 변경해주는 방식을 사용하도록 한다. 

 

 

 

eps는 한글 설치 시 포함되는 gbb.exe를 사용해 돌릴 수 있다. 인자값으로 exec 명령어를 print로 변경한 eps 코드를 넘겨주면 코드가 실행되면서 마지막 xor 복호화된 cvx 변수값을 출력해준다. 결과값을 다시 eps로 저장한 후 보면, 다시 변수 Y77에 어떠한 코드가 들어있는데, 첫 바이트인 E9값을 보면 쉘코드임을 유추할 수 있다.

 

 

C:\Program Files\Hnc\HOffice9\Bin\ImgFilters\GS\gs8.71\bin\gbb.exe

 

 

 

해당 쉘코드를 exe로 변경한 다음, x64dbg로 쭉쭉 실행시켜 보았는데, 안티디버깅이 있는지 중간에 계속 꺼진다. 그래프뷰로 봐보면, 빨간박스를 친 0x401022 주소로 가야 retn이 안돼서 프로세스가 종료되지 않는데 [ cmp, dword ptr [ecx], 0AABBCCDDh ] 이부분에서 점프 조건 분기가 오른쪽인 0x401018 부분으로 간다. 따라서 jz 부분을 그냥 jmp로 변경해 무조건 0x4015AD0 부분이 실행될 수 있도록 해주었다.

 

 

 

안티디버깅인지 뭔지? 여하튼 우회하고 나서 실행시키다보면, ebp-10 에 explorer.exe 문자열이 쓰여진다.

 

 

 

그리고 아래와 같이 함수테이블을 구성하게 되는데 VirtualAllocEx, WriteProcessMemory와 같은 함수를 보아선, 아까 문자열로 확인한 explorer.exe를 열어서 dll 인젝션을 하거나 코드를 쓸것이라는 것을 예상해볼 수 있다.

 

 

 

OpenProcess에 bp를 걸고 인자값을 보면, PID가 0x15FC(5628)이고, explorer.exe가 5628 PID로 winlogon.exe라는 프로세스의 자식프로세스로 열려있는 것을 확인할 수 있다. winlogon이건 언제 생겼대;;

 

 

 

WriteProcessMemory에 bp를 걸어보자. 인자값을 봐보면, 0x5860000 오프셋에 0x401000 주소에 있는 값을 쓰는데, 401000은 EP부분이다. explorer.exe에 코드인젝션을 수행해, 0x2e80000을 확인해보면 아래와 같이 EP코드가 쓰여진 것을 볼 수 있다.

 

 

 

몇번을 걸쳐 계속 쓴다. 쓰는 데이터들을 보면서, 처음 쉘코드를 다시 확인해보니 아래의 URL을 확인할 수 있었는데 아무래도 https://gozdeelektronik.net 은 c2서버로 확인되고, 해당 서버에서 movie.jpg라는 추가적인 악성파일을 다운받는 것으로 예상할 수 있다.

 

 

댓글

Designed by JB FACTORY