返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,' t' }6 l4 A' Y+ U: d

) K4 {* e4 B1 ^7 f特拿来分享给大家。
$ y( g3 j% ~  D* f, y5 |' ~( x) |! S8 Z& y0 o
今天我们不提我们国产的那些杀软,真的垃圾的要死,* ], t! }. x' U% Q' E
6 s& f* [# ?6 O* _; C/ |2 T5 o
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
( n- a- v- T5 Y2 u0 u
5 b: k, q/ p" d) h  U我简单的重建了输入表就把瑞星搞定了,2 {6 v5 D) r, @% }' d5 h; v/ B

5 E1 e) S6 r$ v! P1 \: j5 I, d失去信心了。我曰
% d- l7 t8 m. c( A7 D2 P6 j: j6 o9 R; @( T
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。! [* s4 d4 X7 U" @) {

* Y5 I' p) a. F0 |. D' d首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。2 R, C5 U! x  h' L
; J9 D+ o5 c: W7 k
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。& O- g6 k( {0 i' p

8 f% ?( W3 v6 b高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低7 j4 y' i& @% N
7 s+ s0 J- F* G5 s9 Y9 ^
过了以后再调到最高,再做免杀。
& u$ K6 E2 T* S. S! F) z
/ R) _3 R4 d! N% N7 Y以上是废话,) f, i% s' n- K- q

9 H! Y$ F9 w8 }, Q/ A* r; T7 \好了,下面我们来说下常见的免杀输入表方法。
7 Z. G% s, g  P  N" v( J* O; v! D4 q" |0 F( K7 c& W
一。移位法
7 b2 S1 j4 }( v
3 _0 Y  D1 ?9 P$ M% i这个已经过时了,我们的国产杀软及时的跟上了时代,
& g1 X7 f% }0 G4 S8 M& S9 {' m6 ]- I; i0 I9 A& W8 F
移位法在去年过金山和瑞星,还有江民都是可以过的,
+ b& ^4 S0 ]  }5 e9 v; Y# j/ U7 \5 i2 l2 z! l
现在的杀软智能化了,移位么?呵呵 ,追杀你。
! I: S8 v4 O9 G$ w; k. U# h, _
+ h$ [- W) Q. v9 T% ~0 v; v/ ?$ x如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
6 c# b& t3 w2 s' z& [* |$ N$ }  D0 T3 _3 n, ]' d) L
二,重建输入表
0 ?' m) z8 B# Y. G# y+ N* R; H, F
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
0 f0 e7 r+ t9 O9 a8 d$ x9 g: @3 }  B$ ?5 }
这里我介绍下," o; m/ X) _5 [

