Try   HackMD

マルウェア解析に必要な素養~用語編~

以降の章を読むために理解しておきたい用語を挙げていく。英語表記を併記しているのは覚えてほしいからで、ググる時に思い出して欲しい。

アーティファクト(artifact)

TODO:("アーティファクト フォレンジック"でググると良いかも)

攻撃ベクター(Attack Vector)、Attack Surface

TODO:章にしたほうが良いのかな?

攻撃ベクター:

  • 人間
  • OS(Windows, macOS, Linux, Android, iOS, …)
  • ブラウザ(特に古いInternet Explorer)
  • Microsoft Office
  • ベンダー製品
    • Adobe Flash, Adobe Acrobat
    • 資産管理ソフトウェア

標的型攻撃(Targeted Attack)

TODO

特に「特定の相手に狙いを定め、その相手に適合した方法・手段を適宜用いて侵入・潜伏し、数か月から数年にわたって継続するサイバー攻撃」(独立行政法人 情報通信研究機構(NICT)のサイバー攻撃対策総合研究センター(CYREC))のことをAPT攻撃(Advanced persistent threat)と呼ばれる。

PDB

Windowsのデバッグ情報ファイル(シンボルファイル)。

攻撃キャンペーン

TODO

2016年の主要な攻撃キャンペーン:

  • Pseudo-Darkleech
  • Afraidgate
  • ElTest

2017年の主要な攻撃キャンペーン:

2018年の種よおうな攻撃キャンペーン:

  • TODO

サイバー攻撃レベルの攻撃キャンペーン:

IOC(Indicator of Compromise)

日本語訳がベンダーによって不定(個人的には「侵入(の)痕跡」で良いんじゃないかなと思う)。システムにセキュリティー侵害があったことを示す痕跡のことで、検体のファイル名・ハッシュ値、変更されたレジストリキー、通信先のドメイン・IPアドレスなどの情報が入る。

cf. アーティファクト(フォレンジック用語)

IOCはマルウェア解析ブログの記事の末尾で提示されることが多い。

例)nao_sec: Survey of "ngay campaign" (2017/12/11)

Tor

TODO

ISP

インターネットサービスプロバイダのこと。インターネット接続を提供する企業で、一般にはプロバイダと呼ばれている。

プロバイダーには通信の秘密を守る義務があるが、それに触れない範囲でサイバー攻撃を対策する動きあり。

DNS

TODO

DNSSEC

TODO

DNSSECはクソ:

Deep Web、ダークウェブ(Dark Web)

TODO:概略。

ダークネットと混同されすぎて区別する必要もないかも。

ダークネット(Darknet)

組織に割り当てられたグローバルIPアドレス領域のうち未使用部分を指す言葉。未使用のアドレスにパケットが飛んで来るのはおかしいよねという前提。

未使用のグローバルアドレスにセンサーを設置し、外部からの攻撃を観測することが行われている。例えばNICTのnicter(プレスリリースNICTERWEB 2.0)。

ブラックマーケット

闇市場。クレジットカード情報、アカウントなどの個人情報、違法薬物の売買、マネーロンダリング(資金洗浄)がされている模様。

マネー犯罪

マネーロンダリング(資金洗浄)

TODO:話が逸れ始めたぞ…

IV(初期化ベクトル;Initiation Vector)とKey(鍵)

TODO

トロイの木馬(Trojan Horse)

TODO

ボット(Bot)

TODO

TODO:疑問点

  • 侵入可能なコンピュータを探索し、特定のサーバーに報告するタイプのマルウェア(例えば、Mirai(2016年))に感染したコンピュータはボットに含まれる?←入りそう

PoC(Proof of Concept)

意味が複数ある。

  • 脆弱性の再現やエクスプロイトを目的とした攻撃コード ←本ドキュメントではこちらの意味で用いる
  • あるサービス・機能の実証を目的とした実装 ←一般人の認識はこっち(?)
    • cf. MVP(=簡単な試作品)

