返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,  T2 _2 j5 r( A) E% {( w3 {$ z

* t1 H: r  E( h+ V( D9 [特拿来分享给大家。
2 i. _0 G# R* P/ \( C. _: D. \0 r3 j% k9 `
今天我们不提我们国产的那些杀软,真的垃圾的要死,
) h( z% s; b( N: ?5 b! ^
- e0 ?/ ]0 q: F: L/ M: X上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表* U% w7 V4 \$ h3 `2 l$ q# R

: R% h0 W0 f4 C$ `( ?我简单的重建了输入表就把瑞星搞定了,! l7 l) `9 Q$ B$ P+ z. b
6 u, I% u4 c" E) m  p" ^
失去信心了。我曰# v6 M2 r# H- C& E2 k/ u0 R# Y
2 e* X* G% y$ t- e
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。5 d/ ^4 ?* A6 x9 V7 T

  z& \8 V0 ?, h7 v! F' h$ H首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。' W. |4 M; ~2 X

  b5 M; g; u/ F1 W. Z! C2 ^' w1 q外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。5 ~9 B7 m0 f) r% j3 u) `
# h) E4 j0 Z+ w. B9 }  t, L
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低) Y5 W6 Z, A0 \0 W
  Q5 h9 }9 y1 |. Y
过了以后再调到最高,再做免杀。7 j. H7 f7 v" V1 @6 H- M7 \, ]: X
; x0 S+ O. R8 D
以上是废话,
3 ]0 B! T7 H! @; ?, e. n0 k  F
4 }1 a0 G) L1 a好了,下面我们来说下常见的免杀输入表方法。& [. g6 p) M' S7 l
) `) N7 {2 f4 Z! r8 m# S/ H# a
一。移位法4 m3 @" r! N/ ^9 n' F7 N
+ ~: |; T3 K: C" d8 ^  U5 c# ]
这个已经过时了,我们的国产杀软及时的跟上了时代,5 U7 S5 E; K' p! I; G, D* A5 }
: X* i0 H% i/ K& {
移位法在去年过金山和瑞星,还有江民都是可以过的,
/ d- n) |. Y: H. q' ?' c; B' s3 {5 {7 E, E
现在的杀软智能化了,移位么?呵呵 ,追杀你。* ~2 G, V5 E+ v. j, q

8 I4 F& s! @; z, v# q% S8 S如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
( H( W7 ]; b" k$ v
8 j% _: D3 q5 f) e  i4 h. H4 G二,重建输入表
4 H; N% L( W$ ]7 [
0 _  P' e; t* z0 W效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈, F7 {, f& [6 y. d

& E: j* A5 D' z9 I& q1 C  x这里我介绍下,
' q- P" C- {+ r% \+ _: W
) B  |# b& n/ |3 E. n% U$ Z# o5 _; @用到工具:
7 s& C1 m6 ]1 I- Dimportrec1.6& _/ `/ ^1 F9 h+ Z- G4 V
od
2 `; g' M( C2 P4 H# m: ?c32asm8 K1 K( g3 `! l2 v: j
loaderpe
0 J& s- t) C- w5 i! }. D8 m这里我们简单的介绍下,如何重建输入表
  s+ h6 a. {* e& Q0 l
5 l* q+ B! K( Q% [9 U首先吧文件拖入od,打开inportrec1.6
. q$ M# K5 c$ S: ~# u# Q' V: L7 D, P5 u
如图 选择拖入od的程序,- H, S" R9 N5 t( X( D3 v  h

/ t* v$ ^0 X! X. \8 \$ F- k3 `) g) X: `" a. d+ C  y  V
这个时候,我们打开loaderpe,/ n8 A0 A8 F6 o
4 P/ z  |! N2 Y& S
拖入我们的木马- b, B0 ?! I3 z& h0 l) L# W
% `6 }2 T% }- ~( j, I
选择目录,
2 J# O' ?- [8 e1 g( \
0 J1 [6 B' n, G3 z* G' I我们看到导入表这里。。。  I8 I* A4 {$ H+ P! g
+ L$ Z4 E% D$ ~. m0 g1 p
如图:
/ W/ d9 B- v( @% j4 I9 H
. J9 w8 g' r5 N& m' K
* I% x2 ~. \% z; _; A- KRVA地址是0001D000  大小是0000154C
. a3 g6 ]4 g' O) `: E$ x7 |) V% Q8 @
6 z) `" g- g7 W0 G好的,我们把这两个输入到import1.6里去
8 L7 Z- M# d4 ?7 D3 {, O3 U/ j% j/ v1 t
+ ^0 `' s3 [5 Q( h- T0 `& [就是在“加载树文件”那上面一点 8 l. I0 S, h6 R! M: g$ O
9 |( H6 x$ A1 d6 `: u: I
输入RVA的地址和大小。
; }8 v/ j0 D1 W# k1 J; ~5 I& u  z
点击“获得输入表”# W* q" e0 l; l

" o4 \; f/ y& |( C然后点击“显示无效的”
# H/ v* }9 Y) i& ^- C8 B' u
4 t. R( X) m- D6 `# g# [接着importrec会自动列出0 F& Z6 q8 S2 I1 G
/ o. U. q+ t8 t, L5 P& }* N
我们把深蓝色的字体  右键   剪切无效的指针% {  @, t: A- |7 }" S
6 ?2 o0 ?# F! T5 K7 \

