返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,# K. P' y1 k* \2 ~$ O
8 B6 J$ W( x* q$ [& I
特拿来分享给大家。
4 w/ {- x4 b1 _5 B) y  ~7 N6 U" C% J; E9 q
今天我们不提我们国产的那些杀软,真的垃圾的要死,
9 _" L0 C; p* e& ?% j0 h; ^5 G( p6 j* H. v5 l$ L+ B5 q) V
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
9 n2 d2 r4 j! W- @
" A, z3 L  R& P. N; A  K我简单的重建了输入表就把瑞星搞定了,/ [8 l* ^9 K# v/ E) J( y  X, m
; d0 F- O6 n# g* x  o+ w
失去信心了。我曰+ M$ u- A" O2 V5 o1 c
( b6 F+ E" O( |
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
6 X2 l, U; @5 K+ b( i  L6 U
& |. P4 j( S% C) x# ^5 U1 F0 R首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
- ^1 x% f3 y. ~  I
& X. S& S: g9 `6 H外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
- C# e( U# T2 Q* Q/ _: M- M1 v; O7 j( Y
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低& g* W4 G3 P  C
& C9 w5 n$ L9 j, b& Z$ |4 I! s( i
过了以后再调到最高,再做免杀。
' q$ v3 x  _4 k! |: C% e& M, S4 V. J7 q( u7 X  G7 v( B2 T
以上是废话,
9 i: H$ g: ^1 Z2 R- E( h" v" ?
% a% ?% l0 y( q8 H好了,下面我们来说下常见的免杀输入表方法。* z1 j3 \( Z9 B8 v  t6 s! W
7 ?* _* o# c. d
一。移位法' _# t, v6 u9 U$ G1 r$ N( x

# }* j" w9 T" U) ~这个已经过时了,我们的国产杀软及时的跟上了时代,* g% f% [# `9 [. k3 o7 Y' S( r
5 ], t( [. R% y; d# {% H6 ?
移位法在去年过金山和瑞星,还有江民都是可以过的,$ G! d; C2 G4 C  v7 A9 j0 x5 u5 l; H) z

! H+ L' L, \; P- \* S# E; i现在的杀软智能化了,移位么?呵呵 ,追杀你。: s6 M3 Y& N3 o% L6 y8 n) Q$ E
' g+ Y7 x  I  k+ r1 ~
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
2 M- H! r: ~7 _' A% Q1 O3 r$ ~' j; ~) Q! d6 G' F& v
二,重建输入表
( E- c( B6 s- n, C  T3 t) a7 v, n2 _: e+ W" J( Z* M$ l& m0 D
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈" h! F" d+ b- a$ |" e' A+ S

" T- _2 l& o% R" W  x这里我介绍下,
: i% a3 ]5 r/ H' V- \2 [/ @9 R: O' b) O: @$ \" v
用到工具:
8 a% F; R& Q; J* U0 m1 Mimportrec1.69 w( G# A  i; U
od
; c/ b0 I$ l+ R9 i. F3 G8 Ec32asm
! N/ @, M* a2 n  I% Z0 Eloaderpe
% m% d( P$ k- ?8 l+ D& U2 g* |这里我们简单的介绍下,如何重建输入表
) L% O" S1 O4 m9 }
" R$ ?7 M- V* T* k8 t首先吧文件拖入od,打开inportrec1.6) T) K$ z8 e0 F5 R- o

; T/ I: |' v8 `( R如图 选择拖入od的程序,! S2 @) H4 a- k
( T& X1 `/ g2 X" G
6 b& F1 _8 V3 |& g3 l4 A" }
这个时候,我们打开loaderpe,
3 U0 L8 I% |9 c% i9 k/ A+ v
; p! d- S8 {( H/ o拖入我们的木马9 @9 B4 B# E2 m
# W( w6 v5 D) |" \% X8 Z2 \% O
选择目录,
/ _8 }: W* s3 g# ?/ [; W$ ^: G  f" J
我们看到导入表这里。。。
# q, i2 V" x& Z' _/ I
9 d5 C4 |9 ?5 f) f' Z如图:
. Y& o9 T0 l5 K# e- T* A9 z4 ?: a, J
6 C' F2 F' Q) J
RVA地址是0001D000  大小是0000154C0 M- m  |9 `, m: j1 S8 ?
4 c& t4 w1 z( x1 I9 A; {
好的,我们把这两个输入到import1.6里去: l# Z; t& k8 e0 {

  {) w0 |" T7 D. h4 M3 \就是在“加载树文件”那上面一点   ?- y+ b! {! s

2 t4 f/ c! \) j) g. K: C  x输入RVA的地址和大小。+ @( [) S) v" p

' c( f, S! w& L9 L- Q点击“获得输入表”# [) Q4 t9 b; z; \+ x$ o9 u( q$ g5 J

/ J: @* D+ ]% g- @然后点击“显示无效的”8 g  V3 O3 b( F3 k- J6 v

7 T( \4 W! X6 X* {% @  k4 z接着importrec会自动列出
7 a  Y% D! U5 Y+ N
+ ]7 ~& I% w7 B- ]我们把深蓝色的字体  右键   剪切无效的指针
0 X2 K9 B! m! [9 |
* S/ }, P$ ~/ L' r
$ B1 T& S1 R: W# Z- y+ ^最后,我们点“修理dump”
7 j# c( E* w1 w5 V5 h' o, n; T' b0 y3 ]  P# s' s
选中我们的木马就可以了. r1 }" T1 ?; x1 c/ J6 x# q- _

1 ^$ P' q( ]" s, P. W' M0 G最后我们要用到c32asm: S4 J0 a+ |2 O( |# f

4 E, f$ a! H' S, s' E, T& p! g' Z6 n我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。. u" T9 k3 |. [. D& v. ]( i

) ^- @+ T# d9 N& y; R$ F4 u这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)- U$ h, @$ E2 G2 L) K1 {
& l& _( P6 J% f, L4 Q/ N
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
# B" g" v" x' S, R
1 L  B5 @" @, i, X: g6 R我们把马子拖入od的以后,打开了importrec1.6$ ]! w+ G/ g" N9 l8 ?' x
) m/ {0 c1 `* u: ^8 C, y
在选项那里,选择根据序数建造输入表和创建新的IAT
/ U9 O5 \& l9 e8 d$ u2 u
1 o( Z3 X) F+ Y3 X2 m如图
$ x" }, U& M% u7 h7 G' x1 h& L$ x
& p5 y6 t$ M  `/ L5 ~
: U3 ^% ^# v6 \- _1 g5 ~+ C6 {以后的步骤照上面的方法继续就可以了
  @# X5 H9 |# ^( h5 c1 C0 G( O" B/ n7 ~! o' L! U, C3 l
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了. Y- P# B  T. x1 j" Q
1 m$ e8 {% b+ j+ B
因为kernel32.dll的大小不一样。. D' W( `- l; ^1 I) m

. u* N( t! R1 G  ~& D  C3.修改originalfirstthunk
! f& }# W, A) K1 l) N5 |  W
! W, `5 [% c4 t4 ?如图所示& b1 ?# A9 L5 v' L; ]3 d) S
, p" T! d; [% t( C1 C

$ j# n. ]% ~' I2 P7 u! }' z我们打开loaderpe,依次点  目录--导入表(后面那个横线): z$ K3 s7 ^% m( Q: ^$ L8 r  {9 F4 z& T

6 D( U! l: C4 u& S4 A我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll  w8 P; w( G9 v' u  V2 g  [

1 L  h. Z2 D+ W) C3 p我们右键--编辑--把函数后两个00修改为FF  u2 x& ]  A/ ?  `2 d7 Y

: u* ^* d) Z7 o# z# I% n0 H, y这样可以过小红伞查杀。  虽然会出现错误提示
3 i+ P. a7 d% ]6 [4 t* D
! h) \4 ?, h5 z1 L" E但是不影响木马的功能,不影响上线。
; m% ]7 T6 ]" X' X0 Q3 N: s+ n! d  L' ?/ R2 d
4.dll后面加20 90法过卡巴查杀' Z! o0 ?2 Y# D( V

+ D# B2 p4 |& D7 y2 ~需要的只是一个c32asm而已,非常简单但却非常有效
- k, U% v9 U9 G: A( B5 K: x5 q- y/ t: a, l3 w
如图& {; Y, o+ u7 i$ I% C; W: U; r6 Q

0 o2 g7 Q. C! V: |
4 B4 N# e$ X  D# r
; ~, J+ ]- I, P# w* n我们可以看到,
8 ~7 `" i, d, B
$ h5 W0 B% Q# T: U" \+ t在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
: \$ Z7 T, n7 |5 V+ [7 c- S3 V) z& J/ n# p& j6 K* Y0 ~) O- c: S! r
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
1 j( a) ]8 g( C8 w8 B1 y$ Z. P# K
我们只需要在他的所属dll后面加个20 90就可以了; w# y8 Q  r, H( L0 O% G

- a1 M& {# [' v/ d- _5 M( N9 T卡巴目前还不查杀此免杀方法: z9 y* B2 b! p! ]& l: t

5 ]$ l7 D& n/ {6 U, f% \* W
# Q: H; e' D' w4 v4 L7 v9 n唧唧歪歪这么多,打字有点累了
# F8 N* o( @# R% W
  f" n2 }6 ?/ O- d* j& x% k# A以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。; w# a  a( N/ j  [; E/ z
. A1 |8 m- G/ h% k. c
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表