鱼C论坛

 找回密码
 立即注册
查看: 15005|回复: 20

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

[复制链接]
发表于 2016-11-25 21:49:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
T1jdyKFONcXXXXXXXX_!!0-item_pic.jpg_430x430q90.jpg

* q5 k  A' M" ?! n. {- `  ~# [8 d: ?3 R' ]+ y4 o8 n/ f+ l/ D
书名:《恶意代码分析实战》. V4 R6 F' e0 q+ S/ o0 {0 d
作者:迈克尔·斯科尔斯基 (Michael Sikorski),安德鲁·哈尼克 (Andrew Honig)
, K3 L: j) L0 f6 x2 t译者:诸葛建伟,姜辉,张光凯 9 G( B7 l* i% U; ]
出版社:电子工业出版社7 ^8 V) g1 i1 X. m5 Z
出版年:2014年4月1日(第1版)
1 f4 i/ I; Y/ v" B$ s. p1 V4 H定价:128.00元" R8 o4 c. v" z0 A5 q
装帧:平装  {) j4 W2 O0 A  p
ISBN:9787121224683
0 o( a8 Z/ S& h4 ~
' e* z) K7 Y9 l6 ~6 k8 d/ f/ b购买链接:
3 b% R3 i% K1 \8 Q5 l
5 b4 o/ W9 [% j$ t

9 J! Q# I! V) X2 z- L) Q亚马逊 -> 传送门( R& |, B* b0 w1 ^; W2 L
4 u  R7 ]2 b: E8 e5 \  G) |
当当网 -> 传送门
6 B5 \; i, k# e# b- x: D" i. Y9 ]% U% l$ W+ V. ]
京东 -> 传送门
2 n6 U% E  q0 C. i2 C( t. Q
& J* k* y  D9 U天猫 -> 传送门
4 I0 t3 u& }$ I; l/ S9 o- n9 C+ x! O1 G1 r4 W5 O, p" R

