返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,) J3 u+ E5 L+ t# ]  p

( {) E  j* F8 l. K3 k) a- X. U特拿来分享给大家。- R# Y$ Q- D, M- H% ?; s$ [, K
5 Z8 u  P& t" v" R% i) Y4 Q
今天我们不提我们国产的那些杀软,真的垃圾的要死,& S% y+ w9 Z6 t

- m- a3 U& v  ^+ t9 J0 v+ w" a上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表  A" Z0 `& M+ K# |' n

  x8 p; c8 G+ T! u我简单的重建了输入表就把瑞星搞定了,
+ m, v- ?3 l4 Q4 J9 _( L% X: O
. u; \( U4 [* h7 y0 l1 K* j& J失去信心了。我曰( O3 D+ N3 b4 C1 ~" ^

1 v7 f( \6 e. R" F3 C$ y今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
7 j5 k% ?' u8 P! ]9 U
9 z* c! Q. D, y; Q- \. T3 g' i7 l首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。. E$ ~$ L) S5 Z4 ]. }
. K+ s. z# g$ X' I! c
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。/ K5 [4 g4 L4 ]6 _! B1 J' G

3 l9 z/ S. F- [3 j- l) `% x高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低0 G- {; g3 c& \; U! F$ w& @* P7 I
, `* ~0 A) V5 ^% o
过了以后再调到最高,再做免杀。" K  \* p( H  ]' o

0 I$ q" }+ c4 y以上是废话,( C3 _9 B: T  u: L  i
9 B+ v9 Y6 z) C3 ~" Z' Z& R+ L4 r
好了,下面我们来说下常见的免杀输入表方法。( x/ h/ ?% q9 q* N

( g+ j9 q8 N, s, p一。移位法
% g/ T4 L& s- T$ k- J' T$ z! b
. I- X3 U5 g6 Y2 O1 ?这个已经过时了,我们的国产杀软及时的跟上了时代,
, J& P2 x* {/ }9 t3 w7 h& k+ U% H# A! r1 y
移位法在去年过金山和瑞星,还有江民都是可以过的,+ x5 R( h+ V" G5 u4 V" ]) `* i
( j5 L/ s3 {9 Q; c% T  _9 Q
现在的杀软智能化了,移位么?呵呵 ,追杀你。& }" S9 H! n, t8 b

# }1 ^( ^( B+ Y* w如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。! ~# a) }0 M: ^7 _  J, t, e8 f
( c7 y) p+ l. R  s2 {1 e8 r
二,重建输入表* V* d. @& A( Y0 P; W8 m

$ K4 E. ?& R( e, b! O2 Y5 U效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
/ I% @2 [; a; i/ g- h
! r$ o8 q1 f1 j这里我介绍下,
- S+ ?0 |, _( A7 G. N7 N; k
+ r8 O2 \- _+ }1 C用到工具:
2 t# U$ t5 q8 eimportrec1.65 R% G- F* z) q, W! a% j% D
od
, _- B# o- ?2 L  k* z8 L* K/ ^6 ]c32asm
  n6 ^2 ?3 G' U. I. K+ a( r; Q: uloaderpe
8 z. ]+ b8 n  M# g; P; U4 R5 @$ {这里我们简单的介绍下,如何重建输入表
% q, u/ s8 t$ _* r2 @$ l$ j3 W, ^
. n( Y; l+ g" q首先吧文件拖入od,打开inportrec1.6
2 m# J2 @2 f  j1 k7 W: h+ e- i4 u  u1 R% [7 W1 \0 W
如图 选择拖入od的程序,  J! j' v/ Y& Y6 U8 ~
5 u  [1 x0 ~6 B$ X) d$ {
) X! f) }$ ^$ m* R; F: N/ S
这个时候,我们打开loaderpe,
$ O+ b( \9 b) e0 r+ y3 T3 g5 J
5 I/ V- `" t, z! C: F拖入我们的木马% c3 c. M: p6 Q( e: ^* \
+ W; F, K- f2 N7 V* w, l+ g
选择目录,. S: T7 B+ F, f" p& u! u) w

6 {* I% }; l8 N4 V我们看到导入表这里。。。
6 {$ h* ^6 o9 ^+ M* ~, q4 T0 e5 j8 I1 h& b# O
如图:
4 t6 B5 Z! d  D/ l! l6 C0 K1 s: M* t9 m2 a+ F/ N0 c1 J6 k/ q
: T* g3 [+ z1 j; N
RVA地址是0001D000  大小是0000154C
* f1 H: V0 v3 I9 Q8 H6 x. J" }- g% P& m/ ?- i3 e
好的,我们把这两个输入到import1.6里去
. N. ~! ?& D  x1 ^" i/ ^
! a8 Y, f/ T8 D+ y, Z5 J$ b就是在“加载树文件”那上面一点
& [; ]" G, b3 C) r6 _! ^# K3 g
: o3 [: Q  [4 k7 \9 p' y输入RVA的地址和大小。
2 i# m3 m  Y: Z( Y! j' x& s+ N+ H3 h+ a5 B9 I& N
点击“获得输入表”
5 V( L, \6 A9 q7 t# J% L% B+ N& f( ^. a! Z6 @3 O& k( g' P
然后点击“显示无效的”
( @3 i3 `- o# `! q- d. L: N) |) V/ s4 A9 ]
接着importrec会自动列出3 J- T6 p# M& P' l! A! z& q7 U
& D# @  v/ w( z" [; q
我们把深蓝色的字体  右键   剪切无效的指针; T4 Y$ V7 V$ K2 r5 u. T* g
( S" g6 \) R( x8 L5 z/ h7 t3 z

+ k: W& @; `$ }  N最后,我们点“修理dump”; p) A/ ]5 U; P/ _% b% q) V
4 h. L/ d6 f; X: [/ ]' S) N3 y
选中我们的木马就可以了
4 a1 u+ k+ Z4 m; ^% k/ S+ l1 c! C" e" ]# |' @, G
最后我们要用到c32asm
7 Z2 M$ a. w! F- O$ H. c
5 P% S" r# x) G5 z, j4 y5 T* u1 p, B我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
1 U9 M* K/ j+ a" I# h4 c/ K. V. r/ [* Q5 y! L! c( {
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
' V9 d( N7 d- x5 T. d1 K
; g( v9 z. ]5 u+ V$ @4 e这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,& p. K/ k' Z9 q# W# f; Y& ]- p

- Y# ^4 A7 X" M7 c2 @我们把马子拖入od的以后,打开了importrec1.6
; X0 ~6 K2 f1 z: j
3 E3 S8 y4 B8 j在选项那里,选择根据序数建造输入表和创建新的IAT/ L* g  m. J( M5 Y7 o6 ^( h
* k% V% `+ }% b- o  I
如图
# |9 g; w7 w, T: g7 a- ^
4 g# N$ @; W( C1 W* y  W6 n
3 t* j' a8 I. i) p% \. D9 h/ N$ c: t7 t以后的步骤照上面的方法继续就可以了
- A3 N. p3 Z4 [& J0 D; q
0 a2 j4 ~( h* i: ^; d# j, ~3 ^2 Q不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了. ^  p2 O" J" ~! g( ]1 m
2 k& {- T+ N/ w0 z* m7 X
因为kernel32.dll的大小不一样。& I$ n2 z6 s7 U2 h) I  R

  ~3 C( P4 ~. Q+ r* [3.修改originalfirstthunk/ C4 T/ t- N" }4 {7 ~

* l! G- a  U' m# I- H, s  R如图所示
  i& j; W$ Y. h( u) q$ T4 O: {$ J; l( F

/ |) L: ^! d" B: S我们打开loaderpe,依次点  目录--导入表(后面那个横线)2 O4 M! h/ d- W" X6 i+ E: i4 I

! ]* e6 P1 u: H  P7 d1 f1 }  W/ {我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
- [  A$ ]) v$ R! d! H
+ s, w; |- ?: t1 K$ Z我们右键--编辑--把函数后两个00修改为FF9 b8 `# h1 X/ H$ n& Y8 s  Z1 D' T. i

) O+ {* Y0 m; F" Z这样可以过小红伞查杀。  虽然会出现错误提示3 N: A: h# p& B$ d1 C. O& p2 ?

3 J3 y+ B: w) J但是不影响木马的功能,不影响上线。
; \  U" T, y" {! E0 C
# \& B$ M6 B* p+ V/ U. }4.dll后面加20 90法过卡巴查杀" ^$ X; c, i& I! _0 Q. [: y) O6 u

0 R1 c! q5 b& z2 Z/ h% e需要的只是一个c32asm而已,非常简单但却非常有效
) S$ G. p, \. A" w7 P& R& l8 G3 J0 [7 y* f: n; n
如图
7 L9 [3 v- U- e  Q7 l
6 t2 [. r' F' }9 b& p
1 h' m8 s6 f* d, a8 Q3 P# _6 `2 S# j
我们可以看到,* @; u: R  c1 N
  J! _& Y8 i3 }
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90, j2 f# X3 d( o5 Y0 s1 X$ @
3 Z( p+ t) t  u1 Y1 w( g
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
* B9 z- D$ F" \6 \/ R& }1 J+ L$ z3 t, D  S  _9 I
我们只需要在他的所属dll后面加个20 90就可以了
' o8 `: E% j! ~! G
/ n- G1 x& h! T# Z, R卡巴目前还不查杀此免杀方法" s  j1 O( k1 W* j
- ^, y  x6 q% I  j! c/ G

3 K2 f* W* h1 t/ v- Z7 w唧唧歪歪这么多,打字有点累了1 }) Y- x' r/ j  d$ m; g
+ ]% F4 S1 _+ k& Z/ ^
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。. c; Z5 d6 v7 Y/ V

* D/ w3 E3 f! w- Q" v" `- g* J[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表