Board logo

标题: [原创文章] 木马免杀之免杀输入表篇 [打印本页]

作者: 1335csy    时间: 2009-3-31 11:30     标题: 木马免杀之免杀输入表篇

最近和一位木马免杀牛人交流,感觉新增进不少,
$ B1 f! x5 x2 o6 x& a. O
$ Y- A9 L% c- D! {特拿来分享给大家。- c9 i: h1 r5 U) d
) h6 A" S' o  ?' A+ \4 y
今天我们不提我们国产的那些杀软,真的垃圾的要死,, R! f9 `5 b- V  s' J
7 C3 B5 L4 y% f1 t! e
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表3 s. ], f8 O4 n, L/ H- r9 e
. }( e  j& m, |; \
我简单的重建了输入表就把瑞星搞定了,
! @* Z2 ]4 @3 F. j
6 c& l4 _5 b6 O6 {5 c) g失去信心了。我曰
! r+ o+ u% \: m1 O4 _
  e5 _) m) l. a& g2 {今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。' ]  C6 C$ f7 S/ q
8 F& O, W, c: z# a0 _* ~$ z
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。! U" Z9 `! Q; I

( t, N+ Q: [/ S" V% L外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
5 R1 p2 d: f! h
# c1 O4 {+ K7 Z: u/ L( S1 K% B高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
! k  M* T  i* S, u+ B  e
  x8 ?4 ~/ ?& [( {" A过了以后再调到最高,再做免杀。
3 x1 f* W3 p4 b+ ?2 D% f
% J; M0 x  m0 z. \% {( i% j以上是废话,
0 u- v# j! h, ^$ o, V; W, V' ?' F: I) e9 L
好了,下面我们来说下常见的免杀输入表方法。% {# t  Y/ i1 v5 q  Z
& R$ S5 G+ q4 G* u" }( ^  Q, r$ `
一。移位法
) v/ C' g: o+ F* Y+ H* G# b9 X! U# D# u9 ?* U) T
这个已经过时了,我们的国产杀软及时的跟上了时代,; g5 W( |# ]! c& G& w& y7 Y5 C5 J4 _

/ A* X* e4 Z( Y, s& O移位法在去年过金山和瑞星,还有江民都是可以过的,
" T% r5 A# {% Z0 G! `* D& y: Y& M
' L& p0 \9 Q  p" J. q现在的杀软智能化了,移位么?呵呵 ,追杀你。* G' A6 m$ w& f& X* u
/ j% T, T! r; t7 h4 z6 }9 s
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。% e" s9 U$ i! {
- f+ o9 a4 V- F; b' F4 y5 \
二,重建输入表
9 h: ]- c) H0 [2 m$ D0 b& N+ L. n4 @
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈2 b) J8 G; q3 m, c% y. c4 |
9 V8 H! ~4 c4 X* N
这里我介绍下,7 F2 ~" x+ }# q, A* `
, k( C0 g# q0 Q
用到工具:
" U: \- Q, S+ E* S- _importrec1.6: F/ J) }' r+ s8 E. N  W
od
2 X  X, n4 S; B* ?1 N6 Wc32asm
& z/ O8 S- n4 T& T4 zloaderpe
. q4 f0 U% X8 k  t, V这里我们简单的介绍下,如何重建输入表
# R2 P3 |: N, {- ~9 t* \8 A/ T( Q3 c2 a# ~5 W1 r6 u6 x
首先吧文件拖入od,打开inportrec1.6, o3 }# ]! Y- N  c
) j% f  V+ t9 v/ M
如图 选择拖入od的程序,& d. ^% j& X: f) H1 Z8 \

4 d# d0 t1 _+ g: r  D& `2 ?; x+ v# P9 `0 u: ~, x+ @
这个时候,我们打开loaderpe,% q/ Y# @3 @. |6 Z
/ a" `0 R' x& S: T* G
拖入我们的木马
2 a# h  r3 ]2 J
6 Y: M# }/ y6 }- B6 p% J6 V选择目录,
! Z$ U0 }* O/ s* ^3 r0 d
" J  B& u5 Q9 \: O) C& V我们看到导入表这里。。。
, U% T  _2 y/ u4 Z6 r8 S% S* ]& |
' x& b) C7 y( ?如图:; b" t; Y. o. l, a- \
: I: U  V" a" d' `; L3 u: D( v5 t
1 M2 x5 A2 i) v' y9 O' z
RVA地址是0001D000  大小是0000154C+ T% f; r# J/ W, Z7 d% i1 }
1 t+ d4 l+ P5 L/ O
好的,我们把这两个输入到import1.6里去
+ T( r; s4 }/ ]( T; H/ `5 }9 l9 b1 P1 u2 d- z6 ~4 c; ]
就是在“加载树文件”那上面一点
2 j$ K# A! i) }/ T
0 m* ^2 t; y3 l0 h4 g  Y: L! _1 ]输入RVA的地址和大小。
' F: L. a# Q( L4 d& A& v& q: K
  T3 y9 _& c( H# A" F+ i4 a5 j点击“获得输入表”
4 F* k" F9 y% m8 i* S" L/ @5 S) n4 n; w
然后点击“显示无效的”
6 ?' a% c4 ?2 ^% V6 @
3 B- S/ O$ m! {8 u; Y# j接着importrec会自动列出) t/ `6 Z* K' x/ U1 E3 P
' L. X% Q, y6 |2 f5 _
我们把深蓝色的字体  右键   剪切无效的指针! l: Z. h5 _* Q/ \- m
9 ]4 ]  W3 A# [1 K! m

