返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,- O  Z+ U# H3 ~# [) f; C& ^2 K7 W
! n: d$ Z1 z" i) j$ E8 S$ O1 L
特拿来分享给大家。6 |/ V% N0 w7 l/ I# H

+ E- W0 w; _2 C) h7 Z  Y/ D今天我们不提我们国产的那些杀软,真的垃圾的要死,* @  J' k( Q: q
& c2 n4 W6 O) c" q: n" m. Q
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表4 K) J$ x/ C& C7 l

. j' r! m: z  @我简单的重建了输入表就把瑞星搞定了,6 Y7 K8 R0 l, |4 H9 {2 L
) n) ?( S8 Y' f
失去信心了。我曰7 X3 }" J1 A4 ?0 ^$ ~; P
4 k4 Z) a+ w6 `0 {2 e
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。! M8 T" [8 q+ y$ r3 F3 f' ^( Z3 R4 S
5 `( d. N; K; c' I  h
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
: y0 g7 H2 l; [, ?/ t$ U
% q4 v2 [$ ]3 m: g外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
( l! P( b% n$ ?) D$ Y4 S7 B* h5 s/ w+ D& ^
" u) m( o# X% O; @+ G' _高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
# L$ d& _8 N* e; o* T) a0 g( R3 a2 h- g! e! n7 a- X
过了以后再调到最高,再做免杀。
) Z/ d7 u! r; h' R( f2 V1 u3 d( \( m( [5 z) ]- E+ q
以上是废话,( ~2 ]- T4 n) O5 c

6 ~2 d  L  `( `3 j; A: P" k& Q8 x" ^好了,下面我们来说下常见的免杀输入表方法。- a2 R; i+ z5 f) }& ]! `

: e$ B7 |+ I  e1 R一。移位法/ D$ {4 i" d3 Q6 }
+ h3 r. B8 A+ B, d' m2 r
这个已经过时了,我们的国产杀软及时的跟上了时代,
/ B4 J5 {1 c, b: A2 L
1 R% }6 I& y. F, q+ O移位法在去年过金山和瑞星,还有江民都是可以过的,
0 E* D1 ]7 W- K. e0 C
  |+ E; d9 S; J1 {, w% I6 F8 G# P现在的杀软智能化了,移位么?呵呵 ,追杀你。2 L8 g5 u" h; I% I! K5 S6 e

4 {7 ?; s* y0 X8 y# B如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。0 A1 A- p5 w) s$ u8 Y

! I+ u3 e& k9 a+ c4 Q* T二,重建输入表: k3 Y5 w: A/ Y, w8 k  I; {, P( M5 ?- o
# u- y7 ~  g- ~& M3 P# \
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈  d& L' |. ?* C: V. W% N+ G, q! E& R

" }: I% {# H" l8 H; `这里我介绍下,. v4 q5 f5 m: H! W) f) K& F: \+ \  N

