親ページ:マルウェア解析に必要な素養
今ではいろいろな形式のファイルにmaliciousなコードが潜んでいる。実行ファイルだけでなく、画像ファイルといった一般的なファイルの形式を頭に入れる必要がある。画像ファイルでいえば、#ステガノグラフィー という情報隠蔽技術を警戒せねばならない。
種々のファイル形式のチートシートもある。
https://github.com/corkami/pics
Windowsにおける実行ファイルの形式。
抑えておきたい用語(?):
参考:
ランタイムで生成されるPEB(Process Environment Block)の理解は必須。アセンブリでそのようなコードが出てきてもびっくりしない耐性をつける。x64dbgなどでPEBを辿れるスキルが有ると何かと便利。利用例:Remote ProcessへのDLL Injection
PEのファイルフォーマットはReflective DLL Injectionのコードを理解する上で必要。せめてPowerSshellで出てくることに備えてほしい。PowerSploitがそんなコードを書いている。
LinuxなどのフリーなOSで利用される実行ファイルの形式。
抑えておきたい用語(?):
参考:
ファイルの形式でなくメタ情報のフォーマットだが重要なので取り上げる。
TODO
exiftoolを使えば十分な話だと思う。
TODO
TODO
マクロ付きのCSVをマクロを有効にしたExcelで開くことが条件らしい。
【セキュリティ ニュース】「CSVファイルは安全」という先入観につけ込む標的型攻撃(1ページ目 / 全2ページ):Security NEXT (2018/5/2)
CSV Excel Macro Injection(CEMI)
本当のファイル形式:zip(+xml/画像ファイル)
xmlにmalicousなコード(Powershellコード)を仕込むテクがあったと記憶。
ちなみにちまちま編集して保存するほどxmlが複雑になってファイルが大きくなる。
以下具体例:
SensePost | Macro-less code exec in msword (2017/10/9)
YARA DDE rules: DDE Command Execution observed in-the-wild | NVISO LABS – blog (2017/10/12)
Using the DDE attack with PowerShell Empire – 1337red (2017/10/30)
マイクロソフトがWordのDDE機能をデフォルトでDisableに。月例パッチで自動適用。 - 忙しい人のためのサイバーセキュリティニュース (2017/12/16)
DDEを悪用した攻撃はDDE Exploitと呼ばれている。
DDE Exploitの例:
SLKファイルを悪用した攻撃手口に関する注意点(by IPA;2018/4/25)
Microsoft ExcelのSLK(Symbolic Link)ファイルを悪用した攻撃手口の情報が、2018年の2月に海外で公開されました。
本資料は、この攻撃手口について紹介し、注意点を説明するものです。
Malware Distributed via .slk Files - SANS Internet Storm Center (2018/5/22)
拡張子 ".iqy" のファイルとは? 1 日でメール 29 万通が日本国内に拡散 | トレンドマイクロ セキュリティブログ (2018/8/8)
Word文書のオンラインビデオに、不正なURLを隠ぺいする手口を解説 | トレンドマイクロ セキュリティブログ(2018/12/18)
PoCを作り、In-the-wildに類似のマルウェアが見つかった話。docxをunzipして、xmlを書き換えて再zipして悪性docxを作成。
Whenever the user hovers the URL, malicious code is executed that will invoke PowerShell and attempt to execute the following code.
Potential Malware Campaign Targeting JustSystems Ichitaro Users | Fortinet Blog (2017/11/9)
本当のファイル形式:zip
Androidで使用されるアプリのパッケージファイル。
Windowsでアプリケーション間のデータ連携のための仕組み
解析例:
Evading Static Analyzers by Solving the Equation (Editor) | Lastline (2018/7/12)
ショートカットファイル。リンクファイル。TODO
マルウエアが含まれたショートカットファイルをダウンロードさせる攻撃 - JPCERT/CC Eyes | JPCERTコーディネーションセンター公式ブログ (2019/5/29)
標的型攻撃メールにはリンクが記載されており、クリックするとクラウドサービスからショートカットファイルがダウンロードされます。このショートカットファイル内にはダウンローダが含まれており、ショートカットファイルを実行することによって動作します。
脆弱性の実績:
エントロピーによって種別を推定できる。圧縮・暗号系はエントロピーが大きくなるのでわかりやすい。zipは格納ファイルの名前が含まれるのでアタリを付けやすい(ファイル名を非ASCIIにされたらそれまで)。
本章ではエントロピー解析に便利なツールやテクニックを紹介する。
有料の高機能バイナリエディタ。Win/Mac/Linux対応。ライセンスは永久に有効で、購入から1年間は無償でソフトウェアをアップデートてきる。
非商用のHome版は初年度7000円。2000円ほどでFree Upgradeの権利を1年延長できる。
TODO
テクニック:
TODO: 確か-E
オプションと何か。
TODO
TODO
TODO
マルウェアに組み込むsecret文字列として使われたリ、C2通信で使われたりする。
TODO: エンコード、デコードの数学的な説明
TODO
使用例:
-enc
Eプションコンピュータにおける整数の内部表現(unsigned int値)と、ASCIIの数値列での表現を相互変換するときに使われる。暗号アルゴリズムを扱うときによく使う。
以下にPython2でのHexエンコード/デコード処理の実際を示す。
[余談]Webアプリケーションでよく使われるHMACとバイナリデータのHex表現ってかなり似てるよねー。
論理演算のxorを用いた簡単な暗号(エンコード)。XORの性質により、暗号化関数Encと復号関数Decは同じ関数である。
以下はXORエンコードをPythonとC言語で実装したものである。多くの場合は鍵(xor key)は1バイトの値だが、鍵長は自由である。無限長の鍵が生成可能なとき、このXORエンコードはストリーム暗号と呼ばれる。
Pythonでの実装例:
C言語での実装例:
XOR暗号をしているアセンブリの場合は、IDAのグルフビューで見るとxor命令が入った小さい基本ブロックの周りにループ矢印があり大変見つけやすい。
TODO
本章はマルウェアでよく使われる暗号を取り上げる。とはいえ、暗号はそのジャンル単独で深めるだけでも十分面白いので、マルウェアそっちのけでこの沼にはまるのもいいかもしれない。
以下に暗号に関する参考書を示す。難易度は筆者の主観評価による。
[余談]情報科学・情報工学の専攻だと、暗号理論の背景になっている整数論を大学1年生の基礎科目で習うと思う。
暗号は、数式とにらめっこしたり、実装してみたいりしてはじめて良く理解することができる。以下に取り組むと良いかもしれない。
暗号系の計算するときはPythonベースの計算ライブラリSageMathを使うとよい。
ドキュメントで有限体の記法をよく見るので、先に整数論の本を開くとよい。
http://www.sagemath.org/
せっかくなので、下表に紛らわしい英単語の使い分けについて簡単にまとめる。
単語 | 意味 | 用例 |
---|---|---|
cryptography | 暗号。〔分野名〕暗号理論 | crypto currency(暗号通貨) |
encrypt | 暗号化〈操作を指す〉 | encryption(対象データの暗号化) |
decrypt | 復号〈操作を指す〉 | decryption(対象データの復号) |
cipher | 暗号(≒crypto) | cipher suite(暗号スイート) |
ciphertext | 暗号文〈暗号化されたもの〉 | Chosen-ciphertext attack |
plaintext | 平文 | Known-plaintext attack |
TODO
TODO
ストリーム暗号
頻出。実装が容易なのでマルウェアがオレオレ実装してるケースがある。
アセンブリで書かれたRC4は見た瞬間分かるか - yasulib memo(2018/1/27)
RC4と特定するための特徴
ぱっと見でRC4だと特定するための特徴と思われるものをまとめてみます。
- 256バイトのSという状態を持つ
- 最初に鍵を元にKSAによってSの状態が初期化される(初回のみ呼ばれる)
- Sの状態変化はswapで行われる
- データの暗号化はPRGAから出力された1バイト値をXORによって暗号化する
- KSAとPRGAの計算は似ている(けど鍵の計算がないので少し違う)
- 暗号化と復号が同じ処理(送信と受信で同じ関数を使っている場合)
攻撃グループBlackTechが使うダウンローダIconDown - JPCERT/CC Eyes | JPCERTコーディネーションセンター公式ブログ (2019/10/23)
ペイロードをRC4で暗号化
セキュリティ・キャンプ全国大会「マルウェアの暗号処理を解析しよう」の紹介, Hiroki Hada
TODO
ブロックごとに暗号化・復号するのでその手順に工夫の余地がある。暗号利用モード - Wikipediaを読んでおくとよい。
SPN構造のブロック暗号。
.dataセクションにS-boxの中身が入るので、それに気づくといいのかもしれない。 cf. FindCrypt
https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm
古代から使われている情報隠蔽技術。
画像の電子透かしはこのテクニックを援用している。
例:
実際の利用例:
ダウンロードされる画像は、620 × 485 ピクセルの PNG 画像です。この画像データの最初の 3 行(3 × 620 ピクセル)に、次の段階の PowerShell スクリプトがステガノグラフィの手法を利用して埋め込まれていました。
例:
TODO:
NASなどで使われている、主にWindowsで使われるネットワークファイル共有のプロトコル。
SMBに脆弱性があってポートが空いているPCがアクセス可能な範囲にあると、感染が拡大してしてしまって厄介。
An Introduction to SMB for Network Security Analysts (2017/12/20)
WannaCry, PETYAが使用。
Pass-the-hash, Pass-the-ticketのくだりで出てくる。