返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,- H+ E6 ~: b7 N- u. |5 v

1 I! A: a, K8 B9 n/ O5 w2 n特拿来分享给大家。
) R  H+ y8 }) A" _& F4 E
  h- K! I2 Y! O; Y8 @% G; V今天我们不提我们国产的那些杀软,真的垃圾的要死,
: }/ `* b' R4 P4 R
( T- i% |( X/ v) T9 ]上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
9 Z7 t# K1 D# C- l, q# o
" ]# ^& ]( {0 F2 ~我简单的重建了输入表就把瑞星搞定了,
& z" K$ ^7 x* X$ x1 i# o% P) F# S  T! I/ s
失去信心了。我曰
* J4 _8 C: b1 S7 \  V, O& |9 ~; q2 P' F* `8 r  V; Q4 |7 E1 v: u% m4 f
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
- L8 A& D2 k# P1 L  x- R4 ]% |
5 q# g( D7 F1 ^首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
5 y+ J3 M6 \: I8 i6 s# a" k5 ]
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
; i& y* T- ~% i: P* _3 I: p$ Q; N0 Q& Z7 D5 \/ K& t
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低3 q$ C( p' {) N- K
' w+ _% n% w7 G4 G$ x
过了以后再调到最高,再做免杀。
9 p# h$ r) p; r% N% U
% h' W" p" ^1 H- [" F! K以上是废话,. d6 d: f3 u- S& I, n
  W7 I2 E' ~& G1 _( z0 T- s
好了,下面我们来说下常见的免杀输入表方法。
; ~" Q/ z- s. D0 ~3 {" O' x
* c! _( `5 u# \% E9 V一。移位法
5 K2 g. w6 b$ @) c. U4 a6 i8 @9 T) G" a6 D3 H3 n
这个已经过时了,我们的国产杀软及时的跟上了时代,
: J! ^4 \0 G" r# L% N
  R* y0 e7 u7 F) e7 K移位法在去年过金山和瑞星,还有江民都是可以过的,
3 [4 ~# x5 t3 I. ^# C3 x
$ h% R6 c9 s) N8 t2 `6 Q: @现在的杀软智能化了,移位么?呵呵 ,追杀你。9 b6 {& F# L5 V, @1 \$ [* B

! X# I! Z3 \2 A. m6 x4 T! b如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
) ?. y5 h% c- Z3 ^" |  p
2 u$ R2 j! Z8 q$ f2 K二,重建输入表
6 c1 X" K9 m7 O. {8 L! H
8 l) Z9 a! n* A8 ^效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈. m% l4 b8 F! }) a" Y5 |. x; H* A
! t. |2 Y+ R8 ^+ Y4 P) F. O
这里我介绍下,( q0 o9 ?: \# Z( z3 D& Y) j, s! r  f

& b/ p+ [- G% E; v! z用到工具:
$ Q- `- S# p/ q! ]  F$ k, wimportrec1.6) U0 k4 H1 T! Q' B4 {
od  f; ]7 Y& H: k" N: o/ E
c32asm/ r$ h9 S) B$ w
loaderpe/ e) v1 ~) G: Y4 z
这里我们简单的介绍下,如何重建输入表
% s% e2 ]& p- W* M
' e! D& V0 a* E+ V$ T5 \首先吧文件拖入od,打开inportrec1.6
8 n1 L2 {; b$ p; P, V% F
. A& ~& G" W- C" N; C0 `+ B7 P9 [如图 选择拖入od的程序,
, q, D4 ]# O, S, D+ ]3 I  D, s- |
" f1 D4 b. k/ O6 A+ w6 u2 F
3 G- j) m  {5 l这个时候,我们打开loaderpe,7 v; e1 A- Z# S* y( U- e

* h8 [( k4 a) x0 h1 A; X6 h拖入我们的木马& E8 v& t, T" Y( k; y/ ~
, p( {0 C9 `$ G' Q$ w$ I* D; M
选择目录,* m6 c5 ?4 |5 ]( n1 W

; ?# W9 `) E/ A! e! H' k我们看到导入表这里。。。  B) H& y4 p+ [+ ^' u& m

4 E1 L- `$ x% W- d" v2 s& ~; e如图:5 H4 t1 T/ N  D3 u! s5 c
3 `8 d8 w' t7 R1 I# P
+ d  H, p& u" s5 B9 S9 l
RVA地址是0001D000  大小是0000154C: s& @* {% Q% `7 X- g1 B0 K9 j
: M9 C/ X( G/ [! v  v+ b, i" d
好的,我们把这两个输入到import1.6里去
. S# E( |# k# B" F6 A( O: k! r1 n. F7 @& S# ]! p
就是在“加载树文件”那上面一点 2 {" G# {" j% E) O& l

$ m$ M, d% t! L输入RVA的地址和大小。
0 t5 {" C$ @# N' v/ p; W* R2 \1 _# j  V( w9 h/ c
点击“获得输入表”# V) b5 @+ N; |/ H$ u4 B, j- G% @" p6 a
% t$ X* X9 q. [# Q- m7 D
然后点击“显示无效的”. k! F( W3 x' s+ S  k- S

+ r! t* [* K7 _2 e2 }- g接着importrec会自动列出
( {, n' }1 C. i2 `& h4 C
$ p0 ?: S* L9 Y- L2 j' I+ ?8 B1 r! }我们把深蓝色的字体  右键   剪切无效的指针$ I* `* L! v1 ~: T* A3 q. p% ~+ [

/ I2 w! ?8 y: {/ H5 d' D' L6 }- m  E
最后,我们点“修理dump”
+ E4 {8 ~: g1 Z% V' R/ L0 {; W
2 ~% h+ F; W" k) b( e选中我们的木马就可以了" s  R' X& A* G7 u5 ~& [! @9 i

6 J+ Z& V0 Q: E4 j最后我们要用到c32asm' f# j' L' C3 M$ v- ~$ I
, K& [; R+ Z/ s+ ?8 {0 e
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
  o( Y+ x, {( {2 j6 t: {
* z3 ~$ Q9 f) `7 u6 m; B' {6 L. Z6 s这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
  Z  s' I4 e3 F0 q/ x. Q# x- Z  s  ^% \  K- O- v5 n. y* Z+ e$ e) M6 c
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,4 M" {6 h0 y! ?( j

0 x  U# c, g, F/ d3 A我们把马子拖入od的以后,打开了importrec1.6
4 k& E" ]- Y3 t# ]0 b* s. `9 {4 J* A" C% V  ~* o
在选项那里,选择根据序数建造输入表和创建新的IAT' J1 ?; U3 ~# ~/ A5 y% X0 K
5 R4 F8 \. N/ p! @
如图
: M4 K) Z) a+ T. k5 M* c4 T& B) N& {1 c; w

. \& J. t' X7 D8 i以后的步骤照上面的方法继续就可以了
- W: i2 D% e( S
& }  N) ?/ b6 f8 D# R9 T  C不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了8 X: f- u. `4 M) A
* S, ?4 C, Z  w1 Q; D
因为kernel32.dll的大小不一样。2 V7 I( @3 a' Z- V' z8 O; L5 M

7 H8 r; ^# E6 n. |$ S3 Y) K3.修改originalfirstthunk7 N8 q. q% s! x
5 \8 r* |; b; }0 m
如图所示
* T; w( }  _1 x- ?& a9 P+ G; e% ~/ \; L  E
/ C( z0 `7 u; n1 P0 w$ q
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
7 [/ I$ n+ y2 J- R, o* @0 H/ }' k# n5 u: Q8 E& Y$ e& J
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
4 Q  \: E5 M9 r0 ?& O9 Z$ M" O. ^4 o; ^
: U" b* m" @; P2 h8 |我们右键--编辑--把函数后两个00修改为FF
( l9 I3 Z- n! U7 U' U7 [
: w5 w; O2 L9 g5 C这样可以过小红伞查杀。  虽然会出现错误提示* h( z  k* `0 k6 I5 X

6 y* N( Q$ _# t3 S: I  C但是不影响木马的功能,不影响上线。& Z2 l2 p* c3 z) g" ^+ I5 B

4 V$ ]6 U, y3 f5 I% J3 q  n9 z) y/ R4.dll后面加20 90法过卡巴查杀9 f& ]/ e; f" [5 }
, R+ G2 \4 e' L) M- [
需要的只是一个c32asm而已,非常简单但却非常有效. R( ]1 E0 w* C
" Q0 A* m4 U# L) ^- M
如图
5 ?9 l  m9 |! j/ u: Q
* B7 g% g3 c: N+ z/ i9 \! T" b
% F. q, z8 W! K* o1 W: u! n, Z
0 R0 c/ v! Z! I1 D7 M我们可以看到," ?$ v; x$ c7 c" U

% E# D- P6 @7 P- e在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
' b+ L/ H% a% j# M
" t1 m% }* A4 r这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection  ^( ^9 T; E  U9 p. ]

5 s2 i2 o* h0 d% W& }6 R. D; g我们只需要在他的所属dll后面加个20 90就可以了! d9 Q8 v& l, Q: ]

- S0 F3 _' o. _& i卡巴目前还不查杀此免杀方法5 D; R$ P) v! H, h! A

% j/ D* R& c. m# F9 G+ O2 ]4 p( S; C
唧唧歪歪这么多,打字有点累了" `, b! ?% T3 ^( x! Z5 X8 O
% w! I% b% d$ N
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
* O4 E" g- y/ m* }; `7 e. I( R! j) q! d) @: h! Y
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表