QQ登录

只需一步,快速开始

搜索
【活动】边做笔记边学习,还能赢取奖学金!
查看: 2434|回复: 8

[软件安全] 【进阶】《恶意代码分析实战》

[复制链接]
累计签到:2151 天
连续签到:8 天
最佳答案
138 
发表于 2016-11-25 21:49:00 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
T1jdyKFONcXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

# R& c. I7 S8 u" K, O8 `2 j7 v9 _4 k# b. K
书名:《恶意代码分析实战》
- I* \, a5 \+ W' `" M5 D! O6 H6 I7 y! @作者:迈克尔·斯科尔斯基 (Michael Sikorski),安德鲁·哈尼克 (Andrew Honig)
9 u* M9 s! e% u译者:诸葛建伟,姜辉,张光凯
) k2 X) j* l" J* ~出版社:电子工业出版社
1 `- Y" |% _$ l" A) b. q出版年:2014年4月1日(第1版)
7 g) P3 a4 h; G& F  \# t定价:128.00元
) y- d% e9 _& e/ B, r8 ^# a/ p" z装帧:平装4 F& x; m' n4 v! @' K( {: N  m
ISBN:9787121224683% u1 M  K) }; B. F

  r; Z( m- P& T4 O' U3 O2 P! a购买链接:
/ o" P( B* y6 G5 t- G4 f9 y; W
! ?9 s4 Q( |$ F0 e7 M

5 F6 a& g/ j. A4 }' R8 q9 Z+ g: Y亚马逊 -> 传送门/ R1 I* a/ }1 \* {& {
, }5 v5 T' z. O; L
当当网 -> 传送门
- k. r0 }8 }  I/ L1 `5 L/ @: ]% o; Q7 Q2 r- R# u" r% n+ u
京东 -> 传送门
# t, i, X7 M+ {3 v% X/ G; Z  D' l. m9 Z
天猫 -> 传送门
; Y3 a9 s6 p2 c4 l1 B5 N+ ~* x) T9 X

3 z+ @7 X' h4 [内容简介:
) x, Z7 ^) l( z2 m$ ]1 e7 `( o0 T' e+ W# j' I" M

* ?; y/ z4 j1 n% k& n3 Z
《恶意代码分析实战》是业内公认的迄今为止最权威的一本恶意代码分析指南,《恶意代码分析实战》也是每一位恶意代码分析师都必须作为指导手册珍藏的案头必备。
1 ^6 x1 e) g" S3 S/ D6 c0 e! ]+ f1 O  ~3 f% F5 @0 m& b
《恶意代码分析实战》既是一本教材,也是一本动手实践的指南。不仅教会你如何分析恶意代码(技术指导),而且配了大量的实验练习、案例、答案以及详细的分析过程,同时还包含了所有用作案例的恶意代码样本,提供了丰富、安全的学习环境。
% ^6 J, _! ~& \- C
9 R$ C& j" _. b- e1 C  v* u( i针对初学者:本书的技术内容、实验作业可以帮你渐入佳境;, N& N8 h* ?, f+ d) p/ z' @/ W5 Z
针对中级读者:本书大量的分析实践会直接带你进入更高的级别,臻入化境。
7 Z& R! l/ v; Z0 ]. g9 O$ V, T2 _
目录:. n2 G5 c, e( `

  C# \, ~/ x2 a0 t- S6 Z8 x
