mirror of
https://github.com/nganhkhoa/malware.git
synced 2024-06-10 21:32:07 +07:00
Update malware-tech_ref_and_memo.md
This commit is contained in:
parent
ea73b065c8
commit
632d3b7de8
@ -215,7 +215,6 @@ New-Object System.IO.Compression.DeflateStream([iO.mEmoRySTream] [sysTEM.ConVert
|
|||||||
**ref:**<br>
|
**ref:**<br>
|
||||||
[Powershell Static Analysis & Emotet results](https://hatching.io/blog/powershell-analysis)<br>
|
[Powershell Static Analysis & Emotet results](https://hatching.io/blog/powershell-analysis)<br>
|
||||||
|
|
||||||
# Anti-detection
|
|
||||||
## Living Off The Land(LOL)
|
## Living Off The Land(LOL)
|
||||||
- システムに備わっている信頼性の高いツールを悪用する
|
- システムに備わっている信頼性の高いツールを悪用する
|
||||||
- LOLで利用される各種Binary(LOLBin), Script(LOLScript), Library(LOLLib)のドキュメント<br>
|
- LOLで利用される各種Binary(LOLBin), Script(LOLScript), Library(LOLLib)のドキュメント<br>
|
||||||
@ -289,6 +288,44 @@ New-Object System.IO.Compression.DeflateStream([iO.mEmoRySTream] [sysTEM.ConVert
|
|||||||
- HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
|
- HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
|
||||||
- HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
|
- HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\SharedTaskScheduler
|
||||||
|
|
||||||
|
## Packing
|
||||||
|
- 実行形式を保持したまま,実行ファイルを圧縮
|
||||||
|
- パッキング後のプログラムには展開ルーチン,圧縮されたオリジナルコードが含まれる
|
||||||
|
- オリジナルコードを静的解析するためにはアンパッキングが必要
|
||||||
|
- 特徴
|
||||||
|
- 特徴的なセクション名
|
||||||
|
- 可読性のある文字列が少ない
|
||||||
|
- インポートされているAPIが少ない(オリジナルコードの展開ルーチンに利用するAPI?)
|
||||||
|
- 展開ルーチンの流れ(簡易)
|
||||||
|
- オリジナルコードをデコード
|
||||||
|
- ローダによりオリジナルコードのIATを再構築
|
||||||
|
- OEPに制御を移し,オリジナルコードを実行
|
||||||
|
- プログラムをパッキングするまでの流れ(簡易)
|
||||||
|
- PEヘッダから下記のパッキングに必要な各種情報(AddressOfEntryPoint,ImageBase,SectionTable(VirtualAddress,VirtualSize,PointerToRawData,SizeOfRawData),etc.)を取得
|
||||||
|
- コードセクションのエンコード(PointerToRawからSizeOFRawData分の領域まで)
|
||||||
|
- 展開ルーチンの追加
|
||||||
|
- コードセクションの使われていない後方領域(0パディングされた領域)を利用(FileAlignment,VirtualSize,SizeOfRawDataから算出)
|
||||||
|
- PEヘッダの修正
|
||||||
|
- 展開ルーチン追加後のVirtualSize
|
||||||
|
- 展開ルーチンの先頭を示すAddressOfEntryPoint
|
||||||
|
- コードセクションへの書き込み属性の付与
|
||||||
|
- 既知のパッカー
|
||||||
|
- UPX
|
||||||
|
- ASProtect
|
||||||
|
- Stolen Bytesを利用
|
||||||
|
- tELock
|
||||||
|
- Import Redirectionを利用
|
||||||
|
|
||||||
|
## Anti-Unpacking
|
||||||
|
### Stolen Bytes(Stolen Codes)
|
||||||
|
- 展開ルーチンのコードの中にオリジナルコードの先頭部分(OEP付近)をあらかじめ含めて実行させることで,展開ルーチンによって展開させるオリジナルコードをその先頭部分から後ろのみにし,本来のOEPの特定を難化させる(展開されたオリジナルコードの領域監視によるOEP特定の難化)
|
||||||
|
### Import Redirection
|
||||||
|
- IATの再構築を妨害
|
||||||
|
- IATにAPIのアドレスではなく,APIを呼び出すための関数をsetする
|
||||||
|
- 関数内
|
||||||
|
- レジスタにAPIのアドレスをsetして,jmpしてAPIを呼び出し
|
||||||
|
- スタックにAPIのアドレスをsetして,retでAPIを呼び出し
|
||||||
|
|
||||||
# rootkit
|
# rootkit
|
||||||
## LKM rootkit
|
## LKM rootkit
|
||||||
- 動的にカーネルに組み込めるモジュールであるLKM(Loadable Kernel Module)を利用して,sys_call_tableの特定のカーネル関数のアドレスを任意の関数のアドレスへと書き換えることで,本来とは異なるカーネル関数であるrootkitのカーネル関数等が呼び出せるようになる(システムコールフック)
|
- 動的にカーネルに組み込めるモジュールであるLKM(Loadable Kernel Module)を利用して,sys_call_tableの特定のカーネル関数のアドレスを任意の関数のアドレスへと書き換えることで,本来とは異なるカーネル関数であるrootkitのカーネル関数等が呼び出せるようになる(システムコールフック)
|
||||||
|
Loading…
Reference in New Issue
Block a user