返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
1 b9 m/ f/ e# B, ~. M
5 {2 d/ b: C- a' _* b/ v  G特拿来分享给大家。% J- y( d# R( g: i* J5 i
  g* r: T- @% j5 B# X* Z+ ?
今天我们不提我们国产的那些杀软,真的垃圾的要死,
4 H1 F4 o7 W( W6 K5 Q0 h
" x9 ?& c9 p! L+ Z7 V/ G! X4 ?上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表, K  f5 [/ r9 |5 O
1 U6 {" r! }7 O$ o
我简单的重建了输入表就把瑞星搞定了,
1 I& d# @& y( B6 _' V- ~. n- {7 T* O, U% z/ x5 t: t! p
失去信心了。我曰6 ?1 l- Y& D) b7 M  B7 r7 I2 J8 x

( [: Q- r% ]7 y6 `# q0 I0 C今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
7 P+ A" `7 C* M3 t( u; l; Z; d
. S3 L, _" y2 w7 W4 Y' V首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
! @- d) ?7 M3 L2 p3 W$ G- r4 E: L6 p0 x; [/ q# Q
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。+ c: u$ r. B+ t. s
# ^  m% P2 i  S+ _
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
2 l% c7 f8 O' b5 T1 m2 g
2 W7 C2 ]( |# m过了以后再调到最高,再做免杀。
/ Z6 J' F& j$ ^! ~; C- ]$ c
4 M0 D" K  @2 D+ L+ @' c  Y以上是废话,( m2 ^" t# V2 \; {& e5 s- k7 @

; s& ?. Y" `! a8 i  C好了,下面我们来说下常见的免杀输入表方法。" |  r/ ?/ _* Y

) `& Y# B/ A7 `" ?一。移位法: _7 r- |8 y. E$ s" X  I" O3 n
. ?& K7 x4 s* z( `4 I% ]
这个已经过时了,我们的国产杀软及时的跟上了时代,
' M7 p" A) T! ?) M4 R5 ^
! E1 h) u5 q, r& A! _移位法在去年过金山和瑞星,还有江民都是可以过的,
* w/ m5 {3 {/ O+ a- X( |& [, c; Z: {' \
现在的杀软智能化了,移位么?呵呵 ,追杀你。% m. U- v/ v  H8 b- J

% H/ {8 {0 r# ]/ d) q如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
3 e# G% Q. N) o  V: u" K
0 E' l  s* P/ b  ]6 s3 Z二,重建输入表( o! x8 P$ o2 m; B3 g6 E

0 z" Z) I. a8 _: o6 r" r7 b效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈8 H; I+ @0 s+ q* c
$ l  s. h' I% r  u- o4 w* U6 [
这里我介绍下,0 f! j1 Y9 _- p+ [+ I0 |/ J

  g: p3 U" G# J用到工具:, w0 H7 V  Q: U# U
importrec1.6
7 O2 Q0 _7 J& [) h7 Q  M2 Iod
1 O" H) p- ]2 X3 ^8 y5 O3 p. Cc32asm
4 s1 A3 T6 V6 F0 \+ z, Yloaderpe
  }5 q) h/ n, u- W. c+ w3 S! h' V这里我们简单的介绍下,如何重建输入表1 I& ~) N( u* A; g) n1 M
2 k' L6 m+ Q. V+ y
首先吧文件拖入od,打开inportrec1.6
: w* L& g1 s  C# `9 p: ?$ b
5 l; n% h6 J  ^0 A( i' {( I如图 选择拖入od的程序,; o+ H$ k* H6 F7 y2 b

9 [$ R; D$ q* _$ d5 K% @" |
# ?, V' g* Q9 I* s8 w' }$ E3 X这个时候,我们打开loaderpe,+ J  ^& j  U9 {( M" D; W2 W

% z  a, N8 N; d拖入我们的木马) X$ T( k" Y# q2 }
% ~* R6 W4 o( q& X7 C# \: B4 |* C3 \
选择目录,+ H# {2 `  Y0 \6 g; k5 F8 v
1 V, |( h$ O  I( c
我们看到导入表这里。。。3 W$ P/ V1 [) C; E& Q

- H' j8 o3 U6 }" ?如图:9 Z. j7 h7 @4 C, A; i8 o
  g4 u: d. o: {* l

6 z( b- o# S$ l$ ERVA地址是0001D000  大小是0000154C
' L' ~* N& B* L( {. I0 O9 C% f% Z! C6 |( R
好的,我们把这两个输入到import1.6里去+ c" W0 U. j* a0 y) t8 ^: |& ?

" P% h8 |7 K/ m% Y+ K- `就是在“加载树文件”那上面一点 + T. }, C( t( s/ V4 Q3 S

4 r3 j8 V1 \0 j3 o7 o9 v$ U! U  c输入RVA的地址和大小。
* ]5 z1 e# l: u! o9 o" D5 q" s$ X/ t& l$ U1 }: z: A  T
点击“获得输入表”
$ P" U& @2 B  I/ N! f! ?% ^) A2 Z$ o
6 @/ x) {: C  K7 d然后点击“显示无效的”. o4 N* v) D4 v8 `5 `! |

0 q+ c$ x6 q) Z接着importrec会自动列出% e7 W) J. T2 p$ A- y; F
! V9 \# }% \* ^- B; N6 s* G
我们把深蓝色的字体  右键   剪切无效的指针7 P0 I& A% z6 m0 u$ u
7 m, k, n! M) F0 ]% ]3 A9 F
' T: H7 i6 r1 Z) \# G
最后,我们点“修理dump”
, m/ A% y9 j3 ]  V
3 I0 [2 O! a) l! U" V- Q7 O选中我们的木马就可以了
7 z: {) f6 e) L9 k. {7 l3 F- O5 l) B0 O6 T( V
最后我们要用到c32asm
' }% w0 s. [: z" [1 z% D
" \! ^0 ]* S: d我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。4 |  n5 l! @* F+ Q0 B- z8 G4 i
' H1 _) N8 X1 B: m1 s8 ~( N
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)5 Q% o6 o* Y) L/ B( C

" q5 C" z& N* k# L6 S这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
* g. a% D; m/ b3 L' \3 f
; t6 ^" {; f4 T5 x) l! P我们把马子拖入od的以后,打开了importrec1.68 L- [; u& W2 V" `

: _) p% I( O" Y在选项那里,选择根据序数建造输入表和创建新的IAT
0 [3 g/ F! }1 J! a: u! K4 n3 o2 N0 {% y5 K
如图  r6 |' H5 h+ M3 H2 j& q
' r9 u) X6 _) E& }9 ?
' p. r; e. N2 e& X0 b0 E2 U, i
以后的步骤照上面的方法继续就可以了
1 Y/ Q/ ]4 ]+ h: p2 m- D8 W0 x# f7 u# R  S% j) T
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
; h: l# g, R+ m4 m& p' q/ O& N6 p' F( Z
因为kernel32.dll的大小不一样。, y1 H" N0 |5 l& @8 R# ?" l- W
: V3 I. W% m; C% ^- `: M: _
3.修改originalfirstthunk/ W. G" I( d5 ~2 N8 ~4 o# d2 T
0 ^/ [4 _. }& e' Z3 g) y" O
如图所示
! o' z, F& j, O" w$ o& e+ W4 ?& [0 X$ r) D9 w
1 e' V' o4 K! q( q+ N8 c7 ]
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
0 Z6 I( O2 [- K# r; o# q/ F% M) J, ?
4 _$ n  ?$ |3 J: B我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll2 F1 R. B3 }! }* C2 }' b

" q: Z2 v: e2 g2 E' R' \我们右键--编辑--把函数后两个00修改为FF
4 a, H4 |4 l' I* T: W. ?9 n% v' v; T3 d& o# q
这样可以过小红伞查杀。  虽然会出现错误提示! S2 @7 W# h0 H0 e1 l
' \9 a! p) U  u2 M) M( i
但是不影响木马的功能,不影响上线。( C2 F2 `  u7 l& M7 F
  ?2 D- ^9 Y; @0 r  |
4.dll后面加20 90法过卡巴查杀
# }7 O3 h  t1 K6 f+ n/ ~% A6 }  r9 c# p* `8 N/ z1 S: {
需要的只是一个c32asm而已,非常简单但却非常有效
% C& @/ z4 O5 A% b/ ^% v
8 y) B% ]0 D4 S6 C0 B如图
, X+ p* |9 ~" S: J7 e0 N: d" s5 u6 d6 A
% M% ~+ h4 o5 \1 T- l
4 }* ^8 f# _* [) G
我们可以看到,
8 O! _% x  R5 p8 f- S( ?
8 E( {4 J- \0 [* ~4 _1 L在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90, c$ ^# ^; Z. p2 P; V
/ Z9 d$ B9 x% R; T" S' `
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
* |2 K$ s; j, M) Y1 C! w/ N8 _3 G' N2 e
我们只需要在他的所属dll后面加个20 90就可以了  |/ h7 I2 p8 }, U0 X4 S
. v6 S% [+ X4 \/ k' @
卡巴目前还不查杀此免杀方法
' A  O& y" w9 t- \5 K
4 I: ^% o; p8 h# R1 C  k  N7 n9 f5 t
唧唧歪歪这么多,打字有点累了
6 ?0 w  D* {$ S( A2 |
! E+ `+ H/ ]. G" i以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
% h2 Y0 x9 n. R' z0 u0 D+ Y8 `+ W0 \$ y/ j4 L. B  I
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表