返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,5 x. ^" p$ Q. |2 {# u; C
3 Q$ i  I; ]! Q' }" ~1 N
特拿来分享给大家。
: R- U9 _0 `; L9 r$ U8 ~$ A5 i6 E0 i# k/ }- G
今天我们不提我们国产的那些杀软,真的垃圾的要死,* [" Y5 B5 ]- w5 h# i7 D" f
. _' C2 X' }6 w: ~" }) z2 ^
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
9 s5 ]# h3 V+ {% a1 f2 a, n) P7 T2 g( i, w
我简单的重建了输入表就把瑞星搞定了,: {( ?" f2 C) [

; z: b8 B: j6 x6 s1 w/ w7 d4 {# U( ?失去信心了。我曰
/ S4 e2 Z+ l$ f! u5 A4 Z+ f: Z& s3 `. j  M$ t; B7 {1 W% J3 L+ F
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。1 z$ f3 V9 c! P! t* W  x6 M

7 [6 T% b* ]5 a首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
& }1 D* w* r1 q0 H# H7 v' |; I. L1 q7 }% I
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。% K  Z/ E5 f/ Z" d0 J% u

5 e6 r6 K( Z* q3 s+ G9 ]9 @高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
" Q4 Q7 r3 R1 Q
" _4 P7 H4 _% B# d2 p过了以后再调到最高,再做免杀。
5 x0 k0 ~+ b( A( R) @& L& h# U! d5 G, Q" Z
以上是废话,
; D; w% e6 @8 |6 D" C( g6 S  Y) q
: F: u9 B( v3 E3 F  y好了,下面我们来说下常见的免杀输入表方法。
$ W. k3 S% a# c/ R
9 o0 g8 H0 d& s! ?8 T  T一。移位法# u  i9 Q0 o  {6 }
1 K4 I1 Q* w" i3 J: p
这个已经过时了,我们的国产杀软及时的跟上了时代,, I4 `, \" O2 V, S7 j( C) T4 Q5 N

% s9 \1 G" f5 t& H: a5 P移位法在去年过金山和瑞星,还有江民都是可以过的,
  Z9 |6 Q2 }- A/ ?4 \8 @
. G2 d# H  Y  N) ]现在的杀软智能化了,移位么?呵呵 ,追杀你。, q* t2 t( ?" k; n, q! N

2 }$ l3 `  n0 |7 u' u& F. D6 ]如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
2 l" ?. N+ }6 n5 h! Z" p9 i7 U! J$ u" w' {7 a- ?
二,重建输入表/ v* T4 V9 B5 c% [
% h: k$ t0 ^# l/ ?2 `
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
( q0 N2 ~# k0 K# G  W9 \, Q& [; }+ x/ i1 K1 x
这里我介绍下,( ^% x; j2 U- v9 f8 k

+ \& X' H5 w# H* u用到工具:
* v! S5 n/ g% F2 Q6 s+ t( d6 v: Iimportrec1.6" ~  n& T7 x7 I" o0 A- g
od, C$ {& q. ^4 S
c32asm/ @5 A7 l2 k4 |" [; a! {, j, P# E% G$ @
loaderpe
( a) Q, L, V. M* j! a这里我们简单的介绍下,如何重建输入表0 |# c* B; t1 i- L5 w+ k* @! n

. ?4 P+ _: Q/ a0 s, o7 b& @5 q5 r  c首先吧文件拖入od,打开inportrec1.6* F4 w7 u5 ^. Y3 y: c% p, A
+ v# ], p4 q* L! b3 T
如图 选择拖入od的程序,) C7 M$ T! {% z7 f; P+ U& r
9 M! A: V, L, ]: X

* W/ a3 [- c; O; [; q这个时候,我们打开loaderpe,
7 }$ g# `4 G8 n. a0 I: C
0 l0 ^1 ?0 x7 A2 D8 G拖入我们的木马1 U7 G$ t- ]  _$ a& j5 I
' g0 ^  T  q. R& P
选择目录,9 a5 m# m5 G* C) X

9 ]& D9 J' @& C, H' k/ K. C我们看到导入表这里。。。
6 p9 M, Q! u# _, L; X; U# b  U& m7 i- o
如图:
8 U. ]+ M* [) `8 |- z
; h, U6 k- `2 m9 j% J/ r
  }/ w) b& i  t& @/ ]- N, M  cRVA地址是0001D000  大小是0000154C5 S8 }; \  x& G) X

: B3 p; [5 F1 p6 f& V好的,我们把这两个输入到import1.6里去
+ p' `' ?% P) L3 U- g5 n2 q0 @8 K1 r  s  r% n
就是在“加载树文件”那上面一点 , Q+ v% w& Z" q6 M/ T7 N0 `3 Z

7 U0 O  l" z; V9 z4 j输入RVA的地址和大小。1 p- o9 ], F3 v. N5 J: k9 y