ペイロード(Payload)

データから、ヘッダないしはメタ情報を除いた部分というくらいの意味合い。

シェルコード(Shellcode)

最小限の定義をするならば、シェルを獲得するためのコード(機械語コード、アセンブリ、マクロコード、…)のこと。

Linuxの最小のシェルコードはC言語で書き下すと sys_execve("/bin/sh", 0, 0); のような形をしている。これはLinuxのexecv*システムコールを直接呼び出す。

任意コード実行(arbitrary code execution)

英語での名称は要暗記。マルウェアの文脈では、多くの任意コードはマシンコードの羅列である。Webアプリケーションでの任意コード実行では、高級言語のコードが実行されるが、任意コード実行ではなくコードインジェクションと呼ばれがち(他にも例外あり)。

cf. コードインジェクション(Code Injection)

上述の通り。

SQL文に対するインジェクションは、SQL Injection(SQLi)と言われる。
Webページに対するJavaScriptコードの挿入は、クロスサイトスクリプティング(XSS)と呼ばれる。

cf. リモートコード実行(RCE;remote code execution)

海外だとRCEと書かれることが多い。(Webアプリケーションの)脆弱性により外部リソースがダウンロードされ、コードとして実行される。

脆弱性

読み:ぜいじゃくせい。

cf. CVE(Common Vulnerabilities and Exposures)

国際的に使用されている脆弱性の識別番号。CVEを振るのはMITREだけでは無い。

CVE採番機関CNAの今/ウェブプライバシー保護技術の比較【海外セキュリティ】 - INTERNET Watch ※必読

cf. CVSS

「CVSS」とはそもそも何か? 脆弱性対応の優先順位付けではない!?【海外セキュリティ】 - INTERNET Watch (2019/1/9)

「人々がCVSSに対して本当に期待しているもの(特に脆弱性対応の優先順位付け)」をCVSSのコミュニティが提供できていないことが問題であるというのがCERT/CCが主張したいことなわけです。

エクスプロイト(Exploit)

サービス、アプリケーションの脆弱性を利用した攻撃のこと。エクスプロイトコードはそれを実現するためのスクリプト(C言語で書かれることもある)。
前述のシェルコードはこのエクスプロイトコードに含まれて書かれる。

ホワイトハッカーは、Windowsでエクスプロイトを成功したときに電卓(calc.exe)を起動することが多い。

ローカル型/リモート型

TODO:(Wikipediaにある説明で十分な気も…)

connect-back方式(reverseshell)/bindshell

TODO:(Wikipediaにある説明で十分な気も…)

使い分けのポイント:

  • アウトバウンド通信がどの程度許可されているかどうか
    • connect-back shellの場合は内→外に通信が発生するので、公開サーバーが外に接続を開始するのはおかしいとする前提ではファイヤーウォールのDropルールに引っかかるおそれがある。
    • アウトバウンド通信が許可されていて、外から見えないホストから攻撃者にシェルを張りたいときは、connect-back shellが有効
  • インバウンド通信で使えるポート番号の制限
    • ファイヤーウォールのせいで特定のポート以外に接続できないときはbindshellは無力

権限昇格(Privilege Escalation)

(権限昇格の英語(のスペル)が覚えにくくないすか。)

一般的なOSでは、ユーザーまたはグループの権限レベルを管理し、レベルごとにシステムに可能な操作を制限している。権限昇格とは(Exploit対象の)現在のユーザーの権限レベルを昇格させることをいう。昇格先として、Linuxではroot、WindowsではAdministratorsやSYSTEMがある。

ホワイトハッカーは、権限昇格を実現すると、rootのターミナル(rootを示すプロンプトが出ている状態)をスクショして見せびらかすことが多い。

権限昇格の実際については、#権限昇格 を参照されたし。

難読化(Obfuscation)

コードを読みにくくすること。対義語はDe-obfuscation(難読化解除)。