0 P' w& M( w. a3 X* c) [9 K& V最后,我们点“修理dump”* T6 W8 ~4 R/ _  h
/ B5 N. B+ a% Q; \2 i4 h7 ?9 x
选中我们的木马就可以了
3 n' L/ T% y: \$ ]) z6 G& x7 v2 ~4 o. p
最后我们要用到c32asm$ i+ D3 O6 z  Y

1 i/ h( Z; c. a# h+ |; y: E1 z我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。6 b* h( J) |1 V3 t, v& d  Z6 k

" p, g; L: W6 O9 i3 y这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
6 l% \; O* F/ Z
3 K/ t4 X; ?4 P! k. ?0 l5 I+ V这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,, M7 k& R2 M+ M! Y9 A" m
+ x3 u$ u( z: i0 h6 U
我们把马子拖入od的以后,打开了importrec1.6
; T* Q" u# \3 s( I0 m, P- o, J+ f6 s/ P( J( [, g/ G, @
在选项那里,选择根据序数建造输入表和创建新的IAT
4 m! U. j- ^, T1 R9 o# q7 d, W. B& m4 \0 ?- f3 w- e5 c
如图; o& E2 F8 [) R4 K; t7 V+ h
. W6 I" D4 Z4 W# Q* s

3 J, R: H* C+ T  F以后的步骤照上面的方法继续就可以了6 \+ Z) O7 N" z2 i, ?
  l! S; F2 \" g* @- w
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了! i& o: l+ u+ V' v& S5 `. D

  D, E9 ?5 L+ L因为kernel32.dll的大小不一样。$ I+ k# f5 m7 n/ I. q

7 p  n, G- z4 |: T' W3.修改originalfirstthunk
0 F$ i8 A) y; o# ]. d7 u: b% T2 ^: @
如图所示
2 K1 _% [6 c' J& Z( _" }0 l  Z, B) d" `. S
4 s& O9 X" b5 N6 i1 ]
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
& A& A( m" n" @" `0 Y+ d$ K0 G# h: w  Z+ l8 B
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
1 C9 n3 Y( c4 F6 Z) F2 D0 B5 ]- o/ L1 f, z
我们右键--编辑--把函数后两个00修改为FF& p* }: r8 J3 Q% X; i
. l! B& Y& D* O4 ?& w7 g
这样可以过小红伞查杀。  虽然会出现错误提示
" c& B, W2 N* g$ T4 m4 r
$ Y$ G- J3 d0 k6 W, i; x0 G5 Z但是不影响木马的功能,不影响上线。" u, {6 Z6 C. r6 a8 N9 |7 |  ?
8 u. f( b! T( w) ]7 p
4.dll后面加20 90法过卡巴查杀2 c0 o# q  I0 S
/ e# n6 E; o" ~1 k
需要的只是一个c32asm而已,非常简单但却非常有效# I! }* e( H' V3 D
  S. g3 ]" J6 X1 E8 h0 T8 C
如图( I+ D" @0 Q) E* v0 J2 h) |: j
1 k( w+ Y! B, h  K9 H, t
" a' z/ m& ~' t7 q

5 W1 \7 N' W. i8 \5 m我们可以看到,5 d$ ^, o/ U( t. A. Z8 y
: C& i/ E" B; R  s
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90/ S  X& P) F9 }
9 ?6 J+ z3 Z! R+ d* e1 h6 y) s& y
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
: r0 w1 O8 [: V0 i* S3 g7 U
' U3 c1 E  F$ h) [8 Q1 `  j8 @% |- `我们只需要在他的所属dll后面加个20 90就可以了6 j- ]/ r/ r: s3 F  R9 B% N

( m. G4 L( H; `7 _2 v7 Z4 ^1 v& Z卡巴目前还不查杀此免杀方法, K! M$ J, t  r. D) u  j# j

! G. W* O0 u* |9 w6 T( @
9 r$ |# {$ c" c& d唧唧歪歪这么多,打字有点累了! U* _& t: [, Y& B! }
% T* e+ c: o& U4 g0 \6 i" y
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
8 S0 i& \  y6 E0 I4 p8 B
$ e6 [9 G8 k, p, u1 d, M4 k3 e; `[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]




欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com./) Powered by Discuz! 7.2