3 n; [8 z# I5 |) U5 D0 {
第0章 恶意代码分析技术入门1' u5 Y- l; Y) q6 ?! T

" \6 p6 o$ \- j. y1 `) H0.1 恶意代码分析目标11 b# J1 q3 U- T; C5 c% I2 T7 `0 ?
0.2 恶意代码分析技术2+ G) B- K* Q0 D% z2 R4 P& D
0.2.1 静态分析基础技术2
0 r( ~2 Q( L- z; s0.2.2 动态分析基础技术2
1 O( J+ p: G7 O) N% @; E2 f0.2.3 静态分析高级技术2" I5 S$ I( q; o, o3 W2 z8 ~
0.2.4 动态分析高级技术2# U2 H6 H; Y3 V5 ?
0.3 恶意代码类型3
7 @- V' ?0 g8 {3 W3 O0.4 恶意代码分析通用规则4
6 {. y0 S. N- u4 J3 _" f) V4 c( L  J" K8 Q" i) Q0 D3 ~4 H" @
5 P2 U, q7 A8 r* @: m
第 1 篇 静态分析
- o& {/ r( L; f4 b6 G- D( Q' I5 s% W1 s! i$ l1 o: T
第1章 静态分析基础技术 60 Z: I9 Y1 P- |2 |
9 c. \+ r/ X6 q1 ^! j% v
1.1 反病毒引擎扫描:实用的第一步6
4 [7 ?2 o6 h0 }& E# c1.2 哈希值:恶意代码的指纹78 B. Z6 G" _: W3 _: ?6 R- _
1.3 查找字符串75 d4 t- t9 ]8 S! Y( N- d
1.4 加壳与混淆恶意代码9
; `; E; A3 H! e( X8 q8 W1.4.1 文件加壳109 f6 V+ ]. K9 l2 j
1.4.2 使用PEiD 检测加壳105 i1 b) e2 f8 O1 B
1.5 PE 文件格式11
$ g. i4 c3 H4 q4 l* e; I" f1.6 链接库与函数12
4 T8 u/ j9 P% `% M2 a) V- J1.6.1 静态链接、运行时链接与动态链接12/ V- c2 q4 D  L6 \2 w6 g
1.6.2 使用Dependency Walker 工具探索动态链接函数13
9 J' _: O1 o  q4 {& }" F9 N1.6.3 导入函数14) ]. v+ @. U7 x
1.6.4 导出函数15
. \+ m" l) I& H1 v/ \1.7 静态分析技术实践15" v" t2 t: h4 S; I" d5 w2 U! ^
1.7.1 PotentialKeylogger.exe:一个未加壳的可执行文件15! d5 \7 U5 `, |0 ~3 M! @
1.7.2 PackedProgram.exe:穷途末路18" V& Q) [' d( E/ ?' u' d5 j1 [9 l
1.8 PE 文件头与分节18
' \) C7 V+ f8 e) X: N3 I1.8.1 使用PEview 来分析PE 文件192 x6 _2 N3 Q* v$ H8 W! m4 ^
1.8.2 使用Resource Hacker 工具来查看资源节22" i+ a& ^. g+ Z) E
1.8.3 使用其他的PE 文件工具23
6 o7 C$ e; m/ x3 x, i5 U) `1.8.4 PE 文件头概述238 |/ D2 E' ?' K) `  V3 o8 ]) y! i; o
1.9 小结244 p7 h, n7 |7 N
1.10 实验24
! p( \4 k; |2 ~, _, g. Y% |: y& u. N# v$ e
第2章 在虚拟机中分析恶意代码 27* u6 m) D5 J! q5 @6 }
" H, ]6 J9 T- B: G+ d
2.1 虚拟机的结构27
+ o- }, v. p2 V3 J5 H, J1 J2.2 创建恶意代码分析机28. M. v0 S( l2 g, I
2.2.1 配置VMware29
# A6 i1 J- @; g2.2.2 断开网络30
' ~2 y( {: r' ?1 \9 @2.2.3 创建主机模式网络30: B; e/ Q5 X4 ~5 n! Z1 X7 K
2.2.4 使用多个虚拟机30
8 _, r( ]' i/ I2.3 使用恶意代码分析机31
5 _8 z# B* l* J/ R. t( ]2.3.1 让恶意代码连接互联网31
4 a. D5 {8 Q( I$ }/ v2.3.2 连接和断开外围设备32
7 C4 n( z: G" F1 m( e2.3.3 拍摄快照32
( r/ u0 [  S$ v  r6 K" |, {2.3.4 从虚拟机传输文件335 a8 Z) {6 e0 q' v/ B# I
2.4 使用VMware 进行恶意代码分析的风险34
5 ^6 k$ ]  J3 b$ m6 B+ o% P2.5 记录/重放:重复计算机运行轨迹345 s0 E% }9 ?! J5 y2 B
2.6 小结35
& M2 p$ {3 R* H1 V" i* _1 i/ [
  f0 c, S" z* o. q! {第3章 动态分析基础技术 36
( \. k! W7 X. `% y
4 M+ p* A6 M4 Z' r( c+ I
3.1 沙箱:简便但粗糙的方法369 ?: v8 N0 c3 @8 b8 l! V! q- l" ~1 T
3.1.1 使用恶意代码沙箱36: u" G7 T4 F4 F* n4 l
3.1.2 沙箱的缺点371 ^5 _1 F* O% N# p# g
3.2 运行恶意代码38
( Y! H: z+ A# p$ E/ V4 ]7 j3.3 进程监视器39
2 d4 h" d& P) w) b6 [3.3.1 进程监视器的显示40
7 e+ m& O1 [) _) E, C, A8 c* x% c2 c3.3.2 进程监视器中的过滤41
( l! t* d8 L, k1 h4 x8 `/ Q7 N3.4 使用进程浏览器(Process Explorer)来查看进程439 L- Y. F5 y- [1 ]' `
3.4.1 进程浏览器的显示43
9 n5 v( x3 ]1 j$ K; q  b! D3.4.2 使用验证选项44, \  R: ?) s2 y; n4 c/ \
3.4.3 比较字符串450 _; W- ?# k5 [- Z
3.4.4 使用依赖遍历器(Dependency Walker)45
6 {) m: ?) r: t$ c. e/ P3.4.5 分析恶意文档462 B2 n5 |2 p+ H9 J
3.5 使用Regshot 来比较注册表快照46
( X/ f. ?6 c7 e1 B. F3.6 模拟网络47
* K4 Q( N1 z; `3 G5 W! Z4 _9 B2 I3.6.1 使用ApateDNS477 f3 g1 D+ z# u( V% g3 a
3.6.2 使用Netcat 进行监视48
3 H) J+ Q. ^- K! ^& u- x3.7 使用Wireshark 进行数据包监听49  v0 ?9 i7 A6 R0 |0 B9 q
3.8 使用INetSim51: j! v$ y( I& X9 \2 u. m
3.9 基础动态分析工具实践52
$ O; d0 v) \" K9 D+ W* A3.10 小结551 D2 W! k. ]7 i( T+ M4 O; i# l
3.11 实验56
6 W/ O! v8 M) }! n
. w& e# G' r8 O/ [$ D) e: H1 i5 |' w4 C0 @6 }
第 2 篇 静态分析高级技术篇. P2 i, v7 i* B
1 F# p/ |3 M- y7 O: A/ s; I
第4章 x86 反汇编速成班 60, t5 }- b6 }6 W5 i# A% J. y" n- B

( S# ?/ y4 P, h. e4.1 抽象层次60
; @- h% s4 H- a9 }4 X4 |- ^4.2 逆向工程62
$ v6 g" o. k& E- w4.3 x86 体系结构62& S* d7 u' v+ k
4.3.1 内存63
/ I/ m$ d6 O) j$ C3 c- W" g4.3.2 指令64- o* W3 U; x5 Y" O  Q/ U
4.3.3 操作码和字节序64
' a  d( ~* w- V# S6 U) s/ ^1 F+ }4.3.4 操作数65" |/ c5 w" D4 y( @  D
4.3.5 寄存器65
" X( z4 h8 P" q3 E4.3.6 简单指令67; k: n, g' q( K" F  q; l7 W! D
4.3.7 栈70
& u6 `3 e  k4 `1 f% t# w/ ]4.3.8 条件指令73' s- x8 t& p  Y. ?) Q6 A
4.3.9 分支指令73
" w3 L  X) q& ~) H2 A7 Q4.3.10 重复指令741 F# s; y; Z: P4 Y$ U' o8 i
4.3.11 C 语言主函数和偏移76
: e% O+ ~+ S0 k7 J" n4.3.12 更多信息:Intel x86 Architecture Manual773 p6 N. ?7 n4 ^4 u9 g
4.4 小结78
6 j$ k7 y- w1 [+ @! y9 A& t; d$ |% p3 @0 a/ H* y% R0 p
第5章 IDA Pro 79
+ u4 ~; Q4 w. |: c3 f% n. Z; g, ~" o; D8 {
5.1 加载一个可执行文件79
; F/ W8 F8 x0 E% H# @5.2 IDA Pro 接口81
* x7 J5 f' s8 {5.2.1 反汇编窗口模式81
* ?. A" f2 }' [, a5.2.2 对分析有用的窗口83
5 \/ ~: m  R. F# C$ B3 v5.2.3 返回到默认视图83; T7 z; B% x$ q
5.2.4 导航IDA Pro 83) X2 a! q" q0 c: v+ G% q
5.2.5 搜索85  c# ?+ V8 _4 H5 s3 _  o; |
5.3 使用交叉引用86
( O8 D: F: c, o1 |5.3.1 代码交叉引用87
: d8 Q2 ~9 `; {5.3.2 数据交叉引用881 n0 M5 K1 i1 |3 @) |6 B1 z3 T
5.4 分析函数88
) P+ \& m" \% L8 d: h( s5.5 使用图形选项89
/ n% \- [- v9 x6 ^2 c  h& m7 E5.6 增强反汇编91
5 x. B9 |: F# x5 r/ t5.6.1 重命名位置91
" c2 [# {* Z4 H1 b4 C, w" ^5.6.2 注释92% h! y6 B; }4 M+ ?  {
5.6.3 格式化操作数92- I0 n4 z! P0 q: C6 O3 B
5.6.4 使用命名的常量935 y0 a- G( o; j6 e8 u. I' u" F
5.6.5 重新定义代码和数据94
3 D5 {% C, h1 L, b2 i) a! ?2 {0 ?6 u5.7 用插件扩展IDA95/ c3 b* N/ F6 ^, P4 t; g
5.7.1 使用IDC 脚本965 T6 R  T: h% e* @2 U, }0 D. ^: `7 X
5.7.2 使用IDAPython97
) w0 y$ {5 C" u) `' g5.7.3 使用商业插件97% ?4 `" N$ n" ]2 ?, ^
5.8 小结982 s& a9 h) y2 r0 {
5.9 实验98
, v8 g0 B6 ?& u& S7 E- x& d9 S( X8 `6 D) h  X$ u# G* s
第6章 识别汇编中的C代码结构 100
& e5 b& S! R$ b

! T# f% P/ K, s6 Y% V6.1 全局与局部变量101
- K1 g9 X  L/ L- ^9 d6.2 反汇编算术操作102: f& x- M5 r" I2 e; Y. s# H
6.3 识别if 语句104' D) ^$ v; \7 D, o: m7 D+ z+ q! k* `% m
6.3.1 用IDA Pro 图形化分析函数105( i- g1 {2 B5 c7 ~" I) h! K
6.3.2 识别嵌套的if 语句106
- j1 A* G, Z6 H2 A8 r7 s6.4 识别循环107
- q/ A2 K8 C; H( \4 h6.4.1 找到for 循环107
! t7 V% r$ L0 f# w' t0 v6.4.2 找到while 循环1095 ?& i; D) B4 O0 N. J9 g8 [
6.5 理解函数调用约定110
; V% n& A0 n- B+ m; z4 c6.5.1 cdecl110
$ w! u  [5 S' r* Y6.5.2 stdcall 111# H. H  a7 T- ?2 ?9 j
6.5.3 fastcall 111
$ s( P- s+ P% [% X6.5.4 压栈与移动 1110 b8 b! u! q; b. i3 D4 Q' _
6.6 分析switch 语句112
5 M% ^. R4 ^2 F  Q0 r% C, Z( M6.6.1 If 样式112" w' A* e: ^5 u: ]+ Y
6.6.2 跳转表114# j/ k1 ~. Z% w5 X9 P  w' t' X4 t
6.7 反汇编数组118* N: p! J( o( X2 }, `3 t1 P
6.8 识别结构体119
3 y6 p. v3 B; K- @6.9 分析链表遍历121
; {7 b  X" A+ }; u8 J- r8 o  Z; v6.10 小结123
% z5 Q8 f' _& Q6.11 实验1230 \# `: w. @+ a. g
, b9 U: @/ t$ s  J2 ?
第7章 分析恶意Windows程序 126

0 t4 E* E: K! w7 [* g& R1 J/ a2 J' M. u. Z5 H/ |
7.1 Windows API126
" I; k2 @( ?1 V& ^% M" A& D, V7.1.1 类型和匈牙利表达法126
2 u, ^9 h; D6 b+ Z- _7 e. R$ {7.1.2 句柄127
# N7 v5 X6 M' s# \% g, m1 Z( D1 {7.1.3 文件系统函数127
' @  v+ ?3 |' B3 |/ L% F7.1.4 特殊文件128" v+ Q: S" u! C$ O% b& R5 |
7.2 Windows 注册表129
7 L1 L1 d* l2 V1 {* @) t" w7.2.1 注册表根键130: ~  r5 P% @% b: G# Y9 N5 t
7.2.2 Regedit131( O3 f: I* ^* k5 M5 B
7.2.3 自启动程序131
) ^; r. O$ T* B, R; r6 G7.2.4 常用注册表函数131
! R5 H5 n. ~" n; q7.2.5 练习分析注册表操作代码132* |0 T% Q9 r3 P2 A" x* u2 e! x* X" d
7.2.6 使用.reg 文件的注册表脚本133
4 K8 C. |# c# Z7.3 网络API133( l! z! m8 Q8 s! m! p
7.3.1 伯克利兼容套接字134
9 `9 V2 d* V7 b1 J7.3.2 网络的服务器和客户端134
4 S' C. V5 v1 r$ H& ~7.3.3 WinINet API 1353 ?: D7 k: E; c0 f6 K
7.4 跟踪恶意代码的运行136
1 E) I* d1 l# O& }& X$ r7.4.1 DLL136
( K7 z9 V5 M$ o  d- _7.4.2 进程1371 c0 ~1 G2 g7 o
7.4.3 线程139" u9 z: z- I: Q6 M7 Z' d
7.4.4 使用互斥量的进程间协作142" A  E. t0 g, M' ]3 P, g9 h
7.4.5 服务143, T0 l! @) J, O: d
7.4.6 组件对象模型145- o) u+ h% V* P% g: F
7.4.7 异常:当事情出错时147. v- Y. E5 C( z9 ]5 ~' L
7.5 内核与用户模式148
* ~& _2 p; D  S7.6 原生API149
' D7 Q! ^( n2 Z8 x' V7.7 小结151- f; X* v$ j) ~, P6 g$ i. B
7.8 实验151" U3 y9 U& B3 q/ T" @/ J

* b* c6 _$ q6 G3 m$ E8 N0 B& f0 N; |4 {+ @( A; I* F: T8 t
第 3 篇 动态分析高级技术篇  H) y  n) ?- {; g
& S, E9 n' E+ Y4 C8 a% f
第8章 动态调试 154

4 o. ~( i6 w/ r3 M8 `1 P3 `# c6 Z
8.1 源代码级与汇编级的调试器1542 K" @4 L* l) i9 H# a( n9 a
8.2 内核模式与用户模式调试155
  O, y, Q6 z  Z  A8.3 使用调试器155- I- j( t! Q4 V4 {
8.3.1 单步调试1555 X7 H- j# |& I8 v0 y* O2 u# T! Z" F0 H
8.3.2 单步跳过(Stepping-Over)和单步跳入(Stepping-Into)156
1 ^& V, }/ c) o. \* K$ b5 r  T8.3.3 用断点暂停执行1573 O$ Y6 N+ G9 a2 z
8.4 异常161* l, n" f+ h7 r; [
8.4.1 首次和二次异常处理162
/ \+ v& M- w) `. |- r2 V8.4.2 常见异常162
' Y, `! |/ j! l5 b1 d6 e8.5 使用调试器修改可执行文件163) b' E# s: z8 F: E- _  u5 s
8.6 修改可执行程序的实践163
/ H& C+ [" ^4 O- N8.7 小结164  U# ^  g+ H! L
- ~- E+ g" B1 j9 y
第9 章 OllyDbg 165

$ J) y" K& D3 J2 t5 `* h8 F" m
3 d6 a. E) y% `0 C5 ]% [& h2 B9.1 加载恶意代码165
4 ]" v* c( _; H/ i8 h/ U6 ~3 y9.1.1 打开一个可执行文件1652 N0 i6 t2 b6 X# d& a* a
9.1.2 附加调试器到一个运行程序1669 ~+ ^( q/ r6 r4 X( S7 D
9.2 OllyDbg 的接口167- P  N- L& s3 F( C- {3 l: |
9.3 内存映射168
) c) {0 W3 T6 h# a+ e+ n9.3.1 基地址重定位169: @3 D* T. N9 s  ]& p
9.4 查看线程和堆栈170
5 f$ f! p6 q1 k, V4 I' g0 f9.5 执行代码171; }' ~9 j' E6 m/ o
9.6 断点172
5 e0 T$ _+ I4 {$ O9.6.1 软件断点173
$ X# B/ I# W, C9.6.2 条件断点174
/ ~/ p! [# g6 B* h& E) o$ V6 |9.6.3 硬件断点1759 g2 k  C& J& \
9.6.4 内存断点175
8 o4 Q5 W% U% [* ?( c9.7 加载DLL1761 v3 W  I! z: k! y  K" v
9.8 跟踪177
- g  h: K. X1 m" c  f3 T9.8.1 标准回溯跟踪177
4 F+ d) C; x. c6 I& b. i: b9.8.2 堆栈调用跟踪178
9 B/ t0 k9 U( Q3 |' e" }9.8.3 运行跟踪178% j' U0 [6 Q+ E* T, X
9.8.4 跟踪Poison Ivy1788 U# i3 v5 t; a
9.9 异常处理179
' }& ~; w- M& u: t$ w. a' V9.10 修补180
- E9 n5 f! S9 W1 _7 F4 ~5 _4 X( Z9.11 分析shellcode1813 l, ~  h. G" x  G
9.12 协助功能182! V6 |' m6 A3 u, J3 E: S8 `- T8 f
9.13 插件182
/ c" y4 C/ f" k8 A9 \, c7 w9.13.1 OllyDump1837 E  x; ~6 L7 S9 q& T0 Y
9.13.2 调试器隐藏插件1834 @# b: j3 Y2 C; r; l' `% Z8 n
9.13.3 命令行184' m. G  [. |* H) ]8 X, P
9.13.4 书签185
) }9 B9 Y" e  m9 c3 E9.14 脚本调试185
. c2 N# Y0 A4 X; Y! \7 ~" z& P9.15 小结186
0 q6 @3 h2 T7 O  V# x3 ~0 X3 [9.16 实验187. p; Z7 r$ D  t9 S& ]
  a$ p. ~9 a' }) D- l' H, n5 W
第10章 使用WinDbg 调试内核 189
- E+ r6 X5 Y6 K2 _$ I7 J) O4 w* o8 y5 o  b( a* W; |6 D
10.1 驱动与内核代码189! Q  t9 U0 T, K' z* b0 I) j
10.2 安装内核调试191
  O" b4 ~' T# E7 |: A# ?) ~1 n9 A9 z10.3 使用WinDbg193, T/ w' m0 |" y6 F5 E8 w# _4 r* a; @
10.3.1 从内存中读取194
$ a6 ?2 e4 k/ b. F8 o) D( m+ ?10.3.2 使用算术操作符194
; E$ z2 R- q( u5 D8 \10.3.3 设置断点194
# \9 ]3 n$ o5 K4 \3 j. x4 G' I* W  ]10.3.4 列举模块195
* O; u4 y/ H. K10.4 微软符号表1959 V5 B& P* L& u* Y$ X) r  b6 R$ t
10.4.1 搜索符号195
: J" Q: h' t3 Q  m10.4.2 查看结构信息196
( h6 ]8 {# Z. t4 |. w1 ]- L10.4.3 配置Windows 符号表198* ?9 Z, |; C$ C0 y- J7 u
10.5 内核调试实践198
" d* S4 s  B- r$ _, G4 Y' S" o10.5.1 用户空间的代码198* `2 w  P. \2 L9 C) n+ q; I0 a
10.5.2 内核模式的代码200
6 P% P6 r6 `3 i8 `10.5.3 查找驱动对象2039 o4 f3 K4 L; E
10.6 Rootkit204; M5 ?! c& G! t
10.6.1 Rootkit 分析实践205" [  ^4 U1 M1 F5 G* `
10.6.2 中断208
/ w% l+ v) k- n7 _10.7 加载驱动209  U# z+ E: b2 R: d7 {
10.8 Windows Vista、Windows 7 和x64 版本的内核问题209
7 v/ T. s' R: o) y+ e10.9 小结210
2 w3 q3 T( m( O7 n0 ~$ F+ y% I10.10 实验210* b9 P, ^* @8 ]" v) t1 S/ F9 A
- U) X- x/ c9 ]7 u0 n1 t  t

9 F: |2 S! Q* h# z6 n% d5 I3 d第 4 篇 恶意代码功能篇# Z8 J" [& H. s$ @5 O, k7 `
3 B; ~/ S. Q' K/ T
第11章 恶意代码行为 214, Y8 i: A; O# Z
6 v) P4 m7 b3 J. e; O5 Y
11.1 下载器和启动器214
. K# H" o3 ^( N9 g. T5 g% b8 u11.2 后门(backdoor)2148 z, y1 ^' d# g! o' p0 I
11.2.1 反向shell215
7 }2 y" a0 Q  ^3 z) Y# ~" \11.2.2 远程控制工具216/ ^7 V  b- c% }% i: ~1 t! W* v
11.2.3 僵尸网络2163 I8 s! T3 j7 N- E. t
11.2.4 远程控制工具与僵尸网络的比较217  Z8 F- j$ c; j. u
11.3 登录凭证窃密器217' y! ^8 Z) N- \5 G2 p, e9 u
11.3.1 GINA 拦截217
0 j) R0 o/ u: i! S# h. {  [11.3.2 口令哈希转储2180 N1 m+ t  O, N8 C: X" v. I+ ~" K
11.3.3 击键记录221$ G# ^) Z9 _+ V" m' @! s/ a. N7 G
11.4 存活机制223% r2 O5 d# L" ?7 s7 H9 S2 i' M
11.4.1 Windows 注册表223( j, A, j# j. a
11.4.2 特洛伊木马化(Trojanized)系统二进制文件225
. L5 {1 G4 p. J. f" \11.4.3 DLL 加载顺序劫持227
8 x% S$ i  [0 v* L: t' o6 J11.5 提权228
* r$ s7 y6 K0 F: ^0 {3 v- f11.5.1 使用SeDebugPrivilege228- a. u0 m; O; F+ `
11.6 隐藏它的踪迹——用户态的Rootkit229, `% x5 W& J& O4 F* N% Z( [5 y
11.6.1 IAT Hook 230
& f" _7 Q, g2 e6 D+ `& C; r11.6.2 Inline Hook 2314 Z& D1 W$ F* W
11.7 小结232
( Q/ M) S; [, f5 N11.8 实验232* C* ?9 J, [! y+ m, q, j; j
# ]- W' c2 B( G& t
第12章 隐蔽的恶意代码启动 234) z, y8 H$ J" H- Q7 t9 S  J
2 p$ K$ t8 S9 J: z, [% F* x7 z. j1 c
12.1 启动器(Launcher)234
2 P) i+ ]: C0 H! ]  ]5 i12.2 进程注入2347 Q5 C$ v' H9 i, a# P8 U0 F
12.2.1 DLL 注入2353 z& O$ G- M3 i; t% W! `2 H2 Y2 Q5 ~
12.2.2 直接注入237
6 ?  x1 @3 C, A. \" d12.3 进程替换238+ q/ I. a. H; i) P0 Y
12.4 钩子(Hook)注入240, T+ H* Q$ P+ P' h! d2 w) d2 |
12.4.1 本地和远程钩子(Hook)240" i' y9 C1 \' C7 q' t& h
12.4.2 使用钩子的击键记录器241
1 R, X5 Q4 ]$ a2 X: `* I12.4.3 使用SetWindowsHookEx 241: ]: G! G7 R- y  u5 y2 H9 o% F& y8 W
12.4.4 目标线程241/ Z( P; |# L3 s
12.5 Detours 242
" ?8 x! ~+ o, _. h12.6 APC 注入243
4 `( R' F' J+ p; u6 R+ H12.6.1 用户模式下APC 注入244
1 K0 [# V4 I2 ^- `1 p6 G; `! ?* J+ G12.6.2 内核模式的APC 注入245
3 v5 ]/ d# r: B7 y+ e5 D. s12.7 小结246: y- R$ n, D% b$ g, W
12.8 实验246
2 K4 P' f6 n% _9 z4 U( X$ `+ \/ g2 K, K; G! Z% ]6 r4 @
第13章 数据加密 248
" J( @3 V, R; a4 U. G
5 @) Z2 L! x$ R6 W: i3 y7 g13.1 分析加密算法的目的248
  L+ @" g. }. j% I3 ]" M) v13.2 简单的加密算法248/ e" W) F, J, ~+ Q& v) {# K; k
13.2.1 凯撒密码249
8 \- z6 k! T/ A13.2.2 XOR2492 A) ^' N3 K+ @/ O. X) }1 e0 n
13.2.3 其他一些简单的加密策略254  |% q* R  v1 f  X" _
13.2.4 Base64255
, ~3 h% F: o8 A; q13.3 常见的加密算法258
6 X" ^8 d8 N, Z2 N. U13.3.1 识别字符串和导入2598 N/ l+ Y8 N' o
13.3.2 查找加密常量259. M* E  \7 B1 q  U* e
13.3.3 查找高熵值内容261
) J: x/ w; x5 u5 z% c. H, h13.4 自定义加密262- A" x* W+ j5 g
13.4.1 识别自定义加密263- X, M0 L4 f  J
13.4.2 攻击者使用自定义加密的优势265, j4 U9 t/ u6 T& J! A' B
13.5 解密265
& l* f6 o# K, f3 e0 P/ q" d- s% b13.5.1 自解密265
; D8 O1 l7 ?: D$ v4 A/ A, c+ b' a6 h. C13.5.2 手动执行解密函数266, X% k7 E; D5 m: q3 {
13.5.3 使用通用的解密规范267% `" Y, u% q+ ]2 U& a; h
13.6 小结270
, U; T0 I1 U% |' x# ~& G13.7 实验271
6 |2 F& X; C, p. O) j' t0 c, J+ d% u* E: }
第14章 恶意代码的网络特征2739 J: @4 c  P0 e+ M, \* ]) H- Q  P
2 j% o4 e5 N, X5 W; z
14.1 网络应对措施273! _: H% O. B' b/ a% a
14.1.1 在原始环境中观察恶意代码273
. ~1 D& q  b  d9 u) \6 k- T14.1.2 恶意行为的痕迹274: O3 W. W0 h; T' j% U8 I% s
14.1.3 OPSEC=操作安全性275! c$ j/ C* ~% O5 Y
14.2 安全地调查在线攻击者275% F* e* Y5 w) G9 i$ {# ^+ N
14.2.1 间接性策略275) }9 y1 B9 G8 c1 H) c: E& p
14.2.2 获取IP 地址和域名信息276
% T& f/ p7 T) D' e$ y7 J2 f14.3 基于内容的网络应对措施278" @! n8 G, A) l
14.3.1 使用Snort 进行入侵检测278
3 D4 q& ~1 v7 k7 D9 `: `14.3.2 深入观察279
4 @3 O' E0 C+ c( P0 e8 }* K14.4 结合动态和静态分析技术2824 K* N" w6 e  }% m1 h: E8 ~  K
14.4.1 过度分析的危险283
/ P% [6 E4 h) p( i4 F$ L9 M14.4.2 在众目睽睽下隐藏2836 u; X  m% F! P" @
14.4.3 理解周边代码286
. p- c9 a5 a* o. p8 U14.4.4 寻找网络操作代码2878 \. I! o: V  @2 o8 G
14.4.5 了解网络内容的来源288
5 U: z# h. W- d, a* G% q+ a14.4.6 硬编码数据 vs. 临时数据289
& V. `! H3 p  W6 [5 n6 r7 P4 T% E14.4.7 确定和利用编码步骤289
! s9 d8 T6 {+ R/ ^# I$ ^14.4.8 创建特征291
* q* z. c& }5 F# ^' H5 @* R14.4.9 分析解析例程292
' @: w, @% V9 M! k- Q  p14.4.10 针对多个元素2946 a. _+ W4 I5 U$ z. J- e/ e
14.5 了解攻击者的意图295
  z, l, d. V1 M- v3 w14.6 小结296
+ h# V/ b! e- u; D& @14.7 实验2967 e; e  I0 I% [3 J  ]6 v

7 g  L: T' U/ n  Z2 O
+ W" _* J, t" l第 5 篇 逆向工程
8 H/ [! ~: W/ T& R3 m3 d4 Q
- I! u* s, Q  d1 |8 f, G第15章 对抗反汇编 3004 x( |9 E0 i- {% J$ Y# E; E% H$ d
* r: J4 L" Z1 B0 K$ Y( ]  Z
15.1 何谓对抗反汇编技术300. ~6 A5 X9 ^: ^# d
15.2 挫败反汇编算法301( l- c8 c+ U; {8 [9 _# c
15.2.1 线性反汇编302
8 g) k, B% @- C15.2.2 面向代码流的反汇编303
% P7 v0 k$ M' M/ r/ \15.3 对抗反汇编技术306
% C' @" _$ Q/ d; U! ?15.3.1 相同目标的跳转指令306
) O6 r1 w) ?5 g1 n; U0 C" R0 g15.3.2 固定条件的跳转指令307
1 e& w( g- `. l3 a  M( ~# I15.3.3 无效的反汇编指令308( x% z! ~" S  n% F7 q! L
15.3.4 用IDA Pro 对指令进行NOP替换311
; z6 L" I7 ^  s6 i15.4 混淆控制流图312) T* p2 l$ O- S0 }1 p3 i8 S* ?
15.4.1 函数指针问题312
9 d- H" h3 v2 S$ z9 c15.4.2 在IDA Pro 中添加代码的交叉引用313
% W) o9 `: m4 V# n0 d# g7 t; \15.4.3 滥用返回指针313
  c( n$ _& r% `15.4.4 滥用结构化异常处理315
5 O+ [. F5 P5 D15.5 挫败栈帧分析317( K" H- w$ T1 h# w4 n
15.6 小结320
0 d- b5 {4 x' p, J6 B3 ~/ B2 e. [15.7 实验320
7 [; X: q) ]$ A) S0 m2 w( X- b" V& t+ i3 u% c  |5 [  m" \. O" `  y( a
第16章 反调试技术322
; q' N" }/ u/ i; S3 x3 L3 d
1 }8 ^" b  b& |6 O1 ]16.1 探测Windows 调试器322' @1 y: z: ]$ l; j, u
16.1.1 使用Windows API322
4 f2 j1 L8 x& T& t0 s7 W$ u# B16.1.2 手动检测数据结构324, w7 }4 G# r5 Z
16.1.3 系统痕迹检测326) T; S+ ]+ _* Q+ Y" _
16.2 识别调试器的行为327
8 w$ ^0 ~  U* A  D5 Z3 _16.2.1 INT 扫描327
& L* n. H: f8 ^( A9 O' S16.2.2 执行代码校验和检查328
1 F3 k# v" ~: }3 M0 I16.2.3 时钟检测3285 Q5 l1 ^4 ?9 o- X$ z
16.3 干扰调试器的功能330& M, f. R5 p+ y" c2 N* ?2 l" W
16.3.1 使用TLS回调330
8 d/ s/ [1 W9 J' N' t8 F" H9 i& T1 D16.3.2 使用异常332
0 ~9 c! J& [9 L16.3.3 插入中断333  R, K) X7 ?$ ]  R: s
16.4 调试器漏洞334; _4 k) B3 g# ~) Y2 q) r+ X+ e8 o
16.4.1 PE 头漏洞334
+ r9 ^& k  \  _: h* J! R: R- |16.4.2 OutputDebugString漏洞336
; a- z* y. c% ?6 N: I& S# T- }16.5 小结336
9 G" t/ i% p( s( r% [16.6 实验3360 e1 E$ u! e6 k/ y, O" q; X- P

" y! V3 [6 I7 _第17章 反虚拟机技术 338
8 J5 ]" H: U9 |  w% J$ W; T3 Q' `9 e
17.1 VMware 痕迹3384 ?/ B! }- @5 g/ b% @+ v
17.1.1 绕过VMware 痕迹的探测340
% d) N: ~2 p5 f+ D17.1.2 探测内存痕迹3427 K9 M! d; C& \- ]1 L1 j1 v
17.2 查找漏洞指令342
: h$ K' F2 Z" y. m- f' ?& j17.2.1 使用Red Pill 反虚拟机技术343
( n5 G9 c# _- b, q8 N5 F( K17.2.2 使用No Pill 技术344
4 Y) W* Q' X; d. \" W17.2.3 查询I/O 通信端口3444 n" @. `5 d' [4 s$ q. a
17.2.4 使用str 指令345( i! O* A' ]! y4 ]' O
17.2.5 反虚拟机的x86 指令3465 S3 n. x6 p) x9 }- @
17.2.6 在IDA Pro 中高亮显示反虚拟机代码347& x7 V, `, {* ]) l
17.2.7 使用ScoopyNG347% e; }0 E2 a5 v0 q% m) K
17.3 调整设置348
" o, I2 y& |1 y17.4 虚拟机逃逸349
& U; V- D6 G. n' L* i2 E6 @, r# |17.5 小结349
$ @0 `4 V% L/ A. |& V3 p) s* L. @17.6 实验349
9 h; H5 p9 t. {6 p1 r" U$ ?5 n* r; E2 v2 T7 L
第18章 加壳与脱壳 352' N/ U' \8 \, O
. j' h- o0 P; ?% @8 t5 Z' Y2 b
18.1 剖析加壳3523 K1 Q; ^$ T1 _; V% ^! z2 `4 b
18.1.1 脱壳存根353
; g& E% ~# ?  T6 K* H0 k18.1.2 加载可执行文件353+ F/ J9 I7 t% W  q! L% ]
18.1.3 解析导入函数表353
( L/ I' Z, T; P7 B18.1.4 尾部跳转354
1 P! X2 \3 W! s: g, B5 g8 H4 T# E18.1.5 图示脱壳过程354
/ @8 i+ h0 K+ d; s18.2 识别加壳程序3554 {! T3 z8 `) Q0 a; @
18.2.1 加壳程序的标识3554 e" e. k9 ^( w' O0 T6 H- p& F
18.2.2 熵计算356* d) }: V5 b% X# ^& D
18.3 脱壳选项356
) K! L2 q+ u" d/ Q) Z, L9 g; y, D18.4 自动脱壳356
/ h9 W1 X1 b! E8 o18.5 手动脱壳357
3 B1 i. i: |! L- V; A' ?18.5.1 使用导入重构器重构导入表3582 H! G7 o' q( p7 g- H8 F* t
18.5.2 查找OEP359
0 H% r; I  ?$ ~6 u+ u18.5.3 手动修复导入表363
+ [) z" m* Y9 _; x. q18.6 常见壳的技巧与窍门364
: s2 h& a) n" y1 z* G$ \18.6.1 UPX 364/ |7 w; j% V/ V4 p1 m
18.6.2 PECompact 365
: Z( p$ ^' g; \. |  \18.6.3 ASPack365
5 a/ d! f+ v4 \3 A18.6.4 Petite 3650 p  v# P+ M* n& v! ^- ~* `( k
18.6.5 WinUpack 366
9 P& ]8 M! f2 W( `4 A18.6.6 Themida367) Y( T( J/ B4 L+ H. v3 E% U
18.7 不完全脱壳情况下的分析368
/ y: r# Z7 u  `# r' L; a, N18.8 加壳DLL 368+ u" ]  W: W+ H: K* h
18.9 小结369
0 u, r: y' I; P( j5 D18.10 实验369& G, h: j+ X) b+ c. D% ^4 c" h
& J  X+ ]+ B( r
1 }! Q: c2 H$ Y: f  Q6 Q& n
第 6 篇 高级专题
! L3 N4 E1 l/ V; a, O" d; i$ I' l1 z0 x* F, r7 Q- U
第19章 shellcode 分析 3725 G( g: Q* {- O+ q' e7 ?& F% x

. f) @  C0 D9 \$ O19.1 加载shellcode 进行分析372
; M5 G  w6 a5 ~& U19.2 位置无关代码373
, ]2 ^' L: h) c, s! z! c! ~19.3 识别执行位置373* [1 P9 V. f5 s, ^( B  s
19.3.1 使用call/pop 指令374' f5 |6 r% ~% X" r
19.3.2 使用fnstenv 指令376+ v, }8 ^4 X) w: F# I& D$ l2 V
19.4 手动符号解析377
$ J7 G2 h9 h( R- S. R19.4.1 在内存中找到kernel32.dll378" c! |, P" y6 E' V' F
19.4.2 解析PE 文件导出数据380. x/ o- z5 H+ [. `
19.4.3 使用散列过的导出符号名3821 q3 J$ x, F3 }' M  ^: J
19.5 一个完整的Hello World 例子383
6 t+ |6 M( H1 Z! c; @0 ]19.6 shellcode 编码3856 s8 O0 P# }1 S+ K
19.7 空指令雪橇3877 D0 J) f: h  Z0 Y3 l4 F
19.8 找到shellcode3871 |  a, l' j0 S: k2 [4 P9 l/ S
19.9 小结388
4 Q* w: o; S  W, U  \0 G. b+ b19.10 实验389$ ?; `: [+ J$ e2 y

9 w- C0 o" Q5 @第20章 C++代码分析 391
8 f4 \% q) C4 x7 c% B; S% Y& _) z: v6 l
20.1 面向对象的编程语言391: a2 Q0 _5 M3 @
20.1.1 this 指针392) ~. Q$ p/ `1 z, m1 |7 \" }0 c
20.1.2 重载与修饰394. C$ N4 d% o& G5 z% U
20.1.3 继承(Inheritance)和函数重写(Overriding)395
1 I. I6 O/ ~9 M* V: U9 A5 E20.2 虚函数和非虚函数396
; S$ f" Q% h8 H6 Z8 d& I7 d7 P: b5 k20.2.1 虚函数表的使用3985 _* L. G. y! s; l) \4 w8 E
20.2.2 识别虚函数表399- d7 R* v1 {3 N" n4 H& x7 v
20.3 创建和销毁对象400: w6 Y$ r; _6 i. W; e+ |' L$ D1 Y
20.4 小结401
' k" f% M7 T: R9 ^20.5 实验401
% R/ f2 x9 H! P# q2 C* C( B' `) ?
第21章 64 位恶意代码 403
9 H+ }1 i( {5 ]
; r. @1 Z- N6 |( y21.1 为什么需要64 位恶意代码403
' B/ u! D+ }$ Z. ^- y21.2 x64 架构上的差别4043 J4 h( W, W1 U0 |: V9 x
21.2.1 x64 调用约定和栈使用上的差别406
! n. H) ]) C6 z8 C) {, _! ^# L$ Z21.2.2 64 位异常处理4081 t: I1 M" O! S7 R
21.3 在Windows 64 位上的Windows 32 位408
6 w: R: X# [9 O8 }0 W21.4 恶意代码功能上的64位提示409( i! P# o; }1 S, z' o! ]- t: y+ z
21.5 小结410* G) Y6 ?# E6 K
21.6 实验410
/ R0 t2 c0 c6 r& x- x  d! z% W2 r$ L- _" X: u7 O
附录A 常见Windows 函数列表 412" @: ~& s; T& d

