返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
5 E: F- P6 M% r! Z- |8 s" w' Q4 Z& K" L2 L- H$ a
特拿来分享给大家。6 g" e& e8 }2 k0 w. C
# F; u0 Z0 F) S; n+ R. p4 e6 `( X0 J* O
今天我们不提我们国产的那些杀软,真的垃圾的要死,$ X# x- m' G  I6 @/ Z! ~8 r

' x5 y$ ^$ X1 m, K上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
% T- L# g0 {% s9 H$ M) e
7 y6 N% v: H* ]% a我简单的重建了输入表就把瑞星搞定了,# I' q8 X% ?; N0 B

- ?) @# w- F% j- L! z4 k/ W. h失去信心了。我曰
: \2 B* ]  b8 x3 T" p! `
6 d; D! [6 B- g今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
1 H3 m% l: `' u( v/ P( @/ w) u$ B8 c' E9 T4 W* P
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
6 W; F  |  C# o, H1 X4 s; Q" Y8 [8 r; D8 ~7 N% B
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。! G  v/ B" A) g0 Z
, B+ n( b* D' c8 e$ M; }/ _. {
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低7 Z2 D% ?$ e8 ~5 Q4 \

% f' J. E) G  {( Z9 b过了以后再调到最高,再做免杀。
! V# B5 h/ L7 r3 f* s* |1 S& r  [
5 q% a. P( A9 H! }: G6 Q% H1 A7 q) U以上是废话,2 w/ q$ A, {2 ]. f

& O% y3 v7 ?9 W0 F) K好了,下面我们来说下常见的免杀输入表方法。
- K* h: O; _* |4 }2 a" \0 ?) Y5 K
* E5 t. q- h: o/ G一。移位法
) {1 Y' U( V5 u3 v8 i; w; I6 b7 o( b6 \2 S1 x; D% ^
这个已经过时了,我们的国产杀软及时的跟上了时代,% p( W+ T$ L! L5 b0 u
( ~/ d. f/ ]  i3 i0 s; [- X! Z
移位法在去年过金山和瑞星,还有江民都是可以过的,' X( b& f! i  \! Q( S$ D' v/ B
% {3 }; F  m8 F+ i( g' I8 U
现在的杀软智能化了,移位么?呵呵 ,追杀你。
* G$ u/ i7 ~$ E; T. z2 v& Q# o: N- w8 P6 E' l& Q+ `& ^
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
4 W( z( L- l! D9 w2 G$ D8 D# U7 X" i) d% t! G& C& x
二,重建输入表# x) y: }7 u! |4 ?! M9 k
$ c( |' Z8 @+ P- Y) x. B
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈; _  }8 w+ I* b/ g; o: b
' r& W4 V( ]2 j$ t
这里我介绍下,
! I1 r+ o5 u: o5 R( O
5 b- O0 a' T/ B+ C2 c! m用到工具:% B! j* E+ E7 g& N& G6 Q
importrec1.62 `+ O' P  ~3 X, d- y9 C, J) T
od& N+ V- ?! k4 l, f' ?
c32asm
* j5 d, o5 t/ ~loaderpe
8 y6 R# D+ ~6 l: P+ n: E/ Q这里我们简单的介绍下,如何重建输入表
# h7 H1 M! N4 L& }! v5 z; n2 d- J' d7 G% K3 }; o& J! i
首先吧文件拖入od,打开inportrec1.6
7 [0 }! c, n' ~7 E* U
4 p: T5 p2 p0 I如图 选择拖入od的程序,% {8 o4 t7 K/ q* @' r, a4 Z
7 l2 H6 |5 G% O! v5 J/ q
3 F6 J. S0 e7 \6 B2 L% {- G
这个时候,我们打开loaderpe,
' g: {8 D! s: Q/ Z% S0 n7 {2 W4 d* _, P
拖入我们的木马
9 A9 [8 _0 t$ `( m* r4 }( q$ e& z; J" D: \
选择目录,
! ?( O# D7 W, {' N# m' z* ?
- D9 m2 ~$ b4 J& V8 Y4 Y7 ~3 ^我们看到导入表这里。。。5 {' A+ f1 o) d1 T# O% g: T

" x2 G5 o( r# W: U+ Z# g1 j如图:
" u# S# u) m* \/ V( E" m( ~  ~! S4 ^
) l. F) J) c' V. m2 D  B# K. h  E$ H
RVA地址是0001D000  大小是0000154C% t" |$ K% K1 }% D% G; b9 n$ j2 C
9 t7 D6 D6 m3 y; l
好的,我们把这两个输入到import1.6里去
& I" W  J# X9 m/ Y& W) Z
- X# g8 P9 v/ Z2 \% D$ B7 p就是在“加载树文件”那上面一点
( Q7 K/ ]/ N1 g/ c+ f
5 y* P. S2 a  v, y9 E输入RVA的地址和大小。* M  p; ^( H+ w, O# q
7 e7 {8 E$ K. t5 d; \2 p& x- w2 P
点击“获得输入表”
; ?) O3 u$ t- I5 T2 j
' q9 g  Y: u+ u然后点击“显示无效的”
( z8 |- v. u3 n+ d$ l4 y: w. |3 ^/ H9 Q' A
接着importrec会自动列出: G1 `0 R$ T2 \. c& i5 j) j

  b8 o9 a' ~) J; ?( z. V& Z我们把深蓝色的字体  右键   剪切无效的指针
8 ]* e5 L" X' C8 d- W% O1 o4 ^5 C  q- z" m- l5 }

4 E$ m7 V: B5 s! |& o最后,我们点“修理dump”! F! I% T& v+ {! b5 @" v+ Y

. ?7 p5 K( b2 c+ r, `  G* I& ^选中我们的木马就可以了
# s3 Y$ r+ L0 B& d1 t: ]- `, F" J9 e$ J& ^
最后我们要用到c32asm4 W3 b0 E( x9 A* X: U

+ o7 f4 y/ ?- W我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
: B9 X) f( r0 ~0 D( L
% @1 V- c, o& @/ X3 G- {这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)& P! F- p9 K1 ^& d  }8 Y

! b! }0 E3 H+ k) `/ S/ l5 D( f# o这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,$ u5 X; i: d/ T, I. h
% n: d1 `. V- K# ^
我们把马子拖入od的以后,打开了importrec1.6; U4 l: W& C* f, D

, n2 L0 x4 J) P* k# X8 R在选项那里,选择根据序数建造输入表和创建新的IAT
4 S' ]3 H* I( i1 @: o' Y6 V8 R  w+ z' ]: m  D4 `
如图
2 J1 R2 s+ d# X/ t7 @
* ?* ^! \4 n  o4 F5 p7 ~! i1 g( k6 F8 W' O
以后的步骤照上面的方法继续就可以了
8 m+ u; W" Z% V( ~% l* L7 R) E& d. S6 [  k: m- I! K
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了* W7 g# t9 g, k. V0 o/ }; X
. k+ J4 ]' j6 w7 P- w! s  C! M
因为kernel32.dll的大小不一样。
! H: x: \" j0 A1 L9 o1 w
! D# A; x" m* A" g3.修改originalfirstthunk
( J0 e8 s* z0 ~
; w6 h5 U3 g( Z! Y$ n如图所示
1 z: k: ?) u2 g  u# N* W+ r7 p+ _: m- N# u

, q/ P; A' ^* A+ e2 j我们打开loaderpe,依次点  目录--导入表(后面那个横线)' e3 n$ _- m6 [6 x+ \
7 C; v7 U, i; W$ A- `
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll1 I' `# O* h* ?! E

4 `4 T* p# v& o0 z/ v1 N' X3 E我们右键--编辑--把函数后两个00修改为FF6 w$ v% t( ^" D- j% N8 ]& k

3 y' ~; _2 i  G$ R$ B# z这样可以过小红伞查杀。  虽然会出现错误提示  A9 U( R* M: M$ h/ k, m1 g, |
( S2 Y. k# a  w; M1 N- e: N/ x
但是不影响木马的功能,不影响上线。' |0 w# C" N- z  z. c
+ u5 E, V1 X3 Y
4.dll后面加20 90法过卡巴查杀
: d/ W, ]8 K6 U* D* G8 M; ]! t( ]6 O# [" j' O+ Y6 ~
需要的只是一个c32asm而已,非常简单但却非常有效) n6 P- C& R" D. _4 j* W2 I

" A1 K1 ?. ?' q/ h" u如图; Y5 y; p4 F: [, r

' s& e4 A# }& L6 D$ ~8 T9 z' k
1 h2 U9 p# o" U: O& Y
; v2 t4 k; R7 r% J我们可以看到,
  q( b8 y0 l/ N3 C3 Q6 U" z1 m7 O0 F( L, {+ t5 P" }, ]5 u% q: A# @+ |
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
# a" q% U3 g& J
5 |# q3 o: M' R4 @. E这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
3 ?4 t4 K; p: e) p7 G8 z! f  H
0 `% H; q9 A/ l9 B# I8 \我们只需要在他的所属dll后面加个20 90就可以了
) y( n2 d% \* Z( g
; O. Q* O7 p  ]卡巴目前还不查杀此免杀方法# i! ]7 L) ?9 O9 M! H" O

. b  [  s+ o/ R
# f8 n; k* S* h3 n8 Q唧唧歪歪这么多,打字有点累了
# E! m4 P- J8 Z% B. i9 Y$ d* p; D) m# K2 o
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
5 X8 O. _: H4 ?* t. U4 l1 P) n4 ]3 n1 Y6 `; L" e* n1 R' |
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表