$ d' O* ~. d5 [( r) M* T% m内容简介:# x- s. W) d6 G
( o2 H" f& `3 h


2 q9 z7 m2 \! C. ?6 d3 f+ p《恶意代码分析实战》是业内公认的迄今为止最权威的一本恶意代码分析指南,《恶意代码分析实战》也是每一位恶意代码分析师都必须作为指导手册珍藏的案头必备。
! ]5 `" i: k$ k# }1 ?* e
+ Z1 [& A$ y3 O9 q" N( O; c《恶意代码分析实战》既是一本教材,也是一本动手实践的指南。不仅教会你如何分析恶意代码(技术指导),而且配了大量的实验练习、案例、答案以及详细的分析过程,同时还包含了所有用作案例的恶意代码样本,提供了丰富、安全的学习环境。
9 }6 P9 e4 f$ y& M
, E. u9 H; v) x0 E, @针对初学者:本书的技术内容、实验作业可以帮你渐入佳境;4 a7 O5 o) ]6 |' L- Z% h6 {
针对中级读者:本书大量的分析实践会直接带你进入更高的级别,臻入化境。
* s- F+ x3 |. ]' q: {9 B" ~  A( D' ^2 r5 }
目录:
/ c8 o* h' o- B  S2 a" _( b# v8 K% C) E( w- W& q" v8 P


5 e" t9 M  o' z8 u第0章 恶意代码分析技术入门1
4 X. ~( k. k9 R. H& A2 k  |3 r' O+ E
* R( i- d/ k; x  e# E" y" @1 C: Q0.1 恶意代码分析目标1
$ p  U; r5 q, \& l0.2 恶意代码分析技术2$ y' j% o  P4 D9 Z* T. C
0.2.1 静态分析基础技术24 U8 m$ J' h' ?& C9 v- S2 X" b
0.2.2 动态分析基础技术2
9 n0 _$ _' v3 |. }- n2 D1 G0.2.3 静态分析高级技术23 E3 [2 ~( [' `: |8 Z$ {
0.2.4 动态分析高级技术2$ T( T. h, S0 i0 b
0.3 恶意代码类型3
/ T7 Q/ m' u! q  ^0.4 恶意代码分析通用规则4
0 Y' Y+ |6 |- a! {" u- d4 c. Q) e: U9 I, n. U1 x% Y1 \! M. v. @: a) l
$ l% C! L, U4 U5 |/ l8 ?; E& g
第 1 篇 静态分析
5 \: O* q5 M4 }' o6 n' o: P# Z/ ]. j* y7 d6 ~. d
第1章 静态分析基础技术 6- p; ~9 l! R% W
$ q" m6 E! @0 s1 u
1.1 反病毒引擎扫描:实用的第一步65 U, b! [& @5 Q& t- Z
1.2 哈希值:恶意代码的指纹7
, E9 R0 J- O0 u$ o9 b( b1.3 查找字符串7
5 z; n! ]/ Z6 S: @- w) @* r1.4 加壳与混淆恶意代码9; H; P! e# s  N
1.4.1 文件加壳10
- d! J' o6 L$ M9 ~1.4.2 使用PEiD 检测加壳10
" v* ~7 y% d' \5 G; q5 c8 N) J7 M1.5 PE 文件格式11
1 B7 F, ?* ]- `% _1 T, l: e2 \1.6 链接库与函数125 g& v3 T" Z4 w9 n# k( x" n" w
1.6.1 静态链接、运行时链接与动态链接12
5 l5 s/ T8 j% W# E/ e9 }( Z1.6.2 使用Dependency Walker 工具探索动态链接函数134 Z* f% i  b6 d$ C6 U$ ^1 m
1.6.3 导入函数14
2 J4 t% _, h8 G# ?/ n9 R7 ~7 l, O1.6.4 导出函数15
5 e6 l" b- E' M( H  a1.7 静态分析技术实践15$ Z' E+ |: V4 K6 ~' G
1.7.1 PotentialKeylogger.exe:一个未加壳的可执行文件15
. m0 r% S8 H  p$ j! r* u7 E1.7.2 PackedProgram.exe:穷途末路18! C3 \, a6 r/ _) ]
1.8 PE 文件头与分节18- w7 b9 R3 D+ T$ A' A
1.8.1 使用PEview 来分析PE 文件19
" W. p  G# W8 Y1 @; L) M  C  i1.8.2 使用Resource Hacker 工具来查看资源节22- R+ R# w6 N/ n6 J, H
1.8.3 使用其他的PE 文件工具239 ?! O  p) ]! Q" Z' F
1.8.4 PE 文件头概述23
0 E2 ]( @1 E8 c- Y1.9 小结24  j2 G# i. e" _$ f  h! E5 y: K
1.10 实验24: J- r6 Y0 t8 I; c, Y, T
. d# Y) z& E2 z4 n/ ~$ u" n- }
第2章 在虚拟机中分析恶意代码 27& l0 n; ^' {4 q" ~( D% k7 P

- Q. }1 U# s# U; p2.1 虚拟机的结构27
6 j) S4 j+ K. K: ?* J2.2 创建恶意代码分析机28" F  _5 k' K. u1 H9 i  e1 y1 d, b3 d
2.2.1 配置VMware29/ K/ D" |: W0 n- O  J
2.2.2 断开网络30
# T5 D/ F$ L$ q& M- K7 B8 ~. S" s2.2.3 创建主机模式网络30
2 q9 R# ]1 n9 w. R2.2.4 使用多个虚拟机30" A, O( [  |3 `3 y' R$ J' t* y4 e, q
2.3 使用恶意代码分析机31' |( j# }) a+ R2 J
2.3.1 让恶意代码连接互联网319 q) N8 U, ^, H; O
2.3.2 连接和断开外围设备32
4 m, }# Z/ T4 a. p  }2 r/ D2.3.3 拍摄快照328 a" E2 [1 b+ p1 ^
2.3.4 从虚拟机传输文件33
0 p6 R9 k6 p* ?8 v! |9 D2.4 使用VMware 进行恶意代码分析的风险34  p4 {; ~8 e3 ^
2.5 记录/重放:重复计算机运行轨迹34  E7 E: s: U2 }* k, ^
2.6 小结35; P8 t1 J2 Q. v) `* H; D
8 A3 {. P  [! p5 q" ], C3 ~& |
第3章 动态分析基础技术 36

: b0 q( n/ o$ e4 p# o* e
3 b7 s+ e. i; u4 u7 W1 I% x8 s3.1 沙箱:简便但粗糙的方法362 f  V: y1 E  g/ [
3.1.1 使用恶意代码沙箱36
- J* @  R9 {5 W0 p' `+ u7 Z9 U3.1.2 沙箱的缺点37
0 {/ [' @. s, I- F6 A  p. B& Y) B3.2 运行恶意代码38  m+ h( z, O6 V  r, Y1 h
3.3 进程监视器39
$ i, s' ]) N0 W( R1 V6 k( j3.3.1 进程监视器的显示40
" S  N, j8 R: i$ K0 _2 w8 L3.3.2 进程监视器中的过滤41
3 Y' _* ~3 Y& [) y! v- r3.4 使用进程浏览器(Process Explorer)来查看进程439 M2 s3 b& V( A& d. \& ]4 ^( Z: K. j
3.4.1 进程浏览器的显示43. {' U5 a$ [  Y  o# q2 ?4 r
3.4.2 使用验证选项442 t' L  Q) T! S$ T
3.4.3 比较字符串45+ ^" v8 g% ]. q3 H, |8 X# `
3.4.4 使用依赖遍历器(Dependency Walker)45
; `' L9 i8 @& C! Q* y! s' I& u3.4.5 分析恶意文档46
0 p  }: j- r2 K6 Q7 V  |( M1 t3 b3.5 使用Regshot 来比较注册表快照46
/ M( X4 G! r3 {: v3.6 模拟网络471 ~5 b6 `! k5 ]2 Z" u- x
3.6.1 使用ApateDNS47
5 j4 c1 s% k( ^$ M3.6.2 使用Netcat 进行监视48
* E7 ]( s1 P4 o/ ?, z) {; W# e3.7 使用Wireshark 进行数据包监听494 u  s1 b/ x# R
3.8 使用INetSim51
7 C: e" z8 P- C" O6 p: Q3.9 基础动态分析工具实践525 u( o! M  \# m
3.10 小结55- q9 a) H. H- L: G  ~- Q+ R2 p$ q
3.11 实验56: [% k! [/ y% C# {6 T  u" N
5 h6 z1 B4 B" K8 }4 ]+ y5 A

! r% K5 |; }. f* Z6 j& p8 m; n第 2 篇 静态分析高级技术篇$ ^) \1 W# \) |2 X

8 X( `* P, V8 W) V* R3 Z第4章 x86 反汇编速成班 60" a- {/ r, v  O$ g$ N

- n0 E' ~5 J/ {: d  P4.1 抽象层次60
# e" H0 B8 m- c# z& Z4.2 逆向工程62
7 P  R/ S0 A& l& `7 Y& g' a4.3 x86 体系结构62) t; ^' c7 M& B# v3 r, M9 _
4.3.1 内存63) H# {  A* Y5 s
4.3.2 指令64
5 u6 ?: g! ]4 f) @4.3.3 操作码和字节序64
$ j/ }( T- h& r4.3.4 操作数650 V; o. E+ T" f
4.3.5 寄存器65
$ T& l4 @) a/ h+ y2 D4.3.6 简单指令67
+ B. p& D/ f6 C3 w( n0 T4 W4.3.7 栈70
+ I% W- w9 b; ]1 I' v8 Z; U4.3.8 条件指令73
5 u& I% h1 E3 Q* @) v4.3.9 分支指令73
& R3 |4 d  m8 T$ ?/ {4.3.10 重复指令742 x% a% ^+ T2 q  B
4.3.11 C 语言主函数和偏移769 Z3 N4 Y8 I% o+ d7 ^
4.3.12 更多信息:Intel x86 Architecture Manual77+ I' u+ B1 d6 B3 v0 p
4.4 小结78! Y8 _. I6 R2 n1 v
1 w: B% ^$ N, M
第5章 IDA Pro 793 i( m/ `4 H, G; ]
* G- F1 h, X  t. J
5.1 加载一个可执行文件79
; Y8 [" q6 @* D1 {5.2 IDA Pro 接口81+ _2 D3 u% O  W/ x- s
5.2.1 反汇编窗口模式81
/ T& o2 y8 i9 \+ k- ^5.2.2 对分析有用的窗口83( t' V/ U8 U# k' c( t8 R
5.2.3 返回到默认视图83
, }2 ^3 s  H/ a8 `8 Z1 Q% ]5.2.4 导航IDA Pro 831 _' v& M% L% v
5.2.5 搜索85
) W! Y# a8 `0 T. r4 e$ w5 h5.3 使用交叉引用86
: l$ P6 v! p" B0 x5.3.1 代码交叉引用87
3 w) R+ m) ~' Y$ ^5.3.2 数据交叉引用88/ c# g( p* h( f- @2 ^
5.4 分析函数88
+ C" c: _6 o3 C9 C& O$ }9 H& h3 {! c5.5 使用图形选项894 A5 }% g) J9 A/ C% @' X  {2 ~9 K
5.6 增强反汇编91$ C2 l% \- _# f# F/ g7 q$ N0 R  M
5.6.1 重命名位置91
# {5 `- T' i0 b5.6.2 注释92" R! w( T9 ~( M6 G: K/ r. C
5.6.3 格式化操作数92
2 {6 D2 w2 U. u6 B0 G0 `/ d5.6.4 使用命名的常量93
, P0 ^# v; Y8 z8 q( F5.6.5 重新定义代码和数据94$ H& X! z% r) T6 e; X
5.7 用插件扩展IDA95
, T+ k5 E) {% l0 L' I3 F6 n& ^7 s$ t6 n5.7.1 使用IDC 脚本96+ A' K+ y  \% C
5.7.2 使用IDAPython97: a. k' X5 s9 n: s( Z2 f
5.7.3 使用商业插件97
& @* c0 ~7 z' @' O9 Q5.8 小结98" ~! [% p0 X% Y# ~. K5 X
5.9 实验989 e9 f1 s0 u6 [! K
( X$ N$ t* i7 N# J3 h
第6章 识别汇编中的C代码结构 100

' p# b: v0 U. R) U3 P: i0 w7 i  q7 F& t
: Y+ {5 L8 ~, W# [* U6.1 全局与局部变量101
  b$ A! D% [4 @) a2 O# B7 _7 o6.2 反汇编算术操作102. e5 \+ f5 q: C# w9 }/ p
6.3 识别if 语句104/ R; V5 T4 r0 s. A* P
6.3.1 用IDA Pro 图形化分析函数105" I. w9 q. m7 Z
6.3.2 识别嵌套的if 语句1061 e5 F- y( ?% H* B
6.4 识别循环107' P/ C# ~/ Z+ g3 R
6.4.1 找到for 循环1078 N+ O: ~1 w9 H: t
6.4.2 找到while 循环1094 g6 e4 w& |  `3 E  ^
6.5 理解函数调用约定110
, _$ i. c8 J% i4 o  [0 {' Z9 `6.5.1 cdecl1109 P) p; l% ]8 O7 Y0 Y* j+ d
6.5.2 stdcall 111
" w  d1 u* |& u6.5.3 fastcall 111
3 v. R# r, Q. M2 A. a- p# _& a( O6.5.4 压栈与移动 111
& i1 z; b: w% \9 n6.6 分析switch 语句1126 c3 X- @# b9 S! C4 F
6.6.1 If 样式1124 k% X% n# T4 Q( s
6.6.2 跳转表114
3 O2 h4 d0 p) M6 H1 b9 `5 K' [# F5 K6.7 反汇编数组118% T' g7 j/ G: h$ m" j" m5 g
6.8 识别结构体119  W' ?) @1 H: |4 _* C, B# |# g
6.9 分析链表遍历121
2 P1 a% g3 X% y, X6.10 小结123) G( s" ~# o- x1 k' v! z1 t0 j6 N- w, G0 G
6.11 实验123& H6 O4 m: X7 C7 y* c
7 s$ _. P4 H5 V/ F) _( {4 ]
第7章 分析恶意Windows程序 126

2 L7 J8 H. a( t8 I! s% M  ]6 ^) K0 ?  \
7.1 Windows API1266 S/ I# G' ?* v. N: Z0 P/ F
7.1.1 类型和匈牙利表达法126
( j7 X$ t3 B7 ^- v. K. e7.1.2 句柄127+ Q) ^& @8 J% M. [
7.1.3 文件系统函数127% M; C/ |' D! H, }+ q$ L
7.1.4 特殊文件1283 B( ^  j( P# z+ R; H/ a8 L
7.2 Windows 注册表1295 V2 d! P) e* D6 E7 w
7.2.1 注册表根键130
( R' L8 ^0 ?2 {) o. t. @7.2.2 Regedit131
8 i- K  J$ f) C. r4 X% ?7.2.3 自启动程序131. G+ H  c" r' _1 _9 B4 Z
7.2.4 常用注册表函数1311 n, G) j, H( l( x( f
7.2.5 练习分析注册表操作代码132
) G9 r, [8 e" S$ @& }7.2.6 使用.reg 文件的注册表脚本1332 F& z7 i5 A. }
7.3 网络API133
9 b* d! d; R. x0 L, o" Y9 r: g- j% o) g7.3.1 伯克利兼容套接字134
0 e! x  l4 {& H9 |0 y7.3.2 网络的服务器和客户端134
+ ]9 _# q' X( Y% e1 d6 d7.3.3 WinINet API 135
7 u$ ~, N% K- p% U0 J7.4 跟踪恶意代码的运行136
% s3 M/ S: {- U! W7.4.1 DLL136
! ~; Q6 B( ^: q' Z1 z: s; F7.4.2 进程137- P5 H; w/ R$ F* ?
7.4.3 线程139
. v0 V  A: [  B; g3 W& _$ Y( {0 L7.4.4 使用互斥量的进程间协作142. w2 d, n* i" H' p; t1 R
7.4.5 服务143, t' r9 X. w8 d, d# S  v
7.4.6 组件对象模型145: |2 Q; ?8 Y/ s3 D
7.4.7 异常:当事情出错时1474 D% n9 O* T0 r% c- T( K* C
7.5 内核与用户模式148
$ y& d, H6 @; R6 E: X) e2 T1 Y; d7.6 原生API149' Q5 }) Q: c! m* k; W
7.7 小结151
/ h% u4 M9 G; W- K' h7.8 实验151) r3 j* U3 B$ d2 G  k# C7 L

5 @$ `3 ?5 d* M- ]5 s0 S2 Y1 v, r( z4 z/ d) [, S' @
第 3 篇 动态分析高级技术篇
: V* M: w4 T% V% x+ T2 |1 ?, h# K9 ]6 L
+ l1 ~8 h- L; ?$ F第8章 动态调试 154

" Y" I3 _/ P4 S# q4 q  x5 A7 t  W/ \( J4 M$ P4 o1 h  W5 ^( w- S8 v7 S
8.1 源代码级与汇编级的调试器154! H) }( {3 h+ D& s3 Y; K
8.2 内核模式与用户模式调试155! k& ?4 Z' _8 W4 S3 ?( `% o/ }# C
8.3 使用调试器155
1 B4 ^7 g) C9 b8 a1 z* d9 c) H/ L8.3.1 单步调试155
' _8 f9 ^/ e, |- a/ W8.3.2 单步跳过(Stepping-Over)和单步跳入(Stepping-Into)156
$ u7 z8 A) |: J6 g' l8.3.3 用断点暂停执行157
# X, n) @. k; z  N' Y" O8.4 异常161
  m0 t; t6 P1 |8.4.1 首次和二次异常处理162& R+ ?. n& D8 S0 K: f0 ^' r6 D
