返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,- v/ P3 }3 W5 Q/ E, }4 T

$ v2 U3 V* b( y1 H特拿来分享给大家。
! `' d" _. b+ W: S8 I% O, @
$ e+ q- k1 z# ~  e今天我们不提我们国产的那些杀软,真的垃圾的要死,
9 ?2 e; O  t- R& K5 f
$ U- b5 l5 l5 {& s6 y$ ]' Z* Z上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
! Z/ }9 ?; }  A# L' h3 \
8 l+ K; _7 _9 |, a% }. l我简单的重建了输入表就把瑞星搞定了,! h, _6 {( `0 {# j0 g
1 ?+ X- A3 B" _8 ?8 s. L
失去信心了。我曰  l6 i- ?$ L0 c: h* k' P
" Q4 d% o' R9 N+ R; g5 l, Y# F
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。0 V/ E) f9 b; a3 O+ y3 ^/ x+ J. C/ P

, ~+ K, q8 _" d: B) I$ s# e, K首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
; [0 ], ]7 `. ^+ V7 x, q1 e: p! ^
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
( n! j% d$ A6 q+ D$ d+ O" @& z1 Y" Z8 L; B  P  o5 \
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低9 F  _$ }* E" A! Q, l% g. \  g' i

" m. @8 ^, s0 r% n# j过了以后再调到最高,再做免杀。
9 q3 ^: H- g" F3 D2 R8 g
8 k  e' f$ o% N以上是废话,0 ?0 @1 w2 q4 n6 _% \
% G1 o% |9 r# y  G+ \4 C  h4 Z
好了,下面我们来说下常见的免杀输入表方法。* Q) R$ @- t) |
9 Q: N. m, [% p. w0 G; E
一。移位法8 V4 n9 i: J; V" T" U

$ l, Z9 N3 i( e8 c! r这个已经过时了,我们的国产杀软及时的跟上了时代,: s! L& O' t& R% Y" N9 i
( u" `( E! d0 e
移位法在去年过金山和瑞星,还有江民都是可以过的,9 K% p7 U& H; k- c# f- c

5 @  z/ E( {6 _( ?现在的杀软智能化了,移位么?呵呵 ,追杀你。" ^, Y0 w1 Z: D0 I* p4 r+ c% K
  e  o1 N& R* a( `/ n
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。7 ~0 Q( l& n5 k# I8 `) z

- k$ g9 u. k6 L7 ]1 P二,重建输入表
* v2 A. \& g# X# Q/ _; Z6 V; u. y- v4 }+ L  w1 f, Q+ w  r
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈( l( C9 u4 O7 d0 K
! F& m" `: r* W, v* T4 x" c
这里我介绍下,
/ ~! x2 Q; U" u* x' q* q; G5 ~( n' H, b$ e2 {
用到工具:
# b6 X9 H& x( s; K9 A, `1 uimportrec1.6: [- J  S1 R2 n
od# v& u2 M+ L/ A/ T. R
c32asm5 x9 e) \$ Q& @) n: c
loaderpe
& R- d$ s' k2 B' o# Y' K这里我们简单的介绍下,如何重建输入表  `/ g  S$ ?0 S1 m$ B  q" F( D
8 F/ j8 N$ `7 Y8 P, R
首先吧文件拖入od,打开inportrec1.6
) |0 `" {9 u: w1 l
/ S8 C5 R) ?* o6 g: F' l如图 选择拖入od的程序,
! S' t$ b& Y/ t& k
8 g4 Y4 }3 s! V9 r6 F+ L8 W) f3 e' m" U! i2 Q7 E5 E: J/ r- f
这个时候,我们打开loaderpe," a3 z7 j% [5 E/ P% ^6 W1 S: T' C
1 q) E0 S4 N2 P$ f
拖入我们的木马
0 ~* N3 j8 f& N$ G$ Z' }1 z2 Y( _+ \. w2 O2 I
选择目录,
: N; y$ m  a* l0 }( B
5 r# i; J% I# G2 }/ K我们看到导入表这里。。。4 a0 l. B+ K* x/ E0 ^

6 P# F: u6 |  v如图:
7 p+ I) ^2 D: ?( j5 T( u. i# b" U8 P6 j3 Y

+ d" f! P8 W1 Q  w. `: J; pRVA地址是0001D000  大小是0000154C
, ]" ^# l" i) t1 q# |, m4 ]1 e6 x2 F6 v
好的,我们把这两个输入到import1.6里去
) g6 ^9 I5 l& V
- v+ z% `3 q) C: H4 O& z就是在“加载树文件”那上面一点
  k" ]# g; E# k; K
7 U/ R8 S9 M3 ]$ \1 T+ F5 d1 K; P输入RVA的地址和大小。
+ d, q6 I! j  B  U$ p- q# {  v  y8 S8 d; W1 g+ n  k  @( E
点击“获得输入表”- ]* E/ Z5 J' _' n: {" {% Q
/ N: ]7 v) ?6 A5 C8 D; B3 j( _. G
然后点击“显示无效的”
5 g, P% \' s" u- V4 l7 h8 Q
+ K6 |, a2 u- `" F+ F接着importrec会自动列出. c: }/ k0 h) C; B& j0 Z0 p
, o6 q" q; \+ a9 J
我们把深蓝色的字体  右键   剪切无效的指针2 k- k# c6 |  h" a! U9 V- H