9 V% J) o2 I# H# G用到工具:
; W6 g! ]" y5 q; zimportrec1.6
7 j2 [5 l" y& i# Q: wod
3 q" J% V+ T! u3 P/ f" T, Lc32asm# ?; q3 C( F% }) f0 p. ]2 O& l
loaderpe
. U$ l0 C( E# d8 V4 w- c5 N) G这里我们简单的介绍下,如何重建输入表
6 b0 X& d: E8 b( p8 @/ N2 h' f
5 n9 y' K$ M# P2 i" x首先吧文件拖入od,打开inportrec1.6
- ]4 V" Z7 F3 A- l' z
! B% O; m9 F0 c: }! p如图 选择拖入od的程序,. {2 h% Q8 c8 C  ]; |* y
0 H2 N3 k% X9 p& n3 S  D
7 m9 C" C8 h/ r
这个时候,我们打开loaderpe,3 s: u1 V! U6 X! n$ S+ |% E5 ?

! S7 U- a# E& i1 f7 Z# Q+ G" ^拖入我们的木马
$ Y- j$ s0 `6 `6 [8 |" |5 p  u& C8 l
选择目录," R& ^3 ?' D  r3 m  s

+ t! V8 E! z7 J$ D8 d我们看到导入表这里。。。4 E/ @1 D  \! @  r
1 G% H1 |( T, z" I* q# }% \4 K& Z4 r
如图:
( [8 z, M$ r' ^1 A: ~5 _0 r1 I. r+ |& ]1 g

- Z& O7 w6 S$ I9 KRVA地址是0001D000  大小是0000154C* H5 |% a0 i  M, O% [6 I

7 g1 O' p; Y3 W! m9 \好的,我们把这两个输入到import1.6里去
5 C8 g. d/ H. l+ ^" I6 d% G. n# e# {- P. s3 B- {  D
就是在“加载树文件”那上面一点 7 |, O* O$ ]( L) Q7 v8 m& t& W

$ m# s* X" d7 N* B' C' N输入RVA的地址和大小。* v" }- M9 H: l; M8 c+ ]/ v
* i" G5 H" m, [* y9 E# E8 [
点击“获得输入表”5 ?' b  R$ b! ^! g

1 \6 ]. H. H$ u' j然后点击“显示无效的”
9 s; c. _6 f5 v# k: T5 a
1 E0 d& _3 R1 R3 T! K( K接着importrec会自动列出
0 H: N/ w6 s9 \; H; g
8 ]1 C! V( F& b我们把深蓝色的字体  右键   剪切无效的指针
  t* Q- ^; N& S, g! r
8 m+ w* F2 r- K: \" r- C) I! Z7 F8 Y% j
最后,我们点“修理dump”" N2 t$ S  D* T& p( s
, H3 L! f$ y: P: ]- w& ~
选中我们的木马就可以了
/ u& b+ L+ }- `: t/ F; z$ O$ }; u
最后我们要用到c32asm
$ s7 a3 J" _  e# A9 s- n7 h$ _* v) ]4 j' M# v+ G8 u. D& N
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。* F+ @$ r/ H, ^* n9 |1 z
( c, X8 [& d0 _8 \2 F
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)& D, M8 Y; K8 y; b

- u- c+ @/ s2 c* @# C这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
5 t8 a$ x& n6 {" v* K) t
* a$ ~& G* X' U- @; _我们把马子拖入od的以后,打开了importrec1.66 l* J$ l4 S# }6 ^% b
" I# v7 r1 S8 ^0 }. V- r1 h
在选项那里,选择根据序数建造输入表和创建新的IAT
2 x' P2 D6 a  R  q! S7 M% k2 d
- A- b9 x$ i3 u% k7 x2 a; U如图
2 {6 q, V! _- ?  ]; r2 b
- W1 q# u6 @. Z, {% Q
2 c0 W! \' v. U( D# c( S/ {以后的步骤照上面的方法继续就可以了) C8 W% N' ?# A* J
% d) H9 s) p1 W' s
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了' f; I/ F+ w/ ^' H. Y) D+ x

8 b% r( w2 M  V- b7 ?3 K3 E因为kernel32.dll的大小不一样。! {7 f/ |7 x5 {) x* q% t7 H0 U
7 r' K5 d( U0 a5 U6 v* X5 e; P$ A
3.修改originalfirstthunk! p. Y. q6 ~5 @- ^8 R
' ~8 p2 H: C" b0 M: o8 b
如图所示
" ~+ A7 ?, \9 F* x( [6 D( ]: Z1 o
+ `  T# r9 H! q4 t% C
- y$ @' l, Y1 n3 L# K我们打开loaderpe,依次点  目录--导入表(后面那个横线)
# ^8 {- y: S( e* i+ Y! O
; X3 F) F9 e% \' O0 F: r2 M我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll( p! p. M0 E. N  t' @: b! A
0 @. V; m+ \) g7 y; F" t- w
我们右键--编辑--把函数后两个00修改为FF0 K+ n7 ^7 T; j4 u# s- b

' m5 D7 J1 @6 |8 t0 j; i  Y这样可以过小红伞查杀。  虽然会出现错误提示/ \- l* k1 x3 j* X9 [* X
+ s  @) T3 s/ j2 S3 i: P
但是不影响木马的功能,不影响上线。% m/ `1 F; ^' D" [

: H$ A( V0 Y. Z4 k6 d7 I4.dll后面加20 90法过卡巴查杀
8 Y5 X5 F/ N) ~* H" u- a0 }9 \$ w6 U0 x4 V
需要的只是一个c32asm而已,非常简单但却非常有效
- ]  @3 `2 D) L/ U0 H4 m% h8 i/ h& L  v7 q& R- e
如图
& T5 W8 }+ o. E! q+ ?% U# n( ^/ v. o1 R8 l8 b- ^1 ?

$ V, R5 g4 ^  o! K! V" Z* n
% N4 g2 X" d/ [8 K# u( Z我们可以看到,
* E. i" u8 `& X4 y2 m
6 M' @: E8 S2 K& R/ S$ ]; x! w. f在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90+ l+ n. E) Q3 [4 C
2 m" F* a  l! M6 B
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
/ i9 b. Z4 U' {" G, d  ~/ Z: Y) B
0 n' J- i% ^" \$ h7 G  @* U我们只需要在他的所属dll后面加个20 90就可以了) v- J' f$ ?1 i- W
5 l9 p: D# g9 D6 b8 @
卡巴目前还不查杀此免杀方法4 Y8 ^9 M  O8 x# _' A" D! h
% x' U) a7 m: E9 \% V4 h
" c+ t7 e: K9 c& {/ D
唧唧歪歪这么多,打字有点累了8 Z4 U- C  i: C- B- Y+ @

  m1 ?$ P6 h/ G5 |: y# u/ W* U. b) j以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。& T2 {; L+ _) e6 Y( ]  f/ L/ q$ \
+ b2 I9 u: {. Q
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表