8.4.2 常见异常162
) j/ @& {% A0 z5 E( M; s9 M8.5 使用调试器修改可执行文件163; H: _3 M! T# C' I% O8 S
8.6 修改可执行程序的实践163
, ?1 [% H$ W6 x* b; ~9 U8.7 小结164
+ G) e# w4 \; M8 P" q0 ?+ ?6 \  M1 ]. D6 H! O+ s: G
第9 章 OllyDbg 165

: Y) {; G2 A/ Z& \  k1 }/ e* A" ^: [
9.1 加载恶意代码165! i% U% W+ h4 r5 N  T; Z& A
9.1.1 打开一个可执行文件1656 E6 Q7 Y6 [  U/ H3 I
9.1.2 附加调试器到一个运行程序166% j; |% X1 M- c2 N) v/ F0 q+ v0 e
9.2 OllyDbg 的接口167$ h/ n& o7 Y9 B& e4 q
9.3 内存映射168* F" I4 t6 }. d+ u, s$ [  j
9.3.1 基地址重定位169
2 z$ @6 O2 l% q8 I9.4 查看线程和堆栈1707 i5 e  Y6 J; i6 Q+ l" q& y" x* ]
9.5 执行代码171+ u0 {! Y1 T5 ?" a) Z/ @
9.6 断点172( K+ R# |. E. x1 {0 h" |3 o1 l# A5 Y1 _
9.6.1 软件断点173% ^' G4 W2 R/ g# _6 T
9.6.2 条件断点174
) T1 J9 L* E: ^$ R1 G% `, ~6 K9.6.3 硬件断点175
  i7 ?) V- k' g2 e9.6.4 内存断点175
- i7 p3 y& U% C  W) v. _% |9.7 加载DLL1767 j3 n" J7 X8 F. f" O3 C4 s
9.8 跟踪177
5 @7 @. J; i. X' c1 S+ z) @9.8.1 标准回溯跟踪1776 h# N, c& ]& ?
9.8.2 堆栈调用跟踪178
4 v, U% v+ n7 x+ e2 i2 s9.8.3 运行跟踪178
& ~& a( R- s* j. x  P2 l$ g9.8.4 跟踪Poison Ivy178
0 B3 n, f3 F) a6 i, r$ q. H9.9 异常处理179
* i+ Q8 u% Z$ m8 |+ ^" r9.10 修补180! m. U4 E% A; u* l
9.11 分析shellcode181
; w$ i2 @* B" @; Q# Q( R8 b9.12 协助功能182
5 w2 S( W- u$ m: o5 L9.13 插件182# ~/ m" N" k- u4 C, e
9.13.1 OllyDump183
5 X  C6 c: E& k+ }* t9.13.2 调试器隐藏插件183' N" `; U) r* [/ t' v) w4 d: O/ g
9.13.3 命令行184
9 r2 f; X- Z' K4 T3 C& h) o9.13.4 书签1853 s" K" V  p0 B
9.14 脚本调试185! U* Y0 x/ m' y+ q  G+ O6 Y# a
9.15 小结186/ b; A1 Y1 p: [0 d- n; s5 s5 [! N% B
9.16 实验187& x7 B1 Y: ~; ]/ G9 C# q
4 {" H/ Q& d. ~9 d! o
第10章 使用WinDbg 调试内核 189
) v- G+ h) f8 C+ O' `- C
2 a" W& L0 _8 i10.1 驱动与内核代码189
& d7 b0 U! y* p' |" V) j10.2 安装内核调试191. {6 T9 B! i4 x2 y* d7 j, b
10.3 使用WinDbg193
9 x: G1 d" A) i$ {1 {& c; ?  p10.3.1 从内存中读取1947 v- d2 \( ]9 D" Y$ n* s4 p
10.3.2 使用算术操作符194
; r& k8 Z7 J5 i6 U1 u10.3.3 设置断点194
* l; o; C+ J5 O' s3 l10.3.4 列举模块1956 P" L! P  U1 [% M/ @. D1 {& C
10.4 微软符号表195
6 E6 X0 c3 l" K  s9 s10.4.1 搜索符号195
# A! X" p( E' c/ N- v" [* [7 I3 L10.4.2 查看结构信息196( L+ y: `9 a0 ~2 P
10.4.3 配置Windows 符号表198
/ h6 _0 B  H6 |2 s8 v$ b; Z/ H10.5 内核调试实践198
2 M! P% o! P* z4 T- A: {9 G' b8 }5 M10.5.1 用户空间的代码198
- ]& s3 S/ E& n9 ^+ W# n+ c10.5.2 内核模式的代码200
* v  r. F; N1 s: B6 z* L3 k10.5.3 查找驱动对象203
7 K0 G8 H, V5 I. C* u3 Y: q10.6 Rootkit204
, k) k+ V. H8 N& F, q: I4 r10.6.1 Rootkit 分析实践205# e2 ]# a2 E7 c/ |2 ?, k  b: \
10.6.2 中断208
" E* w6 r- \$ l$ Z. X% T2 K10.7 加载驱动209
5 V9 W/ X) z# j6 g5 h: l' g9 e. D6 g10.8 Windows Vista、Windows 7 和x64 版本的内核问题209
* _. M# b4 I1 u10.9 小结210
( s) v/ {' z% {10.10 实验210
2 ^, L" Q3 O' t# C; z, P: ?: L* ?! @4 c; o4 ^7 ?
: @  a" g4 T* G& U% [
第 4 篇 恶意代码功能篇
( J8 ?3 a' A! P% I* b& M- y! D4 u: ~8 L! {) L$ K! k- O5 Y; @
第11章 恶意代码行为 214
( U4 h  ~" P2 w6 j: @+ ~* A) e2 y+ n: P; ^, G( X+ V
11.1 下载器和启动器214
, P1 A0 C- k2 t2 x" I8 {11.2 后门(backdoor)2147 _. d/ g% b# d5 Z- q8 r! q% T
11.2.1 反向shell215
: B. i  |( Z  b3 H8 z11.2.2 远程控制工具2167 t- n& S# X9 w2 F# @3 d
11.2.3 僵尸网络216$ V" F6 w4 o  w  b- x3 {4 x
11.2.4 远程控制工具与僵尸网络的比较217$ r( ]! {9 w" y
11.3 登录凭证窃密器217
8 g' y3 J; {& K; X1 v11.3.1 GINA 拦截217% N9 {& f- H$ T* u3 b, S+ j7 ^/ N& q/ `
11.3.2 口令哈希转储218
' g9 J, u* l& K. _' H3 h11.3.3 击键记录221
+ J9 ^6 h, S" r, h2 G  A1 p0 l$ F3 U11.4 存活机制223
" H) [* ^6 L7 z11.4.1 Windows 注册表223
" A8 X1 t; S* t11.4.2 特洛伊木马化(Trojanized)系统二进制文件225+ |: ]: k# g! w! [/ V. l
11.4.3 DLL 加载顺序劫持227
  e4 ^& r" w- g, Y. O* C. S; x11.5 提权228
# E" o5 Y. M  F. {) Z. j/ _3 O11.5.1 使用SeDebugPrivilege228
8 i  C5 b( S) H11.6 隐藏它的踪迹——用户态的Rootkit229
0 D$ V. i9 R+ d) z8 e  e6 n# o! l7 N11.6.1 IAT Hook 2305 x* M' U- J1 E$ T
11.6.2 Inline Hook 231
' g0 \- f% ^3 v- c! \$ n11.7 小结232( K0 P2 P& R# n
11.8 实验232+ X7 O* x* g: S  ~( k
$ `1 F9 b1 _8 T- h8 _! O8 E
第12章 隐蔽的恶意代码启动 234
/ q* H, P* `; @. Z- [' v" V7 B" j( g4 m
12.1 启动器(Launcher)234+ i* N1 @8 H; c
12.2 进程注入2340 Q0 R2 j( ?9 B4 D: z
12.2.1 DLL 注入235' C* E6 `$ }7 o8 ?2 ?
12.2.2 直接注入237
7 j' G; {7 u, Y! }4 c% w12.3 进程替换238
8 {" _: [- Q$ F  O12.4 钩子(Hook)注入240
; B& K& [) Z8 o* }% ^$ i4 U% |12.4.1 本地和远程钩子(Hook)240$ n- {3 \# W( r
12.4.2 使用钩子的击键记录器241  [% b* m! v6 y# j
12.4.3 使用SetWindowsHookEx 241% v* E) j7 }, G# W( e
12.4.4 目标线程241
. H9 o! I; @' P) N8 s& m+ g$ f1 m12.5 Detours 2424 {3 u" e6 N' T' C2 J' O0 L. W
12.6 APC 注入2433 F; R# P  }  w% w# i' ^
12.6.1 用户模式下APC 注入244
+ K+ l2 P" e( z! B& @! W12.6.2 内核模式的APC 注入2452 ?7 N; q2 V. x5 y1 f
12.7 小结246# ~7 S5 e( @7 Q) E* A: L9 d+ Q' i" q
12.8 实验246
6 K# V. B' p. r( M- r# l- _$ @; S7 d6 ]
第13章 数据加密 248
& ]0 W& w2 I2 O- V  R; F% }4 Z" G
13.1 分析加密算法的目的248/ ?1 w2 |! c" C) a2 b# M
13.2 简单的加密算法2486 n' u, Y* a1 y' X1 c; l
13.2.1 凯撒密码249# _/ t% b0 f+ f) J/ W
13.2.2 XOR249
2 [5 {9 @4 Q  }4 O0 V) W- w- n13.2.3 其他一些简单的加密策略254
8 T2 q5 J4 w/ b13.2.4 Base64255
7 N; G+ N( m  b* d13.3 常见的加密算法258
5 h3 y; I, A, c% D$ e+ r13.3.1 识别字符串和导入259
, R) n9 L: N3 P7 L2 c, [2 J2 M13.3.2 查找加密常量259
7 v: c; F  z( ~3 J' u13.3.3 查找高熵值内容261
# S* K- {! J7 J$ o13.4 自定义加密262
) n5 g$ H( N0 X; _' s" o( o13.4.1 识别自定义加密263
: W3 [5 v; i1 W# s) @( ?13.4.2 攻击者使用自定义加密的优势265
: N+ h5 A7 ^+ k2 _+ R13.5 解密265, a$ L4 D2 o* g! O) ?4 |9 y
13.5.1 自解密265( z. K) b: M, e
13.5.2 手动执行解密函数266
; A% `4 R; v. H' s+ Q* _% U) ]13.5.3 使用通用的解密规范267
1 N: G5 Z; z$ s/ A2 g+ ^13.6 小结2706 }  p" g) y- S- G' \8 m9 \
13.7 实验271
5 L, S4 v6 I: T' Q5 z% s8 Z
0 H+ m: ^7 E: _* U: d$ L3 D- B# g第14章 恶意代码的网络特征273
/ U3 k1 I- Y2 k3 h* f& g5 J: m5 K/ Y4 t
14.1 网络应对措施273' {  W: U  R  D4 ]
14.1.1 在原始环境中观察恶意代码273
$ o" |. a5 n/ }5 D* L14.1.2 恶意行为的痕迹274
. y7 E* }, W; V  v/ X0 O8 ]5 g1 I14.1.3 OPSEC=操作安全性275
1 L- a6 m3 B$ Q4 t14.2 安全地调查在线攻击者275
3 n$ `: c) h7 L0 j14.2.1 间接性策略275
% c: Y8 _) y8 `4 s14.2.2 获取IP 地址和域名信息276
- M7 _4 z5 j7 A! D; L6 |14.3 基于内容的网络应对措施278: [" B! v& z* n$ i! u6 V2 N% K& S
14.3.1 使用Snort 进行入侵检测278
, m) U: i, Q5 K; V# V14.3.2 深入观察2792 V% q0 g: o) {. s
14.4 结合动态和静态分析技术282' R9 C" ?  ^4 I
14.4.1 过度分析的危险2833 \9 }2 ?9 f' z' x5 B
14.4.2 在众目睽睽下隐藏283
. k. D& A) S/ S. n14.4.3 理解周边代码286) S( d+ z: {  y- o/ c6 s; B0 a' W
14.4.4 寻找网络操作代码287, \4 |) M  ~* h% U5 z
14.4.5 了解网络内容的来源288
! Q) J1 _5 D3 B) X$ M7 E14.4.6 硬编码数据 vs. 临时数据2892 k* L. z4 I: t( u, j8 B
14.4.7 确定和利用编码步骤289/ r/ r! N1 {  \7 P* N
14.4.8 创建特征291
, E2 q! e/ w+ @# X3 F14.4.9 分析解析例程292( f1 Q; c, u' ~6 i9 J) O9 t
14.4.10 针对多个元素294
8 p1 j  f1 B% E4 {) y- e" a6 t" o14.5 了解攻击者的意图295. i+ P) X$ N7 `. E
14.6 小结2960 y  u( }) g0 J  r; \! }
14.7 实验296
, ?. J* g  u9 p9 m% H  n: Q9 @$ `, c9 ~4 X; _- O8 g
1 K4 S, z6 W3 D( q# r' G
第 5 篇 逆向工程
1 ^5 w+ c/ i: ~, V5 `) r  i1 k& H" ~; X- d
第15章 对抗反汇编 300
' u6 q2 \2 F9 O7 g& {3 q2 W! U
9 W4 u) ^8 ?4 j! L3 l/ c/ h/ P! j15.1 何谓对抗反汇编技术300
' ?  h6 ]  p3 ]* A( m3 Q! k4 R15.2 挫败反汇编算法301
  l; i, b) Y$ q4 F15.2.1 线性反汇编302
