Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
macOS malware 解析入門
Search
akyo
September 18, 2020
Technology
0
82
macOS malware 解析入門
akyo
September 18, 2020
Tweet
Share
Other Decks in Technology
See All in Technology
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
310
旬のブリと旬の技術で楽しむ AI エージェント設計開発レシピ
chack411
1
130
ハッカソンから社内プロダクトへ AIエージェント ko☆shi 開発で学んだ4つの重要要素
leveragestech
0
600
ソフトウェアエンジニアとAIエンジニアの役割分担についてのある事例
kworkdev
PRO
1
380
AWS re:Inventre:cap ~AmazonNova 2 Omniのワークショップを体験してきた~
nrinetcom
PRO
0
130
AI with TiDD
shiraji
1
340
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
180
#22 CA × atmaCup 3rd 1st Place Solution
yumizu
1
130
スクラムマスターが スクラムチームに入って取り組む5つのこと - スクラムガイドには書いてないけど入った当初から取り組んでおきたい大切なこと -
scrummasudar
1
1.7k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
280
あの夜、私たちは「人間」に戻った。 ── 災害ユートピア、贈与、そしてアジャイルの再構築 / 20260108 Hiromitsu Akiba
shift_evolve
PRO
0
490
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
34
Building the Perfect Custom Keyboard
takai
2
670
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
40
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
Heart Work Chapter 1 - Part 1
lfama
PRO
4
35k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
31
Tell your own story through comics
letsgokoyo
0
770
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
48
Ruling the World: When Life Gets Gamed
codingconduct
0
120
Chasing Engaging Ingredients in Design
codingconduct
0
95
Transcript
macOS Malware 解析入門 Twitter: @atbys
概要 • macOSのマルウェアについて • 環境構築 • 静的解析 • 動的解析
macOSマルウェアについて • macは安全だと昔から言われてきたが,近年macOSをターゲッ トにしたマルウェアが増加 • Macを襲うマルウェアが猛威、その特徴は「偽のアップデート」とい う単純な手法にあり • Macユーザーをターゲットにしたランサムウェア「EvilQuest」が発見 される、身代金支払後もターゲットを逃がさない凶悪さ
• 解説記事も圧倒的に少ないが,一部の人が熱心に取り組んで発 信していてコンテンツは充実している印象
環境構築 • macOS上の仮想マシンにmacOSをインストールするのはOKら しい • 営利目的には使用してはいけないとか,最大2つとか細かいところはあ る • インストール方法は調べれば結構出てくるが,今回かなり手間 取った
• 最終的に成功した方法はこれ • VirtualBoxを使ってMacOS Catalinaの仮想環境を構築する
大まかな手順 1. インストールメディアを作成 1. App storeにあるアップデート用のソフトから作成 2. 仮想ハードディスクを作成 3. 仮想ハードディスクをmac用にフォーマット
4. 実機と同様にインストール
失敗した理由 • 外付けのメディアに仮想マシンを作成した • 後々別の端末に移行しようと思っていたので外部メディアに作ると楽 だと思った • Vmware fusionだと一時的にうまくできたが,一度シャットダウンす ると起動しなくなった
• 仮想ハードディスクの容量が足りなかった • 20~30GBくらいをデフォルトでお勧めしてくるので,それより少し多 いくらい(40~50)でやってもできなかった • 100GBは必要
結果 • Virtualboxにて動作する仮想環境が構築できた • 2コア,メモリ4GBのスペックだが基本的には快適に操作できる • 不具合が多い • 不定期に突然再起動する •
固まって動かなくなる • どこかのキーが連打される • サスペンドして戻せば治る • おそらくvirtualboxのせい
macOSのアプリケーション • 画像などのリソースや各種メタデータなどのファイルがまと まったディレクトリとして成り立っている • それだけではないが,バイナリ単体で配布されていることはCUIツー ルでない限り少ない • PKGファイルも圧縮ファイルの一つ •
GUI上では一つのファイルのように見える • もちろんその中にバイナリファイルも含まれている • 今回はその形式(バンドル)のマルウェアについて解析する
解析 • こちらのサイトをなぞる形でやっていく • How to Reverse Malware on macOS
Without Getting Infected | Part 1(環境構築,表層解析) • Part2(静的解析) • Part3(動的解析)
検体 • SHA256: 197977025c53d063723e6ca2bceb9b98beff6f540de80b283753 99cdadfed42c • 記事曰く,あまり危険なものではないらしい • Malshare.comよりダウンロード
表層解析 • fileコマンドで調べる • Zipのため解凍 • UnPackNwという アプリが出現
コード署名 • CodeSignatureというディレクトリがあった • macのアプリはコード署名を付与して安全性を高める機能があ る • 偽の不正な署名を利用し,マルウェアは正規のものであるよう に見せている •
しかしGatekeeperという機構のチェック対象となり,動作しな い可能性がある • 現にこのバージョンのOSでは起動しない
codesign • Codesignコマンドでコード署名を確認できる
メタデータ • マルウェアのディレクトリには Info.plistというメタデータがある • Plutilコマンドで確認可能 • ほかにもメタデータがあるが 今回は割愛
謎のファイル • Resourcesディレクトリ内にunpack.txtというテキストファイ ルが存在していた • 実行権限が付与されていて不自然
Nazo no file • 暗号化されている • これがなにか突き止めるにはコードを解析していくしかなさそ うだ
Mach-O形式 • MacOSディレクトリに本体のバイナリが存在している • Mach-Oという形式のファイルになっている • いわゆるWindowsでいうPEファイルやLinuxのELFファイル
Mach-O • もちろん違いはあるが,ELFやPEと同じ • Mach-O Header ->ELF Header • Load
Commands -> Segment Header • Data -> Section, Segment • 詳しくはこのへん • PARSING MACH-O FILES
シンボル情報(pagestuff) • pagestuffコマンドでセグメントのシンボル情報を見ることがで きる
シンボル情報(nm) • Linuxでのnmも利用できる
otool • Linuxでいうところのobjdump • -oV • Objective-Cのクラスを表示 • -L •
リンクされているライブラリを表示 • Lddコマンドみたいなもの • -tV • アセンブリコードを出力 • ほかにもたくさん
otool
静的コード解析 • アセンブリコードからさっきのunpack.txtを検索してみる • その文字列の周辺のコードを見るとenncryptDecryptStringとい うメソッドがある • さらにこのメソッドを検索して中身を見ると,XORの処理をし ているようだ •
僕はこのコードを見てもXORだとはわからなかった • 感覚が鈍ってしまったのか • 動的解析で復号化された文字列を取得しよう
アセンブリ
enncryptDecryptString
マルウェアを動かす前に • ネットワークは隔離して実験する • macにはgatekeeperというセキュリティ機構がある • xattr –l コマンドで属性を調べて,com.apple.quarantineという出力が 得られたらgatekeeperの対象となっているため,これを外さないとい
けない • xattr –rc <file name> • 記事にはなかったが,System Integrity Protection(SIP)という 機構も外したほうが良い • SIPについては詳しいことは調べられていません • ルートユーザがアクセスできるファイルやフォルダに制限をかけるものらしい
SIPの無効化 • 本来なら電源投入直後にcommand+Rでリカバリモードに入っ て,そこのシェルからcsrutil disableを実行 • Virtualboxだとcommand+Rでリカバリモードに入ることがで きない! • VirtualboxのBIOSからEFI
Shellを起動し,そこからリカバリモードを 起動する • 僕の環境の場合,FS4:というドライブの中にリカバリモードをブート するプログラムがあった • これにより無事にSIPを無効化できた
lldb • デバッガにはlldbを利用する • GDBと同じくかなり高機能 • lldbで起動,fileコマンド で実行ファイルを指定しprocess launch –sでエントリポイントまで実行
SIPが有効になっていると...
動的解析 • ブレークポイントにenncryptDecryptStringを指定して続行
動的解析 • Disassembleコマンドでストップしている関数を逆アセンブル できる • 最後のほうにinitWithStringメソッドが呼び出そうとしている • initWithStringは文字列を生成するメソッドである • 復号化された文字列か入っているのではないか?
enncryptDecryptString
あの謎のファイルの正体 • rdiにメソッド名,rsiに第一引数が格納される • クラスのメソッド呼び出しだから一個ずれてる? • rdiにinitWithStringが格納されているのでrsiを見る
謎のファイルの正体 • シェルスクリプトだった • XXXXはXの数と同じ長さのランダムな文字列 • ダウンロードして解凍して実行 • 今回解析したマルウェア自体はドロッパーだったのかな
まとめ • macOSマルウェアの解析手法についてザッと解説 • macOSならではのデータやツールがあって面白い • このチュートリアルをやって,さらに色々やりたいことをやる つもりだったが,これやるだけで手いっぱいになってしまった • 自分でマルウェアを解析してみたり,論文を読んだりしていき
たいと思う