返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,5 c- m3 ?' P9 e: _! j  A
7 {  S/ `1 h5 g0 u. ^! G6 \2 S7 R
特拿来分享给大家。6 l& X+ v0 _3 |
  Z+ a6 U) H& K( r
今天我们不提我们国产的那些杀软,真的垃圾的要死,9 t6 t/ r& `3 |, n# }1 Q
: |2 ]7 F9 n" q" ?8 |
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
0 ^7 _/ Y" B# R& c& r* e8 z% ~( y5 R" o
我简单的重建了输入表就把瑞星搞定了,
4 Y/ H( R& O$ Y( C* \# g7 T7 ~0 }8 a* I5 @' Q; q
失去信心了。我曰, ]) z1 w7 P) e, U, s5 G

$ A% s5 o2 y; b0 a4 d今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。; [2 U1 D- B5 G; T" E
) h* r2 L9 K5 \4 H7 ]3 n
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。3 v+ C" H0 }9 `3 @* Y& q
, l2 j/ U$ H; v# c9 W; w$ A: Y  I
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
9 {8 `" A$ f6 Z. ?( z' q) F! w& a9 S
2 c, d9 N  k, [. W/ S高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
) R, Q8 z9 n6 V) z( u1 _
: j: j4 n  k  g7 D过了以后再调到最高,再做免杀。# A  S1 X/ ^2 |

* C! H& F3 E* g3 |以上是废话,% @! k5 G9 G! K4 I; e
0 J( G: C3 a  F
好了,下面我们来说下常见的免杀输入表方法。
( z5 }0 C8 B& a1 I6 a. R4 X5 v) p( n5 v, p
一。移位法
: r9 c+ h6 o6 G6 H
% G# r3 i6 e: t( ~这个已经过时了,我们的国产杀软及时的跟上了时代,
2 U8 U0 }6 k- Y5 X9 r$ C* t: G/ Q
0 ?, S; Y+ T; g1 R5 r) Q- J9 v4 k! |移位法在去年过金山和瑞星,还有江民都是可以过的,
/ B) K5 g: h; v2 j! A' ^' m) q9 V) K
现在的杀软智能化了,移位么?呵呵 ,追杀你。
' o# z. B/ P% S
; ?5 R# X- ~2 G/ `+ E1 ~如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
0 ?# E1 ^+ ?# m, _
: D: }# S  @' B4 Z二,重建输入表+ {% K  s/ H3 }1 ]# F# W

