mirror of
https://github.com/nganhkhoa/malware.git
synced 2024-06-10 21:32:07 +07:00
first
This commit is contained in:
parent
f2b6c3d5bd
commit
5dbe3289ef
@ -4,6 +4,7 @@
|
||||
- File copy
|
||||
- VirtualAlloc and Data transition
|
||||
- Createting Process and Heaven's Gate (Process Hollowing)
|
||||
- to do...
|
||||
|
||||
## Sample/Environment
|
||||
- Sample
|
||||
@ -22,24 +23,73 @@
|
||||
## Analysis contents
|
||||
|
||||
### File copy
|
||||
Trickbotの初期動作に関する説明
|
||||
- CopyFileWによって特定のパスに自身(同一ファイル)のコピーの作成を試行する
|
||||
- 特定パスにコピーが存在していなかった場合,コピーを作成しShellExecuteWによってコピーされたファイルが実行される。その後,自プロセスをExitProcessによって終了させる
|
||||
- 特定パスにコピーが既に存在していた場合,CopyFileWは失敗し上記とは別の処理(Process Hollowing等)に分岐する(要するに,ShellExecuteWによって実行されたコピーのプロセスがこちらの分岐を通過する)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/shellexecute_2_720.png)
|
||||
- CopyFileWによるコピー先は,C:\ProgramData\բնութագրվում է.exeであった(ファイル名はGoole翻訳の検出結果によるとアルメニア語)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/filecopy_1_720.png)
|
||||
![]()
|
||||
բնութագրվում է.exe
|
||||
|
||||
以降はコピーしたファイルに関するプロセスの処理の説明となる
|
||||
### VirtualAlloc and Data transition
|
||||
Process Hollowingにも利用するデータに関する説明
|
||||
- コピーのプロセス実行中に5~7回VirtualAllocによる領域確保が確認された
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/virtualalloc_3_720.png)
|
||||
- 1回目のVirtualAllocでは,0x2D000Byteの領域を確保する
|
||||
- 0x2D000Byteは.dataのサイズと同じである
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/datasection_4_720.png)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/datacopy_5_720.png)
|
||||
- 確保した0x2D000Byteの領域に.dataをすべてコピーするわけではなく,.dataのベースアドレス+0x7C3の位置からコピーを開始する
|
||||
- +0x7C3のメモリダンプを確認すると,PEファイルのようである
|
||||
- +7C3の位置のデータもすべてをコピーするわけではなく,下図のように特定の条件にマッチした際に,1Byteずつ書き込みを行う(詳細は述べない)
|
||||
> 条件:0x3C <= ECX <= 0x3E or EAX <= ECX
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/datacopy_5_modify_720.png)
|
||||
- また,.dataの+0x9C3~+0x2B5C3の位置のデータは下図のように上記とは別の処理でコピーされる
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/datacopy2_6_720.png)
|
||||
- コピーされたデータに対してデコードを行う
|
||||
- xorが用いられていた
|
||||
- デコードした結果からは64bitのPEファイルを示すような文字列が確認された(下図メモリダンプより)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/decode_7_720.png)
|
||||
- 上記からさらにデコードを実施し,3回目のVirtualAllocにより確保された領域(0x60000Byte)に書き込みを行う
|
||||
- 下図のメモリダンプをファイルに保存して確認した結果64bitのPEファイルであった
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/decode2_8_720.png)
|
||||
- 5~6回目のVirtualAllocで確保した領域(ベースアドレス:0x10001000)に対して,上記で確保した領域(0x60000Byte)に書き込まれたPEファイルの一部をコピーする
|
||||
- 下図より,PEファイルの.text以下がコピーされている
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/copytext_9_720.png)
|
||||
### Createting Process and Heaven's Gate (Process Hollowing)
|
||||
- CreateProcessWによってProcess Hollowingの対象となるプロセス(svchost.exe)を作成する
|
||||
- プロセスはサスペンド状態で作成される
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/svchost_10_720.png)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/heavensgate_11_720.png)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/ntdll_12_720.png)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/crccalc_13_720.png)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/crccmp_14_720.png)
|
||||
![]()
|
||||
![]()
|
||||
- 以降のProcess Hollowingの処理はHeavens's Gate(64bitシステムに切り替え)を利用して行われていた
|
||||
- ![](https://github.com/mether049/malware/blob/master/Trickbot/img/heavensgate_11_720.png)
|
||||
- ここから64bitの命令群に遷移する(32bit向けのユーザモードデバッガでの追跡が困難になる。WinDbgなどのカーネルモードデバッガなら追跡可能)
|
||||
- 遷移先は0x100100であり,先ほどPEファイルの.text以下をコピーした領域である(64bitPEファイルを保存してそれに対してユーザモードデバッガでデバッグすることは可能)
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/heavensgate_16_720.png)
|
||||
- ntdll.dllのexport table上の関数名リストから1つずつ関数名字列をとりだして目的の(Process Hollowingに利用すると思われる)関数名と一致するものを探し,さらにそのアドレスを取得する?(ここは詳細に確認していない。このあたりは[こちら](https://www.cyberbit.com/blog/endpoint-security/latest-trickbot-variant-has-new-tricks-up-its-sleeve/)でも詳しく書かれている気がする)
|
||||
|
||||
|
||||
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/ntdll_12_720.png)
|
||||
- 目的のAPIは関数名のCRC32値?(ここも詳細に確認していない)で比較される
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/crccalc_13_720.png)
|
||||
|
||||
- 目的のAPIとCRC32の組み合わせ:<br>
|
||||
> 26C4B1F1 LdrLoadDll<br>
|
||||
> E33A06BF NtAllocateVirtualMemory<br>
|
||||
> 82bb0ee0 NtProtectVirtualMemory<br>
|
||||
> 026da588 NtReadVirtualMemory<br>
|
||||
> 7a65c193 NtWriteVirtualMemory<br>
|
||||
> e873107e NtQueryInformationProcess<br>
|
||||
> 918a52f1 NtResumeThread<br>
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/crccmp_14_720.png)
|
||||
- 取得したアドレスを利用してAPIを呼び出し,Process Hollowingを終了させる
|
||||
- 各APIの呼び出しで処理が失敗した場合,その時点でプロセスが終了する
|
||||
![](https://github.com/mether049/malware/blob/master/Trickbot/img/apicall_15_720.png)
|
||||
|
||||
## to do..
|
||||
- 解析を進めて以下の部分について修正・追加を行う
|
||||
- 誤って解釈している部分
|
||||
- 解析しきれていない部分
|
||||
- あいまい解釈している部分
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user