, ~* Q; ]% ~6 l附录B 流行的恶意代码分析工具列表424
" d1 L, f; n5 q5 x7 S( f3 K  R& L- u2 ]. F0 p7 ]3 M
附录C 实验作业参考解答435
$ v1 ^4 N# d6 h; K* K2 q9 R1 E5 c4 n" \" i
附录D 致青春,基础软件开发的中国故事 691
# ?$ ]  ~9 ^% U+ c0 q, C( |- v: j: j. o1 v2 \3 Q" `0 N- ~
附录E Syser 操作入门 695  d: E# V0 P. N) u; S7 Q* B

2 Z, p) Z& I3 L! j
" u5 |& G, n* Q
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:479 天
连续签到:52 天
最佳答案
0 
发表于 2016-11-26 00:13:53 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:368 天
连续签到:1 天
最佳答案
0 
发表于 2016-11-26 08:26:25 | 显示全部楼层
二楼,甲鱼兄要出恶意代码课程吗
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:82 天
连续签到:1 天
最佳答案
0 
发表于 2016-11-26 09:51:22 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:81 天
连续签到:1 天
最佳答案
0 
发表于 2017-3-7 17:41:36 | 显示全部楼层
鱼蛋代码 发表于 2016-11-26 09:51
/ o1 y% Z8 J" y3 Z$ u什么编程语音写的?

9 z2 c4 A! y, h7 w9 s什么时候出病毒查杀实战
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:10 天
连续签到:1 天
最佳答案
0 
发表于 2017-6-17 18:04:42 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:11 天
连续签到:3 天
最佳答案
0 
发表于 2017-6-26 21:17:30 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-7-18 10:19:29 | 显示全部楼层
感觉很高大上,但语言学的一般般还有待提升勒
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:2 天
连续签到:1 天
最佳答案
0 
发表于 2017-8-6 19:25:19 | 显示全部楼层
好想学呀,可惜看书看不懂呀~!
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-8-20 21:26 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表