( p6 h% b4 K7 [  W# c4 T5 o- A最后,我们点“修理dump”
  P) m% I3 H, s7 s. A4 o
' ?) D# g1 L5 L5 V$ i5 _选中我们的木马就可以了
! s+ g! J- I" T; D1 b7 N- O1 R; i5 k" N3 h- r9 H
最后我们要用到c32asm1 _' S4 |' ^7 R& }3 Z- z
" S7 K" _  R) g2 }( |0 E! {. C
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
. f% e; D& Q5 a$ t; B  C6 |7 s' Y
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
+ w+ {2 O- i& t7 D) v+ x4 m* N% ]" S1 I% E
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,( j" |4 Y  Z+ ?" ~9 L9 p2 H

0 S+ p$ f# @2 h/ L& ~: y( U我们把马子拖入od的以后,打开了importrec1.6
3 z% U2 j+ ?1 {! E5 X/ L+ }0 _/ _# R3 }3 j3 v
在选项那里,选择根据序数建造输入表和创建新的IAT3 c! o" N" q' S& g% r
/ W) U7 Y9 ?) i2 z0 h4 n7 G
如图% i0 R4 r; z- t" q. o

; g$ r- I9 t4 Q, p- v( R/ |
( x! Q; G9 o: Q) ~/ o+ B以后的步骤照上面的方法继续就可以了: P4 [* U8 E* h8 v
0 h  x1 B! s1 }
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
/ y6 c* ?- K, y5 N0 n& o( e% @2 U5 p9 c4 z1 I% z
因为kernel32.dll的大小不一样。8 q0 ]* J# l' r
) g; J: [' ^6 O$ r) s- A7 Z
3.修改originalfirstthunk
0 T6 a. H: z" F9 R4 Z
7 Z9 Z# E' G8 r. J& n* ]" ^$ D如图所示
& Q9 {- g' Y, I" K- u0 |) I( D9 U$ ^: p

" {, B/ S" e" L  V我们打开loaderpe,依次点  目录--导入表(后面那个横线)
2 H( y3 b7 p& A, D5 B2 I/ ~/ }% `
9 }9 R& u  Y' }% D% Z我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
* \" P2 J) l1 F7 ]) g& u  _
- a. _) W5 x# W. F, h8 `我们右键--编辑--把函数后两个00修改为FF4 e) A: ]3 H2 F; @1 U% v

& D4 C  r  A2 t  q4 b( U% Z9 ^这样可以过小红伞查杀。  虽然会出现错误提示4 K: `) T# R+ x8 K
$ B$ W1 ]1 D# G& z, w  g* D
但是不影响木马的功能,不影响上线。
. J' c9 |3 U- W
, ^% v) ^' P9 X* {1 c2 i4.dll后面加20 90法过卡巴查杀
# ?- W& a( F0 H2 w4 `, G
  \/ _+ K  [0 p$ f+ K$ k+ l需要的只是一个c32asm而已,非常简单但却非常有效
! [3 U0 v( `9 d3 n- D0 M$ C! m( f" b
如图
4 y4 z6 `, m1 _9 M! w  Y2 Q7 y. Z/ _' p/ b% r
  E5 r9 I- N4 g8 Y
) Z# L9 E. j' h$ x& \
我们可以看到,
% j, s0 c; w9 B, Q
6 ?, i: t2 N( `) x# t/ v2 A4 r7 V1 [在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90$ O# ?. {6 r* L! D9 I2 j( K1 W
4 @- V+ R: d0 T
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection  g  O) A0 G/ r8 K
- {$ U- w5 Z$ ?" R2 H/ X
我们只需要在他的所属dll后面加个20 90就可以了
. n7 I) \) n& f, j+ a8 v1 d  T: |/ q& g, L
卡巴目前还不查杀此免杀方法
5 v8 c/ k* r! |
2 ]  y/ ~: b7 r1 x  c2 p4 T
( A. f  ]. @6 g. t: t- T唧唧歪歪这么多,打字有点累了
2 A! d9 f. Z6 V. y4 e& m5 L- t7 s5 B& c# A7 w3 d
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。: Q4 L, b3 S) ?% ~! P" C
4 m/ V$ X9 J9 W2 d$ I
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表