TODO:各言語での代表的な難読化手法を列挙したい…

SOC(Security Operation Center)

読み:そっく。SoC(読み:えすおーしー、そっく)と書くと組込みシステムの話になるので注意。客先に置かれたネットワーク機器から上がってくるログをSOCに収集して 集中的に 人力で監視するというのがコンセプト。話を聞く限りは、SOCのアイデア自体は新しいものではなく、以前からされていて、別々のサービスでログ監視をしていたManaged Security Service(MSS)の部隊を集約してSOCと称しているケースもあるようだ。

国内だとIIJがMSSを90年代に先駆けて始めたんだっけな(←曖昧な記憶だし、裏取りがまだ)。

TODO:国内のSOCと運用形態書いたほうがいい?

TODO:よくあるSOCの構成。←客先ネットワークでインベントを収集してVPN越しでSOCに転送というパターンのイメージ。

TODO:マイクロソフトとIBMはSOCとは別の呼び方をしてた記憶

SOCからインテリジェンスレポートが発行することがある。マルウェア界隈の情報を毎日キャッチアップできない人は特にそれを読んでおくことをおすすめする(ラックとNTTセキュリティのSOCレポートがおすすめ)。攻撃者に配慮してか、詳細なレポートの提供を数ヶ月遅らせるケースがあるように見える(※あくまで個人の感想です)。

後学のための資料:

Advanced

Lessons learned from the Microsoft SOC—Part 1: Organization - Microsoft Security (2019/2/21)
Lessons learned from the Microsoft SOC—Part 2: Organizing people (2019/4/23)
“Part 3: Technology,”: TBA

CSIRT(Computer Security Incident Response Team、シーサート)

読み:しーさーと。

(組織内)CSIRTがやること:

  • セキュリティインシデントに対応するための各サービス・システムに向けたガイドラインの策定
  • セキュリティパッチが公開されたあとのアップデートの周知
  • 外部組織・CSIRT要員からの情報収集
    • 場合により不正通信を遮断するルールをネットワーク機器に追加するとか
  • 発生したセキュリティインシデントの初期対応・収束(=自組織向けのインシデントレスポンス(IR))

CSIRTの機能を体系的にまとめた資料:

日本シーサート協議会が出してる『CSIRT:構築から運用まで』で基礎が抑えられると思う(ただ読み物としては退屈な部類の本)。ただディープな話は期待する本では無いように見えます。それを期待する方はリクルートテクノロジーズの『実践CSIRT 現場で使えるセキュリティ事故対応』が良さげ。

[ステマ]NRIセキュアなどのセキュリティベンダーが組織内CSIRTの立ち上げ支援とかしてるらしいっすよ。

CSIRTの中の人の話:

標的型攻撃を見据えたCSIRTに求められるもの(もう解析関係ない…):

トラフィック

第一に、帯域、そこに存在している通信のことを指す。トラヒックと表記されることもある。
第二に、改ざんされたサイトへのアクセスをまとめてトラフィックと言い回すことがある。

mangle/demangle

TODO: mangleは、C++などで名前空間や型情報をシンボル名に含めるためのエンコーディングのこと。demangleは、人間に分かりやすいように名前空間や型情報を表示すること。

TODO:例

objdumpやディスアセンブラを使うときに気をつければいい話。Dlangバイナリの場合は、自動でdemangleしてくれないGUI逆アセンブラが多いかもしれない。

demangleのやり方

単発のdemangleにはc++filtが便利。

TODO: objdump, nm, gdb, Hopper(ネイティブver, D言語ver)でのdemangleのやり方

改ざん(改竄;compromise)

TODO。英語は要暗記。

改竄と表記することは少ない。

資産管理ソフトウェア

TODO

任意コード実行脆弱性が発見されたもの:

会計ソフトで脆弱性が見つかったこともあるな?(WannaCryで使われたんだっけな)

OSINT (Open Source Intelligence)

TODO

OPSEC (Operations security)

TODO