CCleaner の マルウェアコードを解析してみた その2
CCleaner の マルウェアコードを解析してみた その1
というわけで、実際にコード解析してみました。
逆アセンブルしてみたところ、EXEファイルをメモリ上に生成して実行する処理を発見
実行時には暗号化されてるけど、起動するときに、ヒープメモリ上に悪意のあるコードを展開する仕組みになってる。
また、接続先や、リクエストなどの固定文字列なども簡単に暗号化されてる。
抽出してみたところ12Kほどのバイナリが出てきました
; Imports from KERNEL32.dll extrn VirtualAlloc extrn LocalFree extrn LocalAlloc extrn lstrcmpiA extrn OpenProcess extrn GetVersionExA extrn VirtualFree extrn GetLocalTime extrn Sleep extrn GetComputerNameExA extrn GetComputerNameA extrn ExitThread extrn GetFileAttributesA extrn LoadLibraryA extrn GetProcAddress extrn GetTickCount extrn CreateThread extrn GetCurrentProcess extrn CloseHandle ; ; Imports from ADVAPI32.dll extrn LookupPrivilegeValueA extrn AdjustTokenPrivileges extrn RegOpenKeyExA extrn RegCloseKey extrn OpenProcessToken ; ; Imports from SHELL32.dll extrn SHELL32.680 ; ; Imports from SHLWAPI.dll extrn SHEnumKeyExA extrn SHGetValueA extrn SHSetValueA ; ; Imports from iphlpapi.dll extrn IcmpCreateFile extrn IcmpSendEcho extrn IcmpCloseHandle extrn GetAdaptersInfo ; ; Imports from WTSAPI32.dll extrn WTSFreeMemory extrn WTSEnumerateProcessesA ; ; Imports from PSAPI.DLL extrn GetModuleFileNameExA ; ; Imports from WININET.dll extrn InternetCloseHandle extrn InternetReadFile extrn InternetQueryDataAvailable extrn HttpSendRequestA extrn InternetSetOptionA extrn InternetQueryOptionA extrn HttpAddRequestHeadersA extrn InternetConnectA extrn InternetOpenA extrn HttpOpenRequestA ; ; Imports from WS2_32.dll extrn WS2_32.115 extrn WS2_32.52 ; ; Imports from MSVCRT.dll extrn time extrn sprintf extrn strlen extrn strncpy extrn memcpy extrn srand extrn rand |
利用関数はこんな感じ
悪意のあるコードが走るのはCCleaner 起動のタイミング
抽出したバイナリは
2017/08/01 08:24:34
VC++6.0でコンパイルされてるっぽい?
https://www.virustotal.com/#/file/96b6824d9272100e4467e94f2eb6ae07abf262070520ea992e45318d67e49b82/detection
一方、問題の CCleaner v5.33.0.6162
2017/08/03 09:25:13
VC++2015でコンパイルされてる
コードトレースしてみたら、インストールされてるアプリ一覧や、コンピュータ情報にアクセスした上でそれを POST する仕組みになってるようでした・ω・
これ見ると、送信先は 216.126.225.148 ( yellow.alskcrs.xyz )
リクエストヘッダは Host: speccy.piriform.com (たぶん偽装)
HttpSendRequest で Base64っぽくエンコードされた5百数十バイトのデータが送出される
送出されるデータの暗号化前のデータがこちら
最近開いたファイルや、インストール済みプログラムのインストール先のフルパスが送信されているようだ
Comments