, f9 [  S9 N  H" t' Z8 o8 O15.2.2 面向代码流的反汇编303
, D& e6 Y$ ~' O2 h5 x! d8 e15.3 对抗反汇编技术306: ^1 i- l0 D4 n0 `1 [$ Y7 q
15.3.1 相同目标的跳转指令3063 w+ E+ ?3 C# e$ O
15.3.2 固定条件的跳转指令307& j* `1 s, e  s! j0 q: O
15.3.3 无效的反汇编指令308
, D# Q0 I( D* N( ^15.3.4 用IDA Pro 对指令进行NOP替换311
) R& d- W- Z$ c/ [: {% W  K15.4 混淆控制流图312; j0 Z3 Z; A' h  ?" {8 U
15.4.1 函数指针问题3120 V9 |( D2 b  D) h
15.4.2 在IDA Pro 中添加代码的交叉引用3139 [3 Z+ r8 U5 d$ Y' H5 _
15.4.3 滥用返回指针3137 q+ q" z( }9 f/ U8 I
15.4.4 滥用结构化异常处理3154 B- ]/ f3 R% V; s. \  b& g$ w
15.5 挫败栈帧分析317! t8 S4 _; Z( S0 b0 O0 b
15.6 小结3202 E* Z* e/ i' B. b. G
15.7 实验320/ ^. s6 ]) a. x$ c3 |5 ~) A

! I( _" i5 n$ n7 ~: ?* s& M第16章 反调试技术322% W7 k5 G% Y8 t/ G$ m3 Z' Z0 U

$ ~, `3 Y4 O" X) v2 a+ y16.1 探测Windows 调试器322& ]) {# S! \* V4 i( h3 l8 n5 ]0 y
16.1.1 使用Windows API322
: k( w3 n" i3 W$ n, V% @0 }- r0 g16.1.2 手动检测数据结构324% ~5 ~! r5 \2 @
16.1.3 系统痕迹检测326
# @* E$ B. A1 o3 }  A9 O2 i16.2 识别调试器的行为3279 y  f! W7 v3 T- u# l) J7 j
16.2.1 INT 扫描327
- Z' c+ R( L$ y6 ]9 O16.2.2 执行代码校验和检查328
; `$ \. _7 |* L1 \% y  F% C16.2.3 时钟检测328- c/ y" X$ C# ~: m- A7 Q; o, A
16.3 干扰调试器的功能330/ ^" k' C1 m- b
16.3.1 使用TLS回调330
' j. ]: J! K, d* I9 k16.3.2 使用异常332( T7 g& w+ d2 }/ j/ j, _
16.3.3 插入中断333
/ `: V% f; u+ r6 f16.4 调试器漏洞334
' ^; I# _8 `7 a. T0 w1 N16.4.1 PE 头漏洞334& N6 m0 W5 O- u- _5 k
16.4.2 OutputDebugString漏洞336
% e: _% U9 K& v7 r" b16.5 小结336: V5 v5 E( b, M! q# q0 {6 _1 g
16.6 实验336% C0 h' M# c7 ~$ n
2 i, j. o  h1 K7 t' g+ L6 H2 ?
第17章 反虚拟机技术 338) q) j* H, R4 N: W% [+ x4 R, j2 q

( t* N4 U  B4 h# U' X17.1 VMware 痕迹338
9 l+ [+ L+ U' ~- c8 K17.1.1 绕过VMware 痕迹的探测340, B& ?2 _9 I9 G: M) \
17.1.2 探测内存痕迹342  t  k0 u* K; N/ k
17.2 查找漏洞指令342* q! g$ o* H6 K
17.2.1 使用Red Pill 反虚拟机技术343
' X. U7 k: t7 \17.2.2 使用No Pill 技术344( ^3 h9 u! K& W) p( z7 N
17.2.3 查询I/O 通信端口344/ D4 ]8 A( Y8 L* g' G' v5 E
17.2.4 使用str 指令345
  R3 f( E. V' K, o17.2.5 反虚拟机的x86 指令346
- E3 T0 p% p! C& m5 m" x# p$ U17.2.6 在IDA Pro 中高亮显示反虚拟机代码347
$ R& U# _% Q% G7 E4 q17.2.7 使用ScoopyNG347
  s! r3 ]: G' N17.3 调整设置348
2 L) B' `  ^( k7 S. ]- W17.4 虚拟机逃逸349
) m6 X2 j% Y4 O6 w3 ]9 e4 C17.5 小结349. f" x/ p$ ]" X, s
17.6 实验3491 v( I, h( ]' {8 ]) k- {* Q% z

2 @& h" F+ j: W. T第18章 加壳与脱壳 352/ j0 [. X$ n8 E6 R

3 K; i: ~) p# V* K) I9 Y6 M18.1 剖析加壳352
5 N: o  X* V: I18.1.1 脱壳存根353
3 t. ~4 m" u( H* }9 C+ v3 O( w18.1.2 加载可执行文件353
) o& V4 r7 D0 i: b3 y, f18.1.3 解析导入函数表353
8 x* }) s' j5 u$ b6 J- I0 F- n; ~18.1.4 尾部跳转354
+ T. M- X. r( w; k2 E5 o, w18.1.5 图示脱壳过程3540 N8 v( S8 u) S3 y( [7 p
18.2 识别加壳程序355
- E4 ^" J+ U* Z" {0 I/ B* c18.2.1 加壳程序的标识355/ ^  G$ x5 K! q6 w7 I! v- n3 P
18.2.2 熵计算356  `3 e$ Q7 C7 `3 {6 A
18.3 脱壳选项356
& G; A' c% @6 x4 e7 a5 j- \: a6 _18.4 自动脱壳356
/ M/ W0 h' M0 f18.5 手动脱壳357
* ^2 {6 T" _. H18.5.1 使用导入重构器重构导入表358
8 b, c( a% k1 {" B2 [8 _/ G0 {18.5.2 查找OEP3591 h+ S; P* q0 \; B+ Y
18.5.3 手动修复导入表363. \4 E! j% O( B5 h6 l, M
18.6 常见壳的技巧与窍门364: l6 o! H0 k3 u% p) O2 Q5 i, p
18.6.1 UPX 364. G% r/ E" E! Y, B- V; j
18.6.2 PECompact 365; o# P, @# L/ m" R
18.6.3 ASPack365
' H+ u, R$ r, \0 y18.6.4 Petite 3659 K5 A0 B: E, m( @6 A( K6 w9 u% h
18.6.5 WinUpack 366
' q; K! u+ L' V. p18.6.6 Themida367
6 c2 u" e- P# F& c5 G' C18.7 不完全脱壳情况下的分析368  v; k* C  b" ]7 C2 `4 }
18.8 加壳DLL 368
% w- d8 D! p6 R( d( H& h  F18.9 小结369& k  {' T3 U) i- p6 `
18.10 实验369+ b1 h# y4 L3 }6 t
7 o0 U1 [: a/ V& s

# G# ]1 i+ p0 O& E3 d/ V  X第 6 篇 高级专题7 M- o2 r: v$ b- r8 Z/ u1 |

! J2 |8 N& q+ z2 S第19章 shellcode 分析 372& {$ A1 C/ [- {. {/ P0 k6 s

( i# R) s. ?8 D% h5 u% _3 [' s19.1 加载shellcode 进行分析372
5 R+ O' l# ^4 r6 Y- n( {19.2 位置无关代码373
8 t4 x# |/ c% s* P  v  \: v19.3 识别执行位置373
  \2 y. k. h8 i1 L+ M19.3.1 使用call/pop 指令374: r* [2 {- h+ V0 G& s
19.3.2 使用fnstenv 指令376
5 o/ F6 [: m* `19.4 手动符号解析377
! Q! y8 X" V9 [2 E, M* a6 d1 L19.4.1 在内存中找到kernel32.dll378
4 \$ R0 @, P' h, F8 H6 u19.4.2 解析PE 文件导出数据3808 f4 R7 U; e8 u
19.4.3 使用散列过的导出符号名382
1 [$ Y  `% J; X19.5 一个完整的Hello World 例子383- Y( ?' F# w8 X8 M+ ?, l# |+ ?
19.6 shellcode 编码3850 `) A' g3 L. n
19.7 空指令雪橇387/ c2 K: H7 w; A% m9 l' U
19.8 找到shellcode387" ~8 R3 _+ t5 G8 c
19.9 小结3888 \7 I2 a7 E* E/ N
19.10 实验389
+ m7 O( Q/ B4 u8 }8 k" u" u( _) k# j, Z  t! [# A
第20章 C++代码分析 391
$ y; `/ I8 z+ |5 n/ e
  h( q* R: n: ^, t6 @! I/ I9 h20.1 面向对象的编程语言391+ V" d* C: J# `' O0 M
20.1.1 this 指针392( P* B9 h9 B$ C/ z5 G' u
20.1.2 重载与修饰3942 Q$ e* J( V/ |7 c9 F$ J
20.1.3 继承(Inheritance)和函数重写(Overriding)395  S! V8 D/ A2 r2 A
20.2 虚函数和非虚函数396/ M# o9 X/ b, ?4 x) `! ]
20.2.1 虚函数表的使用398
4 Z2 W' L# D2 k- x20.2.2 识别虚函数表399% F0 v) \$ d8 ]% B8 j/ q
20.3 创建和销毁对象400
+ L0 d$ y) \3 c* X- i- U( \5 F* E9 J20.4 小结401
9 B- @& P+ Q" U3 g& v( w20.5 实验4017 H9 |! }% D$ [8 c* I
7 m$ ]6 T' ]* m) a% v- H6 s
第21章 64 位恶意代码 403
# ^3 T# |! W0 d7 G6 V( I- X+ u* G6 D1 P9 N; h+ F4 }5 `1 ^- m
21.1 为什么需要64 位恶意代码403: Z8 N. @2 l$ {. e# @" c' \' A
21.2 x64 架构上的差别404& y2 ^1 m- x: @% X% Y, M% }
21.2.1 x64 调用约定和栈使用上的差别4068 |/ e& r5 U' B( ?5 b5 }* F5 a* T0 a  H
21.2.2 64 位异常处理4087 v$ J8 `& x( T4 y+ r
21.3 在Windows 64 位上的Windows 32 位408
% `! e5 \7 o# t0 a7 c) c) S21.4 恶意代码功能上的64位提示409, ^# U3 \. G& i
21.5 小结410  {$ Z/ a7 ]/ w; j
21.6 实验410) t* r& |2 i& U! \. v
6 Y" l  Y) r( U. m+ B
附录A 常见Windows 函数列表 412& R8 n4 I% R% x1 t* x1 |, b' z) o

% w" J& Y0 O" S7 y7 H% m( Q7 e4 l附录B 流行的恶意代码分析工具列表4241 u4 e( J; m% d- u! Q

! O, u3 Z1 ~; B6 l4 c9 ]( A4 \0 \2 X附录C 实验作业参考解答435& K) x8 C, w( D1 m# b  u2 n. e

! s- V! R( C. R; i# O2 |2 X4 E附录D 致青春,基础软件开发的中国故事 691
6 L: l( R4 [5 P
8 c2 M3 P3 X* w附录E Syser 操作入门 695
* {/ i4 {7 Z' z" G$ [" b& o7 O7 ^0 F& e! H
& V) H  E" I! r$ `; B
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-26 00:13:53 | 显示全部楼层
すごい
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-26 08:26:25 | 显示全部楼层
二楼,甲鱼兄要出恶意代码课程吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-11-26 09:51:22 | 显示全部楼层
什么编程语音写的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 17:41:36 | 显示全部楼层
鱼蛋代码 发表于 2016-11-26 09:51
7 R. B3 R2 J% Y+ L什么编程语音写的?

1 A* u* g( w0 M; n$ A# R: A- I什么时候出病毒查杀实战
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-17 18:04:42 | 显示全部楼层
路过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-26 21:17:30 | 显示全部楼层
看看路过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-18 10:19:29 | 显示全部楼层
感觉很高大上,但语言学的一般般还有待提升勒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-6 19:25:19 | 显示全部楼层
好想学呀,可惜看书看不懂呀~!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-18 17:34:37 | 显示全部楼层
感觉很厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 11:38:15 | 显示全部楼层
感觉好厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-12 20:45:30 | 显示全部楼层
good book
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-21 20:18:16 | 显示全部楼层
好书,详细
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-5 17:28:05 | 显示全部楼层
看着就挺难的,应该先熟悉工具
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-6 20:41:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-2 12:01:35 | 显示全部楼层
要做一个很牛逼的程序员,网络安全方面有所建树,完了给国家做贡献
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-8 21:57:05 | 显示全部楼层
路过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-10 16:51:09 | 显示全部楼层
新人报道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 10:45:23 | 显示全部楼层
好牛逼的书啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-28 09:37:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-8 09:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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