4 z. n& M9 f, u& t& D效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
3 r% d2 ]: ?! w& Q" T7 }( ~) T5 `
4 [' S# S) p2 ~+ w/ u" H) Q这里我介绍下,
$ d0 i9 ~3 ~/ z3 n6 p/ [/ O; Q9 F5 m0 o& F8 {1 i
用到工具:
  ]! D; t  u/ d) ~: `importrec1.6
4 p8 i4 b/ D2 p. Z1 y# w- \od7 Q( ]4 T$ f7 t2 W# V; u6 ^
c32asm# _& R& z3 G# F6 N3 n, Y3 z' O
loaderpe
6 x; z, q: w' V( p1 \; T! r1 l这里我们简单的介绍下,如何重建输入表0 s& T; z4 b# w  D
$ |0 D. N+ ~# e9 \9 w2 J& t- u8 B- j
首先吧文件拖入od,打开inportrec1.6
1 Q) z: `- ?! r, [/ [; C/ q* s( k' N0 A- ^/ f0 }
如图 选择拖入od的程序,4 k# r* @1 U* J' H9 {% z

7 A4 r5 R* G/ R9 r; a; ^* i4 F8 }5 X1 m
这个时候,我们打开loaderpe,# a4 k+ X3 |/ z" M; C

# i- `8 ]/ O- H% Y% v3 ]9 n拖入我们的木马- Z7 f* `$ t! l0 c% H  ?5 F
4 z; ]4 _3 W1 S1 M
选择目录,! E4 t' S* z2 u7 i% L
& k( ?5 F7 Z, Y' e7 J2 U" w; E
我们看到导入表这里。。。
! L! B$ s* ?7 [. L5 B, l* V3 @( w4 k
如图:% k/ v, D' p2 A. h1 x
8 P# w" c! x" n8 t

+ d  r% h: x$ c/ G$ ^! |" t* ZRVA地址是0001D000  大小是0000154C- o8 K& @9 n, P( }2 K( X  p" Y; O0 ]# W5 ]

6 E2 Z. y, [% {好的,我们把这两个输入到import1.6里去$ x8 t/ c3 ~" q6 s3 ~  n
! G5 @0 W; x- `/ m1 R4 K& m
就是在“加载树文件”那上面一点
5 S- {' B6 [& P; ^7 A6 ^/ N2 ?% k4 M' L* \2 t  R5 }! \) v
输入RVA的地址和大小。  A! E) p/ J: S* t: v
# Q7 o; T2 C0 p/ |& u- m: ]
点击“获得输入表”4 H9 \' T6 N) ]8 X6 J( \

. b  l( l; g& }然后点击“显示无效的”
$ d- b6 |0 U2 f+ }; s( \- v8 q+ t) a
( m# O8 l; ?) N" K接着importrec会自动列出
! Z3 k) a3 h' i/ V
% a0 V! k, C/ _" l" ^% p- m我们把深蓝色的字体  右键   剪切无效的指针% a0 Y: i. H, Q. Q. T+ S+ ?
4 F; l. }! U" Q9 Y

, E+ T. f( R9 u0 r最后,我们点“修理dump”
# M# W( X* c! }* H# B# ^/ z+ B6 U/ u
选中我们的木马就可以了
+ H6 w- K$ U, t2 x
1 i8 o6 W% t# H8 t0 e最后我们要用到c32asm
" S; |% s) A% s+ l/ s) \" R- Q$ k# p5 m( f
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。1 W  u/ g" t2 N; [, H) j$ E! [
+ X/ F) F& M1 y" z; V
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
* i( v" N$ R1 L1 S/ ?9 Q, W0 t* L' }
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,- Q5 Y) G( W: M: M" E. P' a8 ~" K

- A- W# |+ e8 ~我们把马子拖入od的以后,打开了importrec1.63 I* r3 q) g5 m8 g: Z0 f5 r0 E( D

0 A6 X; z3 V- ~) Y在选项那里,选择根据序数建造输入表和创建新的IAT
, m7 U; m& J& e1 @( ?8 ?
& J% H3 l' J9 e' h如图% {: ?! ]1 u1 A7 O

( x4 B( Z2 @* D. G8 {; A6 O' f  ?, G9 n
以后的步骤照上面的方法继续就可以了
# @) B# h( @( O/ M
) \- N+ A- x  m9 M* B' n! p. v不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
& q7 I% ~3 T3 O2 U& z/ _! f: L. A) }9 x
因为kernel32.dll的大小不一样。
5 k3 f0 }% b$ N. E7 W4 ^
9 P: B5 z3 \# H" G, X5 \2 w- B3.修改originalfirstthunk' V/ R% _0 S+ u# A7 g

; X  d! A- }) z- X% w# \如图所示
+ o$ @) G! k+ C$ i, T' G8 g% N. X6 K, u) Q/ a( n) M$ ~" t/ s
# w( {2 }% U) W- Z7 B( t$ O
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
/ @. g4 a: W* ^
0 i2 D5 n' a2 J8 u/ i0 m我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
, e$ H8 _2 \5 X4 _* V
: x3 z( J# I3 J: T' M$ |/ Y( ?% z我们右键--编辑--把函数后两个00修改为FF
- s2 z5 H5 Y+ n, r
6 b. F; O9 ?6 P2 K+ d6 {这样可以过小红伞查杀。  虽然会出现错误提示- ~; A" ^/ O8 f& S9 y" P
" S9 o1 ?/ Y  K
但是不影响木马的功能,不影响上线。7 Z, X" F6 R9 x  A) J

1 I5 T# F# C9 `  `% j6 _4.dll后面加20 90法过卡巴查杀; X& I) L5 M) m0 w/ {+ B0 Q
3 d( K6 U- n' O8 B, S! z
需要的只是一个c32asm而已,非常简单但却非常有效/ j) A) j% ~2 ^6 N
) `! J3 D+ H7 L( u2 `1 [
如图. V" l. _  k7 ~
% z  M- t8 S* R2 d7 S

/ t. y% D# N+ B& R; Y& m/ E+ Y& q: H$ c- y9 o0 ~+ e
我们可以看到,7 L8 Y. h: Q% E' Z0 s$ J
. Q0 R  X) U( E8 g
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
) |& i- E6 f* K1 t$ d. \, G1 g# T0 R7 x
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection6 ?" V1 ]) p( Q" [) W
/ o! F: N8 L& N! ?5 |
我们只需要在他的所属dll后面加个20 90就可以了) \- Q% @' {9 G& Q

  q+ ^; A* t5 P5 U7 |( z卡巴目前还不查杀此免杀方法1 z+ ~) r, B2 ~$ w0 f  p+ c0 H
6 t+ X' K1 T9 p! ?1 q4 {
. k& N  O) ^: @3 L
唧唧歪歪这么多,打字有点累了/ U( R( Q7 Q% S: B
% I2 ^9 B) u  t) `) `2 L0 C9 u; }
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。, _  d) i& D9 k9 F* L9 s$ n

* N" V4 [+ ?1 R[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表