1 Q! q8 v( k. F" Z! R4 x/ f4 c' p6 b* c- J
最后,我们点“修理dump”* c  V# c1 U5 r3 |9 A# l9 T+ B* H
; S+ `4 C" U  c, p
选中我们的木马就可以了0 `5 {$ e8 n( u
  y9 w2 e: a- g
最后我们要用到c32asm( m7 O7 v+ a2 j: A3 Z$ k0 c

0 D0 k7 g* s4 F4 M5 e& |4 S; L# c我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。6 g& Y4 o! W- O

2 M! G: Y( [0 a5 v( z6 l0 G/ x. y这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
3 ]) e- T% z4 S6 d, I8 ?) Z8 F" P. K6 n
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
# q* b* b4 P; u- k
1 g- n( I8 G; ^: w! T% l6 J- r我们把马子拖入od的以后,打开了importrec1.6
- C$ w, o) k* `6 E
# f; M" H2 v# q' n. y* S* ?在选项那里,选择根据序数建造输入表和创建新的IAT
& H7 d3 G5 [2 {5 C  x3 R7 R# `" O' `% g$ F* U
如图
8 g' _" c/ U: Z
  R  z; L4 |' W" f2 {1 s9 |& G* e% o0 a, E
以后的步骤照上面的方法继续就可以了
% d3 x, K. H% ?) _, e
4 j! [5 n# x; S2 S不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
. A' Q2 q3 F5 x! b: E; a) K! Q1 B/ N' P9 Z. K/ B) A
因为kernel32.dll的大小不一样。  Q5 r, [0 r% N, d" B5 L

5 }" a* E) c, }3.修改originalfirstthunk9 B5 L$ P) a, i) Z+ L6 u
! I; n/ i6 y/ V# P8 {/ _' k
如图所示; D" r5 u9 t/ C5 w4 v/ L

0 x* r. B# m3 O& G" _; l& h
) ?3 F8 Y% R8 q* W5 y3 j5 l我们打开loaderpe,依次点  目录--导入表(后面那个横线)6 v+ u. @5 C* _2 V

0 ]6 ]. K9 e; h" m  `我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll  H  i! W- O, [- X
' P) {9 C: ^; X
我们右键--编辑--把函数后两个00修改为FF) t# Q2 v8 k0 n* ]
4 y4 M8 i! y+ U( J! |" Q
这样可以过小红伞查杀。  虽然会出现错误提示% K" V9 A1 q2 V  ]6 |4 T! j

. a; X, E* Z2 I" ]  y+ m但是不影响木马的功能,不影响上线。; A# c$ g# E  ~: u2 z! q! g/ t- `
! d8 R; F+ A' X" Y' e
4.dll后面加20 90法过卡巴查杀9 _! d  C/ @( U( B  [+ T
& j7 _/ O4 U; g. v$ e: V
需要的只是一个c32asm而已,非常简单但却非常有效
3 Y6 {$ P' Y7 J' l+ U* `- L* B/ q: C2 `
如图$ a5 [+ ]' U$ S5 ?* ^4 w
# @& _; k' n! B5 H+ }2 d* q7 J; Z$ e

1 a9 O4 H6 `, @8 R6 O/ I! c* N) h* Y# m4 V5 A0 J6 b1 ]
我们可以看到,$ ]: j' c* O3 h! {) a

6 x/ L9 C5 R# Y" {. S; c在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90) D* R5 m( Y' {/ b' c) r- P% g2 O2 \8 v

) X3 M3 S0 Y* @" W这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection  g, [+ O0 g# \8 M. ^# X. f
2 L( {) Q% [4 Q
我们只需要在他的所属dll后面加个20 90就可以了
# Q: d! w+ s; S% L
) R# R/ Z9 i' ?3 P! U, q卡巴目前还不查杀此免杀方法
$ c6 X0 }' m& d# N! Z
. y9 h9 r7 C+ I4 Z4 T* n5 n  x5 R9 ?' Y" m8 D# D1 r# o
唧唧歪歪这么多,打字有点累了9 d0 y  z- K; u( z" `* H0 n2 H8 E

, |& {8 H% j$ D) }( P) g以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。" c7 a' ]2 t) s8 j
0 e$ {" ?6 n8 u
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表