返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,! {5 y- u- t! t- {8 p' o5 O

) ?# [0 v6 {+ z, |( P特拿来分享给大家。0 u$ Z: P  H) q& `6 Z

& a1 W& L, k! a# s今天我们不提我们国产的那些杀软,真的垃圾的要死,. n6 x: P0 \: i
, X& M6 P+ X( y/ |
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表- |0 w( n; {* x$ Z4 |2 F

5 Q, M+ b  @+ o0 E6 y5 k我简单的重建了输入表就把瑞星搞定了,
* M0 F* @8 \0 _. r; q; U
! ?6 j4 p& n  {7 B失去信心了。我曰- W6 f. e5 A. H6 e1 o* b
( Z9 f, `6 t7 _) l
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。( W4 ^6 y& H5 q* \9 L+ {  k& g# {

' O& w8 ^/ _' V* w0 B5 S6 G4 n首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
' ]1 X  q3 v4 {5 }) \! e  }; z2 r* Z7 U% t' {+ F5 ~
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
# I! [% F. f) V+ |% r+ i; t) z( m; e7 v) @3 h
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
  n$ H; V/ g1 n9 _5 H0 ?
* K( Q9 }. r) |$ E: ?过了以后再调到最高,再做免杀。) o' \! V* T5 |5 y

1 x. O4 M; v) K, c7 f以上是废话,# t; L+ `' R7 X6 j
* a5 B" Y: X# }9 l
好了,下面我们来说下常见的免杀输入表方法。- f& P. ]& m, |* Q1 H8 ?. e* D+ L
, P  h, @+ q5 e; |' a; p
一。移位法
' @2 D7 }  O9 B5 Q* L9 }7 F
7 f( _* S$ q. Z4 E$ I7 k* c这个已经过时了,我们的国产杀软及时的跟上了时代,' J+ W$ W5 \* ~  T. b5 s

/ k% m6 ^1 t- L% [7 }移位法在去年过金山和瑞星,还有江民都是可以过的,
) u( C4 ?% A; M5 n% B: V/ b" B
2 ^6 Q2 k8 D& A2 I: Z现在的杀软智能化了,移位么?呵呵 ,追杀你。
1 p2 z4 p% s9 V6 h) Y, M8 L5 m* ^1 S
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
. }5 b7 A* L- J$ l: i0 h  C1 i+ D3 N2 I1 ^: s5 m
二,重建输入表
7 ?- e1 |& _; {* x9 X9 T, L3 f/ a( D- ?/ b# I% S  Y  W
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
' i( R& c; T4 Z& N$ r+ X' }% I; z" K+ B$ t& X, s
这里我介绍下,/ g. E" e- h6 X0 S9 F& k. p
- [5 @2 E3 ~" U5 X7 C
用到工具:
1 T. B. Y/ ?  k/ ~importrec1.6
$ A7 q& l* N$ A  X. Lod3 W7 z9 o. u/ D
c32asm
/ F* }( O* v' X; K% W7 L0 ^7 {loaderpe, q' b. N! y) |
这里我们简单的介绍下,如何重建输入表
; C% Q4 E' p0 z& n; M/ ~
( @- N% h# O! y3 ^7 H3 x) l首先吧文件拖入od,打开inportrec1.6- b, ]% J( v# G
* H  S9 i& L& F3 T8 k
如图 选择拖入od的程序,$ f8 {( H- _8 ~5 c, m, H7 H3 _

$ k; p7 P0 J- M+ q) b/ x4 D* _# k& Q6 s( ]1 Q
这个时候,我们打开loaderpe,' Q8 [0 K" s, Y+ a# `& R

1 K) k7 i7 z4 R, i; i拖入我们的木马+ i* Z& }4 a* B& M( S5 S3 g

! L6 m, Q" m7 v% s! p: h; D5 {选择目录,
- H1 v; L, |* U7 @- Q% K+ X% I* _  b5 l1 }- s
我们看到导入表这里。。。
1 U: h" G+ S/ D% ~2 g  O/ {
9 ?- ?8 T( s/ C1 S+ M$ t: s如图:
3 }" X% S: @6 d# N$ d- {7 K9 ^# g5 E$ C* O* n
2 c1 Y6 g" p* x5 ^
RVA地址是0001D000  大小是0000154C
+ ?: H% ?& w' x+ [5 F! ]  D4 O+ I4 L3 F
好的,我们把这两个输入到import1.6里去' k" T/ z3 T5 o5 a

$ @" v. H; W7 g- E就是在“加载树文件”那上面一点
" T" Q0 M& g. Q) {8 x: S. y: p+ w; E- ?8 s
输入RVA的地址和大小。
9 q( R% H$ ^0 U( Q; \/ A
7 n; c  Y! H7 {点击“获得输入表”4 W( @$ i4 B& n8 a! t
8 z8 l. Q( x8 X3 B+ T
然后点击“显示无效的”
' c+ w" o3 i5 [5 v, ?  R% B* W) S# \: i
接着importrec会自动列出, p1 M+ K5 o( w  d, T2 x+ r
8 b5 z' U( L& q9 Z
我们把深蓝色的字体  右键   剪切无效的指针
4 |! U3 Z1 W; H$ c& A% t9 X) G# n  t

$ ?/ F+ r4 F% L! ]: C最后,我们点“修理dump”, f5 g8 s9 q' r! V% D

7 H2 K3 n5 y( R. d* ~选中我们的木马就可以了  }/ |9 N; j$ w6 R

  o0 }5 [( H/ M1 M2 t最后我们要用到c32asm
# g0 ^) e0 c# D' l9 q2 O5 f0 ~; s7 f+ v; L" z
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
- Z, ^) R4 A6 s$ p
3 A/ C4 V2 {* c. ~+ t1 ^: \这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
5 U4 b8 }+ G1 @! h) }2 j( n9 V$ Q6 z6 v% a; {8 R; d
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
! M  ]$ a$ L7 c' f6 T4 i  P0 A( q! M* c8 W/ F; u/ u* b
我们把马子拖入od的以后,打开了importrec1.6
8 x% J! k. z6 r: S. }1 N6 D
6 b6 @9 I& ?! @) V1 h6 W- ^在选项那里,选择根据序数建造输入表和创建新的IAT6 Y! I! n( x9 t: |

& F9 g4 f" r& s/ b$ u- W% K如图2 k4 K! P1 G7 ]$ X

! H& ~$ I5 R$ ?$ i5 Z6 S; m
& X' U$ W% k; d以后的步骤照上面的方法继续就可以了. g& z' V3 X- S! z3 j. ?( H

6 w- c1 ~, }: m* S不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
# L/ g# G( _6 |) ~7 H- Y. G6 i# T& P# s0 M+ C3 X, @
因为kernel32.dll的大小不一样。
" ~4 U" j% `% q" L) y3 F$ j) c' U& B/ ]1 B
3.修改originalfirstthunk
  V- W' e7 u# v3 d! k3 x/ h+ b3 j  {. |- n% W
如图所示) ~8 h- e8 b$ I  l4 S$ ^
2 z8 l( x  z4 }4 B4 m! f: J

: a% ^( k. t- d5 f+ d我们打开loaderpe,依次点  目录--导入表(后面那个横线)
% m* n% t0 p: O8 W2 `2 A, G
5 c* r. @" Z. U5 y我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll: |. d/ i  `; D8 \% W# P

" Q/ C$ w. |8 F1 i- L: b9 R! f我们右键--编辑--把函数后两个00修改为FF/ I2 j. j/ I* e* j

5 W. U9 g0 W5 ]这样可以过小红伞查杀。  虽然会出现错误提示
; g1 V0 U; e* _0 p7 C+ z% ], o" e: B3 c' `; I/ G) Q' L. F1 V
但是不影响木马的功能,不影响上线。$ g! z, c6 g9 |7 ^. q2 j" ~

$ d1 G; h  L# A1 g" w4.dll后面加20 90法过卡巴查杀* ?0 T$ {3 Q, F/ Y, @1 W! _
- R2 i( z# ]- ]- W
需要的只是一个c32asm而已,非常简单但却非常有效
# W/ t7 f0 q2 l9 \2 s& a0 L' e; S
6 [2 V3 D3 ?+ Q! C! `4 I) Y如图
8 f. `: I# k# t& m) Z! K+ o  j0 H) ~" N5 ]' W" G& c+ t
' \9 V# S) c, v! q( ~4 \

7 p% \0 q4 l* ]# X我们可以看到,
! _3 Q& [& a7 Q- B$ R
# j" ?7 E+ ~% Z* n+ z8 e在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 909 a2 A7 Y& a* l- C1 Y: f
0 r' K& b& ?( V6 W
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection& f5 P5 v; l" Z1 @/ m1 M
5 E2 h: U- ^4 W6 ?- B
我们只需要在他的所属dll后面加个20 90就可以了# p' {7 g0 z# H! |% b4 V: H
/ ~9 F# x& S" U7 V- t) }) z
卡巴目前还不查杀此免杀方法
1 ~! p$ z8 J+ E# {2 Y
4 ~% W3 j9 D  l5 C1 J6 Z6 B: z' O# K
唧唧歪歪这么多,打字有点累了
9 y2 T* T% |. H: z: l6 c9 z) ~9 r. l1 C( U6 w4 Z" Q
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
, j: b: k5 A6 Y# W+ r3 E: p
4 P% k2 M1 x8 W( K, H  s7 b[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表