返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
5 I5 b$ x9 T1 _; J' y9 \
+ N& ]' x0 f7 {& r: s/ `; i: }+ l+ k特拿来分享给大家。
% X) ?3 Q( D. m& |0 K) R( k- K5 c" W) y- F" ~
今天我们不提我们国产的那些杀软,真的垃圾的要死,
$ V8 u' p- }! `9 x9 C8 v$ M- ~! w/ y4 R* s+ H, x: A# T
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
' Z: L. w0 s% ?
2 J& ?% Q  V; |我简单的重建了输入表就把瑞星搞定了,' d& G5 W$ u. q. v, S! ^, T

) {7 C% f% N4 }$ D. I' r! @4 ~- w失去信心了。我曰
* k4 k/ D* P4 Q0 a; C! H. G8 ~: L2 r5 P; K
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。( e' P$ ^; x: d7 n" A

* r! A/ V$ G/ I! W: ~" s- W& y# M首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。/ K: l' Q- s0 W* i

3 F" O& z, ]: C5 J" S外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。0 e# x$ a5 A6 n

* p- _4 q- \3 p& H: G% q高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
% d0 g& W7 K  o
2 L$ x& f# T  }8 d过了以后再调到最高,再做免杀。1 n/ ^; ^* o  H8 p( Z- Y' G
. a2 v5 S" T2 ~
以上是废话,
: T( ~/ q) j6 C  V, m
& w1 O3 X" D8 i) S好了,下面我们来说下常见的免杀输入表方法。+ m) s$ ~, J/ N$ j( W+ z

- v/ |7 ~, Q1 R0 c一。移位法
' _7 Z. I; T# O; n' |
( U' a5 x* M3 ~! U6 V& n这个已经过时了,我们的国产杀软及时的跟上了时代,
# l+ Y1 F& @% L) f4 J; |# h/ k- q9 k( G, a& p! ^6 r
移位法在去年过金山和瑞星,还有江民都是可以过的,
3 n$ e! h5 Z0 `/ R/ p
$ U% s1 M* c5 H4 [现在的杀软智能化了,移位么?呵呵 ,追杀你。
5 ]2 Q) l( u8 V" m% F, Q. a9 f
* o4 G# ~: u& W! V8 E如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
. }! T  U) F0 Z. p; b
* m7 l: j5 x2 b( z/ J二,重建输入表
/ Z# l; V) H  M+ A+ V& A
7 L, w$ y5 p" J1 V" I$ M效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈8 s8 S" ^! H3 U/ [# T) i* ]

6 e/ _) k6 A$ Y; `7 `: B; _! B这里我介绍下,' p6 F$ o: ~# f, m' B9 W+ _
( y4 A( h! [0 ^* D9 s
用到工具:5 z( j; T/ W0 S$ k
importrec1.6
" v' }6 @$ U, hod- _# ~3 }. U5 u. B- ?% b/ r8 m
c32asm0 w6 M. W1 L. {1 C+ s8 H7 e
loaderpe
8 T. O# H' |! b8 V: C7 ~/ g3 b这里我们简单的介绍下,如何重建输入表" N" @2 v# ^0 {& E: ^
  V; m) _  g; ~& v! K* [  q
首先吧文件拖入od,打开inportrec1.6# X* k; S8 W7 ]0 D) B

* k6 B/ b- @5 [4 y如图 选择拖入od的程序,8 s+ M5 x1 W9 N

: l) I9 x; _- z2 D8 }; z
/ p- y. f: g$ n* [1 k$ L这个时候,我们打开loaderpe,
8 f' G) v4 S  I5 T# F
+ q' z0 b' a6 t  M8 x拖入我们的木马
5 ]& m0 O/ }- [9 g% `4 @8 U5 H4 u3 L" W& c  r% ?7 g& k
选择目录,
$ w2 L7 I- p/ u! ]2 ~0 `  b; u' v; \# ^  q% S5 V
我们看到导入表这里。。。4 q0 H1 [' E' U, f

" H$ e: x9 r0 Y) E# `如图:+ j% G# P7 v9 n9 J  F
7 u/ _9 x( ~4 [, l
* m! W$ J% H9 c& i( F: O
RVA地址是0001D000  大小是0000154C5 x+ N1 Y: q( [# E  i% D$ f4 r

+ _( ~% b7 Q7 X* Y好的,我们把这两个输入到import1.6里去: w3 B, q: q- s- B4 H! D& a5 ^

2 d. \5 n  y6 Z6 M6 H( x就是在“加载树文件”那上面一点 " \  M' i3 g' L) B1 I+ }0 l
* \8 s4 |9 z! \3 r
输入RVA的地址和大小。
& _- i1 [5 ~+ ^3 {* i
4 W0 x. H% M% T9 \! K3 \点击“获得输入表”
7 z) Y/ s3 m+ ]) P5 z' R
7 f7 J5 m- e5 V7 W3 z7 E6 F* c! Z然后点击“显示无效的”
) Q/ w  h# W: A$ T2 P- k6 u, J( y- u. x6 U* }" U# \
接着importrec会自动列出
* @' g! G; Z1 k, B5 {, }) a. {  P* N; v: L5 j& x
我们把深蓝色的字体  右键   剪切无效的指针, @; D( ~  h$ A% m8 i

6 P. O. X5 t2 P. K4 M/ X8 l' X" X& I" Y+ i
最后,我们点“修理dump”" F4 g! j8 }( R: g1 {

  G  O+ n$ x6 T" v4 `. o6 Y选中我们的木马就可以了
% a& |" d* Q1 g* ^$ f5 }8 l) K% ^9 k' O; k9 C
最后我们要用到c32asm: R3 E4 [2 s4 d2 c2 \$ E

& z7 K1 ]1 Q  ?& e- }我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。2 T/ Q( x+ I/ C/ r* [( _
  q5 R( s# a% }: W: H6 l
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)' D! I! |( |6 e* W  m! P! R7 _& X* k
  o# ]; ]0 y( Z6 H3 b9 V7 v8 Y
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
' q% r, F# c9 s1 y8 k& {$ r
& ~2 p3 F7 [6 f  v: r我们把马子拖入od的以后,打开了importrec1.69 V% p1 h% x( \) Z) M- N1 U

5 x) y& S9 m  ^& ~. d6 B% @( q: {在选项那里,选择根据序数建造输入表和创建新的IAT! M. c" s/ O. K% I0 Y* i  {
) o  b" P& \7 a% K: a) j. q' M/ P
如图% [5 B! [! ?6 n" s5 u( O3 B% h7 K6 Q

9 n" I# @+ ?5 ^* q4 C
: W7 v9 C" S6 D5 a! s以后的步骤照上面的方法继续就可以了0 e, d4 ^% J4 y4 R2 a8 a& G6 k

! Z5 l) R" N4 K$ U  g2 L3 y不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
* D4 p: ?3 n( L* q+ @$ t4 f! e+ b8 [; Z3 J3 ~) y' {- U  W
因为kernel32.dll的大小不一样。# r5 c5 S+ ^+ d1 U" g1 Y9 i
& {. h2 _: B1 ]3 m9 o0 H  z
3.修改originalfirstthunk
! |" v- h/ J, n$ f4 E  @4 R: j: H1 M3 r
如图所示* K! X! r% P. S7 W3 O

3 V" c; \* `7 k8 z
1 U8 q" O" D' N6 G4 e我们打开loaderpe,依次点  目录--导入表(后面那个横线)
4 Q' n( d& ?1 M  C9 f- W: Y$ @3 ?; I
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
6 Q+ ]7 Z6 \3 Z- X0 G$ p* o. M# F! X5 a9 R5 W
我们右键--编辑--把函数后两个00修改为FF7 {  T% l: h  A' M+ X+ ~
. O: b! q+ K3 \1 P5 s* t' T
这样可以过小红伞查杀。  虽然会出现错误提示
+ f9 s% Y7 ~# w1 i7 f" R9 E7 [. \# C" L1 {6 E5 _5 ]4 p6 [' c' \
但是不影响木马的功能,不影响上线。7 D% i8 E5 y) G* N' h3 F( M
2 r$ K' J  u6 V+ w7 T! y2 R6 a4 Z
4.dll后面加20 90法过卡巴查杀
) }, {& I$ F+ D
2 y8 W8 N8 A* Q0 ?需要的只是一个c32asm而已,非常简单但却非常有效: N  c/ U6 X, X& j' a# h

* D3 V& x) k% h( E3 l/ E如图' _. I, i4 a0 I

. r* j7 a: v) a) v7 M, h* b
9 w4 w# _+ D  W8 b. d  V7 O
$ O' r4 i! ], m$ Z6 g6 H( L# B我们可以看到,
* z. X9 [2 U8 \7 ~7 v
& j# F  n7 {4 p( T3 }0 x在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 907 O5 X+ Y# q: U" e) W1 c  R+ \

- ], p8 J2 e, a这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
% x6 I* ~3 @+ ?# p5 I4 |, n3 D2 U2 {4 e! ~( ^- [  [
我们只需要在他的所属dll后面加个20 90就可以了
% o8 }5 r0 [5 s; i: f# i
7 y  L' P" W3 v卡巴目前还不查杀此免杀方法6 f7 t+ c' p) {6 G' `2 ^+ Q) O( ^0 f# }
: g/ ?0 `1 \: Z0 i# Y" o7 D4 T
* C. g7 a0 h; [
唧唧歪歪这么多,打字有点累了
7 ]4 A. k( m+ s/ L2 S* }# T9 E( E& Z
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
% M" H2 T$ ]8 f, w' t. t- w
1 \. U" Y. ?, N- Q/ j3 m8 |1 s8 M1 R[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表