返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
) h8 |2 L; Y. a& u, n& u0 q% q
2 ^- O& t& R' _  N5 c3 V% W特拿来分享给大家。% ~, `+ [  f7 ~. V0 b4 _
% k4 S0 J7 i7 T+ n7 d0 ?1 T
今天我们不提我们国产的那些杀软,真的垃圾的要死,
3 p6 G9 ~( f* q7 [! o5 C  G- A" H& D8 \# d
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
3 A% ?+ W9 [1 d1 R
; q. s9 q! v$ V! f1 N2 n# I& T我简单的重建了输入表就把瑞星搞定了,
2 T. ]4 l4 G  `+ k. e4 D- y
$ Z- w/ `6 A+ C! S失去信心了。我曰
' h' a7 u3 V" h. b, J+ C" a* ~
& \! [1 x# b0 a5 B7 Y今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。9 |0 B8 ~8 V' A) U  Q
; G, c, ?+ M+ v/ q7 K' e
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
  S/ R, C$ q% F- g2 `  j. q) v+ [% U* _
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。! a5 I; V1 d$ U# d6 l
* J5 D3 @4 l$ ~0 N: j7 s
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低* c! M8 N0 T0 H+ Q

, @8 v9 m5 J) {9 l过了以后再调到最高,再做免杀。
3 Y- t+ c! _. T
" q9 u, D% }+ A6 c以上是废话,
  l% {+ k5 C3 F, ]4 D5 ?8 j- E* o$ l6 ^* b5 ^& v
好了,下面我们来说下常见的免杀输入表方法。
0 I4 S. h" A! v  M+ w6 ^$ W) h% ?" [
一。移位法$ j$ x$ g# Y1 u3 o9 o7 Z! r2 R

+ I! r7 W+ J7 E! G: z0 b这个已经过时了,我们的国产杀软及时的跟上了时代,% _0 i6 J4 v6 D: K) X

/ m+ C+ |  u$ [* ~移位法在去年过金山和瑞星,还有江民都是可以过的,
0 W1 T  r8 D) m" S$ D/ W3 i! o7 x2 A" X+ u9 T- F6 X0 B5 L9 U
现在的杀软智能化了,移位么?呵呵 ,追杀你。
- h4 ^: O( J8 L: f& G
" b3 Z2 m# {: `! D8 k" `( [% ?( Q如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
) o2 J3 d, l$ F. Y2 x" r9 o
: X+ V. F$ ], r8 o7 l% J1 r" h二,重建输入表
7 |1 Z0 y9 a$ o& _; V5 G
; X- j3 k5 d# B) o2 ]效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈. o) M3 f6 X& _5 X* }" E

7 W8 ?8 R' H2 d这里我介绍下,2 j. [( h! q8 Z$ w" A; Q: _
. ?* M2 o7 k. J! h5 k
用到工具:/ k' s  c7 x# w$ ]' ?
importrec1.6
: n" I! k8 R& _1 j- ?! Tod) A3 L6 w# ?% \% i- i1 m
c32asm
& G0 T3 N& |+ _9 N& r) u0 e1 _loaderpe4 y% ]0 q. Z5 U/ }
这里我们简单的介绍下,如何重建输入表' F, j/ b" {1 d; ]3 K/ T1 ?8 r
' t1 x# A0 v+ ]& \- q5 P
首先吧文件拖入od,打开inportrec1.61 M8 Y' y0 b; S) ~! T

% Q. J+ l. C6 k, ]如图 选择拖入od的程序,* d0 t- E4 |, P& v# f3 a8 \9 K

' ?; i" d9 E; B$ i$ g
, K6 T$ V4 M8 F3 k% a这个时候,我们打开loaderpe,4 r- o9 a7 z  h2 H$ N

( u: f) P, g" F' b# i' ]$ H, A) u拖入我们的木马
6 l* g9 Y0 I# c0 A( [5 _% e0 e5 R7 H
. N; Y2 h9 W) E6 [选择目录,) A- {0 _; t4 [" e: ~( j

' x- |: b! T% D5 y/ I9 ^- P我们看到导入表这里。。。
( X  t: @- x  V% V$ a  Q
) C* s) B3 F) T  u% f0 b如图:
9 \, @7 G/ A: g. a* j1 b8 x  `( e, s0 G8 a% V) j  G
1 x; R. r2 j$ @
RVA地址是0001D000  大小是0000154C" a! v& _) I# ~9 S' \
  J0 C8 F' O) G
好的,我们把这两个输入到import1.6里去
$ `2 m' F+ t  V% i9 R) J# V! d: r1 T# x( t5 }
就是在“加载树文件”那上面一点 , ~; c  T6 o1 D- d' \; ]+ ^! @

+ U1 J3 h1 E9 e. p8 N输入RVA的地址和大小。- ~. R' K, W' t

7 ?$ q# A: J' i& x点击“获得输入表”/ A. ]* K4 i4 b% j

