전공영역 공부 기록

비트코인 주소를 복사하면 공격자 주소로 변경하는 악성코드

악분 2020. 8. 4. 09:49
반응형

※ anyrun 샌드박스 링크: https://app.any.run/tasks/4a0c5896-8686-47e7-9ee9-515cbc051e45/

※ cape샌드박스 링크: https://capesandbox.com/submit/status/37168/

※ 영상: https://youtu.be/ZDpvck1RKkg

 


1. 요약

 

비트코인 주소를 복사-붙여넣기로 전송하면 공격자에게 비트코인을 전송하는 악성코드입니다. 비트코인 주소는 34글자이므로 대부분 사람들은 복사-붙여넣기를 사용합니다. 악성코드 이것을 이용해서 복사한 순간 공격자 비트코인 주소로 변경하는 원리입니다.

1.1 구현 방식: 클립보드 모니터링

악성코드는 AddClipboardFormatListenerAPI를 사용해서 클립보드를 관리하고 비트코인 주소를 변경합니다. 복사-붙여넣기한 데이터는 클립보드라는 공간에 저장됩니다. 클립보드는 윈도우 시스템이 관리하는데 AddClipboardFormatListenerAPI를 사용하면 프로그램이 클립보드를 관리할 수 있습니다.

1.2 공격자의 비트코인 주소

비트코인 주소 리소스 섹션에 있지만 정적 분석 도구에서 발견하지 못합니다.


2. 1단계: 악성행위 준비

 

악성코드 실행 경로를 검사하고 악성행위를 하기 위한 준비를 합니다.

 

2.1 지속 메커니즘 설정

시스템 부팅이 되면 grpconv32.exe가 실행되도록 레지스트리를 설정합니다.

그림1 지속 메커니즘 설정: 샌드박스 분석

 

레지스트리 경로는 하드코딩되어 있습니다.

그림2 지속 메커니즘 설정: 동적 분석

 

 

2.2 실행경로 검사

악성코드 실행경로를 검사합니다. 실행경로 검사를 통과하지 못하면 파일을 복사합니다. 그리고 복사한 파일을 자식 프로세스로 실행한 후 악성코드를 종료합니다. 반대로 실행경로 검사를 통과하면 클립보드 하이재킹 악성행위를 수행합니다.

그림3 실행경로 검사1: 동적 분석

 

그림4 실행경로 검사2: 동적 분석

 

2.2.1 파일 복사

실행경로 검사를 통과하지 못하면 악성코드를 c:\intel\gp\grpconv32.exe와 c\Users\Public\rekeywiz64.exe경로에 복사합니다.

그림5 파일 복사: 샌드박스 분석

 

그림6 파일복사1: 동적 분석

 

그림7 파일복사2: 동적 분석2

 

2.2.2 자식 프로세스 실행

복사한 c:\Users\Public\rekeywiz64.exe파일을 자식 프로세스로 실행하고 악성코드는 종료됩니다. 부모 프로세스(악성코드)의 경로를 인자로 설정합니다.

그림8 자식 프로세스 실행: 샌드박스 분석

 

그림9 자식 프로세스 실행: 동적 분석

 


3. 2단계: 클립보드 데이터 수정

악성코드가 직접 클리보드를 관리하게 설정합니다. 만약 클립보드에 새로 등록된 문자열이 비트코인 주소라면 악성코드의 비트코인 주소로 바꿔치기합니다.

3.1 샌드박스의 악성행위 미발견

샌드박스에서는 어떠한 동작도 발견되지 않습니다. 그러므로 직접 정적과 행위, 동적 분석을 해야 합니다.

 

그림10 자식프로세스의 샌드박스 분석 ​

 

2.1 클립보드 모니터리스너 등록

AddClipboardFormatListenerAPI함수를 사용해서 악성코드를 클립보드 리스너로 등록합니다. 리스너가 성공적으로 등록되면 악성코드가 클립보드를 관리합니다. 클립보드 버퍼에 새로운 문자열이 들어올 때마다 WndProc함수가 실행됩니다.

그림11 클립보드 리스너 등록

 

2.2 클립보드 검사와 비트코인 수정

클립보드의 마지막 데이터를 가져오고 비트코인 주소라면 공격자의 비트코인 주소로 변경합니다.

그림12 클립보드 리스너 핵심동작

 

공격자의 비트코인 주소는 리소스에 저장되어 있지만 리소스 분석 도구에서 발견되지 않습니다.

그림13 리소스 "vaintyAddresses"에 저장된 공격자 비트코인 주소

 

리소스 분석 대표 도구인 리소스 해커에서 "vaintyAddresses"리소스는 발견되지 않습니다.

그림14 리소스 분석도구로 발견되지 않은 vaintyAddresses리소스

 

헥사 에디터 또는 문자열 검색 도구를 사용하면 공격자의 비트코인 주소를 발견할 수 있습니다.

비트코인 추출 정규식: [13][a-km-zA-HJ-NP-Z1-9]{25,34}

그림15 공격자의 비트코인 주소 추출

 


참고자료

▶ 사례: https://perfectmoment.tistory.com/entry/클립보드를-이용한-악성사이트-유도

▶ 클립보드 하이재킹 악성코드 분석 보고서: https://www.fortinet.com/blog/threat-research/copy-pasting-thief-from-a-copy-pasted-code

https://app.any.run/tasks/4a0c5896-8686-47e7-9ee9-515cbc051e45/

https://www.fireeye.com/blog/threat-research/2020/05/analyzing-dark-crystal-rat-backdoor.html

https://decoded.avast.io/janrubin/clipsa-multipurpose-password-stealer/

https://research.checkpoint.com/2020/phorpiex-arsenal-part-i/

https://github.com/Souhardya/bitcoinstealer

▶ poc: https://gist.github.com/NtRaiseHardError/df8075c303d89ef9dc6003f5d0171dd1

▶ javascript clipper: https://github.com/beefproject/beef/blob/master/modules/host/clipboard_theft/command.js

https://medium.com/@desertedness/how-websites-can-hijack-your-clipboard-beea4f4cbb94

▶ ruby library: https://www.zdnet.com/article/clipboard-hijacking-malware-found-in-725-ruby-libraries/

https://blog.reversinglabs.com/blog/mining-for-malicious-ruby-gems

▶ 코인 악성코드 유형 정리: https://www.zscaler.com/blogs/research/cryptominers-and-stealers-malware-edition

▶ msdn Environment.SpecialFolder 설명: https://docs.microsoft.com/ko-kr/dotnet/api/system.environment.specialfolder?view=netcore-3.1

반응형