상세 컨텐츠

본문 제목

Ursnif Loader 악성 Word 파일 분석

악성코드 Malware/Maldocs

by 0xmh 2022. 5. 19. 19:20

본문

728x90

주의사항: Malware 혹은 악성코드를 분석할 때 원래 쓰는 운영체제를 절대 쓰지 마세요. 항상 악성코드를 위한 랩 환경을 쓰세요!! Vmware, Vbox 등!

안녕하세요! 오늘도 악성코드 분석을 할 겁니다.

제가 오늘 선택한 악성코드는 ursnif이라는 Banking Trojan입니다.

Banking Trojan 같은 악성코드는 말 그대로 피해자가 은행 홈페이지에서 자기의 유저 이름하고 비밀번호를 입력하면 그 정보를 탈취하는 악성 프로그램입니다. 자주 발견할 수 있는 Banking Trojan는: Zeus, ursnif, Emotet, Trickbot. Panda입니다.

몇 주 전에 "Word 파일 속에 악성코드"라는 블로그를 썼는데, 그때 제가 알려드린 것은 오늘 큰 도움이 될 겁니다.

Word, Excel이나 Powerpoint 같은 프로그램으로 유포되는 경우가 대부분이기 때문입니다. 당연히 모르는 사람이 보낸 Word 파일을 함부로 열면 안 되지만, 아직도 그렇게 하는 사람이 많습니다. 아울러 위에 Office 프로그램들을 안 쓰는 회사가 거의 없으므로 언젠간 누군가 악성 Word 파일을 열게 될 겁니다.

분석하기 전에 일반 악성코드의 "Lifecycle"를 봅시다

1단계 Loader: 악성 Office 파일. 악성 Macro를 활용해 해커가 제어하는 홈페이지에 들어가 2단계를 다운로드.

2단계: 악성 .exe 파일. 두 번째 Loader나 "final payload"

3단계: 1단계의 홈페이지 (C2 서버) 통신해 추가 .exe나 .dll 파일 다운로드

오늘 분석할 것은 ursnif의 1단계 Loader입니다. 위의 사진은 ursnif를 다운로드하는 악성 워드 파일이고, 속에 powershell를 실행시키는 vbs 코드가 있습니다. 코드가 난독화되어 있어서 좀 시간이 걸렸지만 결과가 무엇인지 같이 봅시다!

먼저 파일을 열어 무슨 macro가 담겨 있는지 봅시다. 보시다시피 대부분 macro들은 이상한 이름을 가지고 있는데 그나마 정상 Macro는 "GotFocus"이라는 string이 들어가 있는 macro인 것 같아 이것부터 봅시다.

속에 난독화되어 있는 코드가 많고, sublime으로 열어봤더니....

한숨만 나왔습니다. 오른쪽 보시면 전혀 도움이 되지 않아 보이는 코드가 많은 것 같습니다.

하지만 좀 코드를 좀 뒤져다 보니 array 말고 vbs 코드를 있어서, 일단 도움이 안 되는 array들을 다 제거해 보았습니다.

다 제거한 뒤에 결과물입니다. 훨씬 깨끗해 보이나 난독화되어 있는 것이 많이 남았기 때문에 코드를 잘 보고 무슨 역할을 하고 있는지 잘 판단해서 이름을 바꿔주는 것이 가장 중요합니다. 판단하는 데에 드릴 수 있는 꿀팁은 없고, 경험이 어느 정도 필요한 것 같습니다. (저도 많지 않아 분석 오래 걸렸어요 :) )

결과입니다.

change_value_func의 첫 번째 argument는 array이고, 위에 있는 array들의 난독화를 제거해 주는 역할을 할 것 같습니다. 두 번째 parameter는 위에 보이는 AlternativeText입니다. 여기서부터 앞으로 뭘 해야 할지 참 오랫동안 고민했고, 확실하지 않아서 그냥 첫 번째의 function의 InlineShapes(1).AlternativeText를 워드에서 돌려봤는데 "jnmquwwy"이라는 variable 결과가 나왔습니다

악성코드 자체를 실행시키고 싶지 않아서 ShellExecute에 Breakpoint를 하나 잡았고, jnmquwwy를 돌려보니 아주 긴 string 하나 나왔습니다.

다시 sublime으로 돌아갑니다.

첫 번째 change_value_func call를 보고 array의 첫 번째 숫자 13는 이상한 jnmquwwy이라는 string의 13번째 value를 가리키는 것 같습니다. "p"이네요. 그다음 1인데 "o"입니다... 왠지 powershell 일 것 같다는 생각...

쉽게 분석하기 위에 간단한 python script 쓰고 돌려봤는데 output를 봅시다!

코드는 확실히 powershell.exe로 뭔가를 실행시키려고 합니다. 마지막 "new"는 CLSID인 것 같긴 한데 무슨 역할을 하는지 아직 잘은 모르겠습니다

남은 AlternativeText도 돌려보니, Base64 output를 받았는데 cyberchef를 열어보고...

powershell script를 받습니다! 여기도 다 난독화되어 있는데, 중요한 부분은 url이 나와 있다는 것입니다!!

러시아 홈페이지인 것 같네요! 여기에 들어가서 악성 워드 파일이 악성코드의 2번째 단계를 받고, Banking Trojan입니다.

보호팀은 그럼 해야 될 것은 이 url를 차단하는 것과 이 악성 파일을 알아볼 수 있는 YARA 규칙을 쓰는 것입니다.

오늘도 읽어 주셔서 감사합니다!!

'악성코드 Malware > Maldocs' 카테고리의 다른 글

악성 워드 파일 분석 방법  (0) 2022.05.25

관련글 더보기