返回列表 发帖

[原创文章] 木马免杀之免杀输入表篇

最近和一位木马免杀牛人交流,感觉新增进不少,/ }8 X7 l, f3 m4 L9 N3 M

# K5 f6 Y/ g9 @0 i. l5 w特拿来分享给大家。) Y- q! v' e" V

$ |/ N6 G0 k. c/ \0 W1 k% V今天我们不提我们国产的那些杀软,真的垃圾的要死,
! c  r3 p7 D+ d; V; b) D+ j9 R# x$ I. ^' K
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表. F" i* |0 a# c$ f) M
, z8 V* g0 Z7 ^6 \2 s) L$ R
我简单的重建了输入表就把瑞星搞定了,
$ r; o. p! K  B- ~. ?. c3 m; r" T" s3 }! D, o0 [  {
失去信心了。我曰8 [2 ?- @3 T' j/ H
0 ^- ~$ D0 S4 T2 g9 b( b
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。, g; t, A2 [$ j. x9 o

/ |1 X; W" g0 _' K% n/ o首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。; h/ J" x7 ?+ X

6 d0 p+ I3 m( L: M/ z, p9 s3 h外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。* P/ x+ S" M# v) v9 ?# }3 x, V

; k+ P# d0 h: V# Z" ]$ p高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
# S3 K8 q  D8 Q4 g8 t; R1 D+ `4 i3 R; d! x8 n9 K1 B, F
过了以后再调到最高,再做免杀。/ n2 m, ~, }: B
( j2 N. D) S; o
以上是废话,
7 B: y8 d5 J1 |1 D5 @' w; V# o5 Z: p; k" K: d$ a5 i
好了,下面我们来说下常见的免杀输入表方法。
; s3 X& N4 g' K0 f8 I8 G" ~7 u
) h: Y: g, [, I+ N9 E一。移位法9 H& j6 q2 I% j% Q! |( [: Z0 T, K

- J* t3 s! X% A8 g( Q这个已经过时了,我们的国产杀软及时的跟上了时代,
" }3 M: O$ ]0 ^' p4 ~- J# T# {" @- p0 o6 B  Z
移位法在去年过金山和瑞星,还有江民都是可以过的,
! S! P+ p4 r. o% {: `4 E  z1 \, \8 g
6 `/ J4 p9 P1 N现在的杀软智能化了,移位么?呵呵 ,追杀你。: @! c) M) u( N) F. C, a
1 m1 R  Q: A" W$ [& ]# q
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。; M+ o3 p* J8 I4 g6 R, X7 V

9 A; Y0 F! k- B5 y$ M' Y! W二,重建输入表
! M) c, {6 [, i; R! v
+ h; B* U  [8 b# ~效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
: G0 b7 W$ Q; s5 \/ E! V5 K2 @& b" D+ \! O5 m* R- ]  y: e
这里我介绍下,, l/ j* |, o) l( ]6 S2 V8 z

) A5 y+ g% `# o7 B7 o! L; T: Y3 T4 K用到工具:; Q3 F1 h; N6 @8 k( c* s
importrec1.62 ~3 ]$ l2 F1 [! e
od/ r) g# F9 Q7 ?$ G
c32asm5 a; r8 J/ c/ G, e9 C5 a  i6 |% d
loaderpe
9 i- E/ Q& G8 j% c$ w, M这里我们简单的介绍下,如何重建输入表
; J3 {- q- V7 l) }1 @1 Y2 ?+ |
& n4 A/ W/ B: g% s9 I" \+ {1 k首先吧文件拖入od,打开inportrec1.6
% N8 P. n/ R* T, V1 O! p+ k6 i
4 W0 v$ C7 N, Q0 \7 |如图 选择拖入od的程序,
/ V8 {/ @9 e* B& i; v; G! }% F- |* Z- R" \* n3 j3 R
0 }" p  `" }# O% k& o. A$ ~
这个时候,我们打开loaderpe,
) c  k; X) @( Z
) A5 Y( j5 {, ^) [0 K拖入我们的木马; s0 @( p$ m7 k! I; S' |

9 [+ B* J1 G4 ^# N选择目录,
$ j. p5 p) y6 `
& {% Q% Z$ ]* V- a$ |我们看到导入表这里。。。' C! S1 c) P; j7 k1 {9 y
  U2 n: p3 w; V8 V: O) U
如图:
) k3 B8 u0 l5 V' w' u' H( V+ s, R& ]6 I7 X' c2 X1 i+ P  _4 m
( g+ q7 d1 }% h' h4 z
RVA地址是0001D000  大小是0000154C- b4 A9 I" m2 R+ l' L
8 \4 Q5 _5 A9 r' k3 Y1 C
好的,我们把这两个输入到import1.6里去, u& ]6 k9 U1 [. Q
. u7 ~, |& h' ?* I7 @
就是在“加载树文件”那上面一点 , q0 B( }- U( H2 b5 V# G

6 D& P2 C/ L7 p/ |输入RVA的地址和大小。; Y1 B; X* E" B. D: Z
& \: X5 O' C- D
点击“获得输入表”
; j  k1 W' G9 }6 U+ j
/ Y4 H# Z1 \# K/ Q然后点击“显示无效的”# b: z3 e* c; T. ?

6 S/ b1 p9 ]4 u6 L" k4 |接着importrec会自动列出
1 I1 e& C! I2 w2 z. d& [7 M7 P( p# [2 _
我们把深蓝色的字体  右键   剪切无效的指针( U0 J4 ]7 f2 V, z' P4 S9 u- q8 \

: w9 o  [  a+ G! T' @% Q+ ]; D( y, D( H- a) ~6 ]4 `9 n0 B8 m
最后,我们点“修理dump”$ Y' R1 T+ j" q( I& g5 t' f
6 R/ y& L, p* b2 J
选中我们的木马就可以了. x7 J$ R! G, D$ `

. k4 v" @& T. U0 u! q最后我们要用到c32asm
9 a+ Q0 ]+ a! R& t) D
1 g! g  l5 ~$ G/ B我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。2 Z& C5 L+ D! ^7 I. P9 b" W; H
' M3 [8 p$ C- e7 W! n
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)! O3 {/ w0 P. O! {
. S6 ^  s$ a$ o5 v: D: _
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
: y3 V, u/ {5 `  O' i0 N4 n) a3 Y6 M8 Z9 R) z8 j' i
我们把马子拖入od的以后,打开了importrec1.6
* L0 _. F/ G) d
: [6 E& r* w1 m& |" D+ V在选项那里,选择根据序数建造输入表和创建新的IAT0 m  V! s( r& [. e4 e- z+ ?

& M7 |. m- Z& N2 B如图
8 k! D, N/ d5 j7 G, d( i0 ]6 x
! A- B  X) v0 L  f) K& V" k' q
/ F9 a; I/ k5 {& Z! N以后的步骤照上面的方法继续就可以了: n% e! d9 f; u% Y8 K

/ ^1 L8 q2 I! F0 M5 K不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
" H3 m: Z7 t& m6 s5 T9 R  S
( l3 P, l- ]: _2 ?9 e* l* @因为kernel32.dll的大小不一样。
4 I# T4 ^+ {# x& I: M* K% a+ T& B  @3 x  [# P
3.修改originalfirstthunk4 x" ?8 t# N0 K7 N1 K9 B/ `( ?6 o

4 |) }7 s" F5 X如图所示
0 g+ f8 v1 y1 J+ F7 T2 B7 R6 k7 B0 b6 ]+ Z2 v

8 z. `+ v6 g8 `2 S1 D/ c我们打开loaderpe,依次点  目录--导入表(后面那个横线)
0 t3 {; K) X# z' g% n6 P
3 d7 s3 z4 Z, e( g% h我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll( K" E/ B" c/ p6 v/ K

4 x' w5 W( e) Y7 {0 [我们右键--编辑--把函数后两个00修改为FF+ d; M, ]/ D& S5 B: Q9 ^1 R

3 C8 j* ~" F; K这样可以过小红伞查杀。  虽然会出现错误提示
6 z+ k4 }' v1 D# B5 K. o: R, o+ E+ n$ J+ \2 u
但是不影响木马的功能,不影响上线。/ b# @' [/ f" t; n: ^# V
" ]5 t2 ]! [! Q+ y9 r7 j
4.dll后面加20 90法过卡巴查杀" r) P0 j5 e( ]
+ z! S6 k) n# n! B
需要的只是一个c32asm而已,非常简单但却非常有效3 {, I: P8 m5 l
) ~8 l8 t3 V8 W( D+ }+ v5 [- Q
如图
: v2 n8 l" ^3 ]& {; Y. Q1 [
: y4 G' B& N2 _) g9 @
9 \. s/ d0 l9 B9 Z" ?+ @4 e% `& A8 M
我们可以看到,
, s5 S' ~& K! L0 D3 L* k8 Z* s, U" Y9 {# j
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90% J4 a4 \* o4 G

; m. {; s( \( a) I6 V) f! R这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
: r' y: @! n" m7 V2 K1 ^$ o* b) b8 k1 O
我们只需要在他的所属dll后面加个20 90就可以了
+ t, S" i% m- S4 M' L) S" y: W/ R4 V6 k: A6 Q, B5 J
卡巴目前还不查杀此免杀方法4 R$ a' A6 y" M. U0 p
. B" ~& D4 @, U2 E7 F
: r" ]. D+ e) J5 K
唧唧歪歪这么多,打字有点累了5 l: u) s5 y! W; I4 M2 O

3 E, f  d# ^, v以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。: r- m8 }# w* |: y- ~$ Z  }- \
9 |* Z& X8 a4 q! [3 |4 E
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表