% X- @+ V% ?, _6 s点击“获得输入表”
' `% b8 A( n- m& o1 u7 o6 r, x0 \% u$ l4 H/ t
然后点击“显示无效的”3 @+ O$ a3 i+ t! y0 ~* s$ j; z9 e2 \

& {+ d5 j: X! O' Y接着importrec会自动列出
" _1 [9 ~8 y, V+ E2 J% [
- _4 N% J! h( o$ A' [; C我们把深蓝色的字体  右键   剪切无效的指针; M- K0 p/ g8 t/ Q* f3 V  D

% \; q) F! A, T1 @! }# g# s1 S+ ]% W2 W( O: h' m7 U& n2 k
最后,我们点“修理dump”- t2 x! C# \! r* L" p

6 B8 i8 e7 x; p选中我们的木马就可以了
$ u$ ?) ^" m3 O- z2 U5 _  I  M
) D! j1 o, V+ H3 d7 J$ E- x最后我们要用到c32asm# z" W. b0 v5 t; [$ y
  j9 N& i7 E3 f
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。9 o* ?5 n3 g! \+ {  T
: P9 l* t1 k8 M6 _( d2 c
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)6 k+ [7 B! }. `* E
# G, n8 H8 X* C
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
5 @' k* e& r8 l7 x
. v2 L# h# J1 r我们把马子拖入od的以后,打开了importrec1.6$ d) U4 M+ v) m( F# \
: y2 `8 w5 |3 H% w- L. v
在选项那里,选择根据序数建造输入表和创建新的IAT5 @" K+ Z" G5 a* ]' @/ }7 v& `
1 d0 Q+ B% N' y2 y4 p1 L4 H/ D% l
如图0 Y6 N7 _! T8 P7 M6 ?

' B* U4 d$ A" k' g$ w. w1 l6 k& M
( R( G  W1 r5 w) k! e$ b" U以后的步骤照上面的方法继续就可以了
% v" j+ j/ |3 Y, C9 Q- a
# ^( ]0 y6 Z/ y2 [) X不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
+ N$ `1 D" a+ U% u, s" N/ l2 I7 h3 t3 K- s9 N# h! B5 t# M
因为kernel32.dll的大小不一样。
1 {0 o/ L! e( v. k& }
/ n1 K7 ?: Q4 p" ~' y1 X5 F) ^" U3.修改originalfirstthunk; j- U  o7 h$ j7 W# G
/ {$ b6 _% k" }( m3 Z
如图所示
9 J. q/ h; I  b6 g: @, _
# W  K9 s2 J3 |' r3 r* |' Z
# r6 N4 h; r( g0 {# V2 [: j6 q我们打开loaderpe,依次点  目录--导入表(后面那个横线)- C- {: T& V! a$ z$ D% [  j9 _1 T
3 h0 ^/ b# n0 U1 d
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
; q7 H3 i$ U8 w' F4 }1 R+ F+ g
# M; y& j3 I# t& r. U2 j3 j我们右键--编辑--把函数后两个00修改为FF% f/ l# J( O7 B) S

0 c2 J# ]: w4 x6 t; r7 D这样可以过小红伞查杀。  虽然会出现错误提示
* x+ l# d* o, R' D% u' m1 W$ T) [  B4 V7 |1 _+ @
但是不影响木马的功能,不影响上线。: T! N1 S! ?+ j) Q  h& ^( L9 k) H2 w
  D  k. ?( {2 w/ {) |0 }# k" h2 o
4.dll后面加20 90法过卡巴查杀& O( T; ?; ^' ?8 T; _, E

5 M4 y# i: p4 l% }+ _& Q需要的只是一个c32asm而已,非常简单但却非常有效: g. r% n9 }/ i

$ j6 p8 l3 o. x# K6 D如图3 o7 V# S0 a$ M0 g" x1 R' H5 \
7 {0 L  c! ?6 P- L+ K+ U9 ]

' o8 @6 R/ L+ ]) v3 X  H8 B% c" S5 _8 ?7 i
我们可以看到,+ ^% c( |- Q1 R- z, R5 S

# o. j. U7 n8 B& V' Q3 X$ z; J在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
' ^& a1 K1 \- k: `+ I  E4 e- j4 _0 P1 h8 ]1 H! {. `1 B4 a6 z" g7 i
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
) C) [( d& v& t; q$ M( h/ j/ ^' K  u  {. P/ w
我们只需要在他的所属dll后面加个20 90就可以了( @9 |" n/ j( Q, p+ X
; |0 F6 z, W( \+ P. m+ \
卡巴目前还不查杀此免杀方法
% U$ _( ?& q$ X6 m" w. m" W: I- S) t' j+ t8 l% z

  z; u, @% \# B  x- r# `5 D唧唧歪歪这么多,打字有点累了% F6 e2 w8 a5 R

! C* P6 H; r0 c6 z+ x5 B/ I0 r以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
2 _. _5 q' D4 H" Z+ I8 s0 U. x7 N/ j
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表