2 b3 U6 k8 f# Q" q" `- Y: U用到工具:6 u9 B. E0 Y- y+ F, K# b$ k6 n3 m5 `
importrec1.6
1 e* }  }5 T2 Y. Z0 Q: p) l& l& God; V( e  O( f4 b( f
c32asm! a5 j, g3 s8 z! A1 {3 Q: Z) R) q
loaderpe
% p+ W, w" X- K0 u这里我们简单的介绍下,如何重建输入表
, F  F; Y! M* \, l2 p' m" p* g# P  w: W* ]  O
首先吧文件拖入od,打开inportrec1.6( Z# K+ C3 l' J3 Y% ~! g2 b, Z

8 E# N* W% e  ^如图 选择拖入od的程序,
( A! B( X6 q2 q" I; t; G2 L% g5 d  R' Q$ L: Y
2 _/ U" @& _3 v) O
这个时候,我们打开loaderpe,
- r( u0 s% O* u9 w9 Q( r
& b" W7 D( k$ K# [8 |" C& Y$ u, o* }拖入我们的木马
! N: F8 E" V) Q4 G1 {; X
( E4 e# c$ `7 w$ A选择目录,+ m9 ]. O! Y" a

6 Y& |% c% e; H我们看到导入表这里。。。
( l1 x0 u  v. @7 P# k# j3 a" {/ f/ b- w  w0 C
如图:  `  t! t6 I* L

6 A9 g! G( j8 _; V- o' \0 o
) J0 _$ W1 R' x- H; }RVA地址是0001D000  大小是0000154C
1 F# f5 u0 S5 W) Y2 d8 ?! z2 ]! I' a1 C1 u2 v
好的,我们把这两个输入到import1.6里去* u7 Y: @! q& J* Y

) q% C4 D( e$ ~/ N9 Z就是在“加载树文件”那上面一点 2 Z* V7 t% G9 T1 U

4 d* e; r4 k- k输入RVA的地址和大小。+ b1 W/ q0 |9 K# u" E
  b' c6 c% T4 B; N6 J5 P4 H
点击“获得输入表”/ G+ P) V; H* O2 O9 A
' \  P. q4 T" h" }6 |
然后点击“显示无效的”
9 Q& H* q( o4 p2 S* \) i* Y1 g8 m, s/ m/ B8 o- B; h
接着importrec会自动列出
+ M9 B% @8 I: N+ ?) v' d1 n( n, k! J( K4 {; D+ V8 _+ U1 F
我们把深蓝色的字体  右键   剪切无效的指针+ q/ ], F5 n6 f% `

7 L; T8 e( _4 o; N
. j* \: [' p* l4 h最后,我们点“修理dump”/ g8 R. G8 [: ~
2 z2 b2 v! ^8 |4 u# n: ?2 N9 W4 }
选中我们的木马就可以了
2 ]" n1 Z' C( r" o; g  ]( O# x3 Q+ r9 u7 l* R) d4 z
最后我们要用到c32asm+ Q$ ]8 F# d+ `. ?  E

) D; i1 H& ]7 r+ x* N我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
" v# V) b. B7 z, K' u+ ]1 I) p
) c2 ]8 j- x. r2 `# B$ f这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
, s9 E  {' O/ R7 z
$ V; r. v  X6 S这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,0 L5 |4 J# Q- i3 z3 {; f

2 a" }; Y& x$ _7 Y$ g" C% [我们把马子拖入od的以后,打开了importrec1.6
4 [3 i% F$ `- i3 ]) k: C3 G- @1 L. G4 d& \2 t5 S
在选项那里,选择根据序数建造输入表和创建新的IAT
7 U* o6 J- e( V( v3 V; p0 r1 q. v/ N/ \
如图
  m3 U# c# k* x. O& s9 U( P% X) b- x
, D9 h$ _3 a# M( E. h0 G! w4 K
以后的步骤照上面的方法继续就可以了
4 B; m, U0 F1 c# e/ Q" c4 I+ V
1 k; h. T* |5 R# ?不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
0 p+ m2 ~9 f+ [, J$ W  y
2 H1 F+ X* F+ y+ E因为kernel32.dll的大小不一样。+ |$ `2 y' ^# z

/ g' p( P# |! z5 W" H# ?3.修改originalfirstthunk
  B, _; X$ P* i4 m
3 e1 s) y* T3 d9 b' l' W如图所示
( }" q) Y. Q$ f( x, Z/ b
* R9 O  y& M" P, B& G6 p. h7 w/ S: Q% }$ P4 s
我们打开loaderpe,依次点  目录--导入表(后面那个横线)0 x& C. g9 ^( Q& d: {% D8 e6 W& T% ^

- y% w$ ?' H  [! W- y% `我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
# H0 Y" M5 f. B6 f* x0 d0 F
5 s7 e7 Z4 L7 G3 F) V; l# |0 x* h/ q  V我们右键--编辑--把函数后两个00修改为FF
  T1 w) j) N& I' B3 `& S7 `* B: B- A2 |. i7 T3 [. G! O3 B
这样可以过小红伞查杀。  虽然会出现错误提示
* n" _* ^' u  ~' S1 u& @
' L* K- S+ Y' Y. h1 P- k) F但是不影响木马的功能,不影响上线。( c6 D6 P$ }. ^. i
* i$ X6 P+ C9 \% k
4.dll后面加20 90法过卡巴查杀
9 \4 p7 v$ H. R: ]: b; s
: L/ h6 n; m! ~$ N' {需要的只是一个c32asm而已,非常简单但却非常有效+ z: y* ~2 e0 {
( M* _, [- S- g! z2 N0 N* E0 p
如图0 ?: N7 F$ K& u' M% d4 V
- O2 J) i- s# ~9 j
/ _# p1 m" Y6 w- `3 ~( k. S) B
$ |: e, v+ _; \8 L2 V' B5 y2 M5 t% s
我们可以看到,8 s( C4 A' x5 o+ I8 ~* i4 z

/ o' y" F. {5 P/ p在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90) j& g# X4 d2 a( G1 X
+ _2 K! E: o5 i; {
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
. Q) D3 E+ n; I' v9 C5 E% Y. q7 A! u  j. o/ E% Q
我们只需要在他的所属dll后面加个20 90就可以了5 X( N/ U7 f* e* U# J- [
' m6 [: M% d% e) y+ e
卡巴目前还不查杀此免杀方法
) R8 N4 n2 Z9 f; ?% j) _" I4 \6 u+ J. {' J. T/ D6 r+ X% [

% K6 r  D; K' E唧唧歪歪这么多,打字有点累了3 y1 [6 R9 ^  R" O
% @% R7 P- W2 u, `. v- `
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
. ], C# i( o$ Z$ d) e/ o+ s% J6 E8 c4 H
# c! T3 |+ `5 B- S5 G" W. [[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表