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
なぜマルウェア解析は自動化できないのか
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuma Kurogome
August 14, 2016
Programming
4.4k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
なぜマルウェア解析は自動化できないのか
セキュリティ・キャンプ全国大会2016 講義資料
Yuma Kurogome
August 14, 2016
More Decks by Yuma Kurogome
See All by Yuma Kurogome
The Art of De-obfuscation
ntddk
16
28k
死にゆくアンチウイルスへの祈り
ntddk
55
39k
Windows Subsystem for Linux Internals
ntddk
10
3.2k
Linear Obfuscation to Drive angr Angry
ntddk
4
910
CAPTCHAとボットの共進化
ntddk
2
1.2k
マルウェアを機械学習する前に
ntddk
3
1.7k
Peeling Onions
ntddk
7
3.8k
仮想化技術を用いたマルウェア解析
ntddk
8
27k
An Introduction to Drawbridge(ja)
ntddk
11
3.5k
Other Decks in Programming
See All in Programming
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
180
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
160
Webフレームワークの ベンチマークについて
yusukebe
0
160
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.2k
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
260
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
560
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
150
AIで効率化できた業務・日常
ochtum
0
120
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
5.3k
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
dRuby over BLE
makicamel
2
330
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
How to make the Groovebox
asonas
2
2.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
150
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
330
A Tale of Four Properties
chriscoyier
163
24k
Transcript
None
None
None
None
None
• • • • • • • • • •
• • • •
• • • •
• • • • • • • • • •
• • • •
• • • • • • • • • •
• • •
None
• • • • • • • • • •
• • • • • • • • • • • • • • • • • • • •
• • • • • •
typedef struct _IMAGE_OPTIONAL_HEADER { WORD Magic; ... DWORD SizeOfCode; //
コード全体のサイズ ... DWORD AddressOfEntryPoint; // エントリポイントのアドレス (RVA) DWORD BaseOfCode; // コード領域のベースアドレス (RVA) DWORD BaseOfData; // グローバル変数などの値が確定していないデータ領域のベースアドレス (RVA) DWORD ImageBase; // 仮想メモリにロードされるときの開始(ベース)アドレス // RVAはImageBaseのアドレスを引いた相対アドレス ... DWORD SizeOfImage; // メモリにロードされたときの全体サイズ DWORD SizeOfHeaders; ... IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; // インポート情報やエクスポート情報などへのアドレス (RVA) } IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
None
• • • • • •
None
• • • • • • •
• • • • • • • •
• • • •
• MOV EBX, EAX ADD EAX, $0x4 … MOV EBX,
EAX ADD EAX, $0x4 … • • • mov_i32 ebx, eax movi_i32 tmp1, 0x4 add_i32 eax, tmp1 •
•
•
None
None
• • • • • • • • •
• • •
• • • • •
• • • • •
None
• • • • •
• • • • • •
• •
• • • • • • • •
from datetime import date from hashlib import sha256 def dyre_dga(num,
date_str=None): if None == date_str: date_str = '{0.year}-{0.month}-{0.day}'.format(date.today()) tlds = ['.cc', '.ws', '.to', '.in', '.hk', '.cn', '.tk', '.so'] hash = sha256('{0}{1}'.format(date_str, num)).hexdigest()[3:36] replace_char = chr(0xFF & ((num % 26) + 97)) return '{0}{1}{2}:443'.format(replace_char, hash, tlds[num % len(tlds)]) todays_domains = [dyre_dga(i) for i in xrange(333)]
• • • •
• •
• • •
None
None
• • • • • • • • •
• • • •
• •
cmp eax, 0x7E0 je 0xdeadbaad if(x!=2016) Invalid. ASSERT( INPUT_*_*_* =0hex7E0
); (a1 or !a2 or a3 … or an) and (b1 or b2 or !b3 … or !bn) and …
None
• •
•
None
• •
None
•
None
• • • • • •
• • •