9 N" D9 X6 X* j/ S1 u然后点击“显示无效的”
4 T. H9 X6 a: c  ?7 d" P2 n
: N5 X. T8 M) k6 X9 s接着importrec会自动列出
5 @' ^9 o' H7 ~" z; `9 k9 [  F; r; p/ b& e  Q, z1 i9 n
我们把深蓝色的字体  右键   剪切无效的指针9 p( y' F$ c- S* x& |( U

$ a- W8 Q# ?; [( U5 T) {! o/ y+ {5 Q: k. u0 K8 L( E
最后,我们点“修理dump”1 ]4 d. t; S) G9 P% K

+ ?9 H  @; D$ K) t% @/ C选中我们的木马就可以了9 F# m% f, K2 r% Z; t) g
; y  M, L6 W: [9 ?+ T
最后我们要用到c32asm5 O: d9 f1 I9 @( {
) Y3 I& U5 P7 X1 R5 Y
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
: C# a* s4 C5 W5 d# \" t' y6 {/ J6 k9 x, a0 u# ]3 M/ v
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
8 ]" n' x* a8 A" Z1 K& F3 M/ d
4 C5 M; Z9 O8 x4 {& Y这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
, V" E( ~. N; y; ^$ w3 f$ Y3 u8 N4 Q- i) J+ C8 u! p, U3 X
我们把马子拖入od的以后,打开了importrec1.64 u! K$ k" ^, Z2 K0 I# z* d- o

4 C- v, S* ^& a! |# t在选项那里,选择根据序数建造输入表和创建新的IAT
& Y8 L. i- T% e* D$ w
5 d/ U/ I* `) c+ N+ D2 y: n如图3 k9 L+ g4 |& a9 u9 c# b+ y0 T

7 t0 A% R- k- ]* t
6 W7 S2 G+ J5 U, l& \5 @" ]: a以后的步骤照上面的方法继续就可以了3 ^6 N( [& G& k5 ]- z6 x$ v9 i

: g5 r2 {# F5 Y8 {不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
0 c% S/ G, \' s  w$ |2 K* S; U- h" `. N' d" E
因为kernel32.dll的大小不一样。
9 Z8 P' Y. c. c* u, Y  ~( H
3 p4 u# Z/ f. ^9 \3.修改originalfirstthunk+ s/ K/ N8 W& ]  [' s

- j$ O* M) i1 Z" i; d如图所示
! ?! b+ M! s' e& P9 b3 E- M0 N9 j, i) m% G& M2 P5 K

% [! a, m# N5 f我们打开loaderpe,依次点  目录--导入表(后面那个横线)
$ W5 `- R; X$ }2 a0 C$ _5 w6 u
& p. |; ~9 _+ e! y" H8 W; w& t我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
5 k: S. w5 C  I' O9 h/ q
8 A( N1 r; G1 W' \; m( ]4 k我们右键--编辑--把函数后两个00修改为FF
. L/ D) v  e9 `5 D! h1 G! ]
, ]+ W! B( A  n9 y  p/ R# u4 ?这样可以过小红伞查杀。  虽然会出现错误提示
9 ]4 \1 t* W: Y* X$ d# r! K7 m7 A  G/ c
但是不影响木马的功能,不影响上线。
8 \& p# O" @0 B5 H, u! |7 `1 j& q6 G- q) T5 m
4.dll后面加20 90法过卡巴查杀$ M) t- c  l, a- U) G4 T( z% b/ m

4 R% j; m% `, L# Y+ S7 n+ Y, X" H需要的只是一个c32asm而已,非常简单但却非常有效( A5 q8 f, w5 W6 p1 K% w

6 }. C5 \  q; D如图) P4 Q  O& Z7 \" @% |
) R+ V/ O  S" ]+ ?' b. l! j
" U( `# y: V4 O0 k
; e: I/ U" K( b' n7 P
我们可以看到,' K7 P' U' i; g, n5 P3 b( C9 h( Z. x
0 f( e9 O7 b2 N& T9 e
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
" c5 S1 E+ B: W/ E! V5 R. R  G# g/ ^% w9 C9 T# @
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection3 q* @5 |; N4 z$ r, f( e

/ Y. x: `5 Q: s) X  T5 p1 D; [我们只需要在他的所属dll后面加个20 90就可以了( W! {8 W' @# z  M
, }. A6 K. j4 a6 \1 o7 f  W* G
卡巴目前还不查杀此免杀方法
# q* [2 y  [7 t0 u" j& D; W/ d: b: ]5 T& D0 P( ?  @
' W' U: L5 g% o, w: H2 m
唧唧歪歪这么多,打字有点累了4 ^( N( d5 f; b2 |. @9 a3 W. q

6 `4 q  ?8 y5 n) W以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。5 A) x$ L( d1 s: v, ^& x8 l

+ M5 {  l, d( K3 D[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表