查看: 2797|回复: 11
收起左侧

[求助] svchost错误,中毒?

[复制链接]
xikazi0
发表于 2009-3-28 12:32:30 | 显示全部楼层 |阅读模式
rt,昨天在答疑区发的http://bbs.kafan.cn/thread-449549-1-1.html
又截了个新图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
月光下的忍者
发表于 2009-3-28 13:14:01 | 显示全部楼层
这个svchost 的路径在哪?

路径正确的话,再用冰刃或者其他辅助工具检查一下它的线程以及模块信息~
xikazi0
 楼主| 发表于 2009-3-28 14:27:50 | 显示全部楼层

回复 2楼 月光下的忍者 的帖子

c:\windows
月光下的忍者
发表于 2009-3-28 14:30:18 | 显示全部楼层

回复 3楼 xikazi0 的帖子

好了,它就是个毒~

立即想尽一切办法秒杀它~

切记,c:\windows\system32 下的那个是真的,别杀错了~
xikazi0
 楼主| 发表于 2009-3-28 15:02:14 | 显示全部楼层

回复 4楼 月光下的忍者 的帖子

不素吧,我还以为c:\windows\system32下的是毒呢
xikazi0
 楼主| 发表于 2009-3-28 15:05:26 | 显示全部楼层
sorry,小忍者,看错了,路径不素c:\windows,素c:\windows\system32的
aaabccc
发表于 2009-3-28 15:16:26 | 显示全部楼层
lz是不是使用COMODO用某规则/修改规则之后才出现的?
月光下的忍者
发表于 2009-3-28 15:28:30 | 显示全部楼层

回复 6楼 xikazi0 的帖子

这个玩笑开的有点大吧~~~~

你不会是中了MS08-067漏洞吧?

COMODO的D+那有什么反应没?有不良日志发上来看看~

顺便给你介绍一下这个MS08-067漏洞~

netapi32.dll!NetpwPathCanonicalize在解析路径名时存在堆栈上溢的漏洞,攻击者可以传入精心构造的路径参数来覆盖掉函数的返回地址,从而执行远程代码。攻击者可以通过RPC发起请求,该请求的处理在svchost.exe中实现,导致svchost.exe发生远程溢出。
- R; m5 t' g$ h% R5 c0 \0 t; R* n     $ [5 J5 ?4 g* [3 y1 H' S/ H' E) H
     下面以 5.1.2600.2180 版本为例分析该漏洞的成因:' G( L* T- e1 H# q

  u3 A- ^. r/ N, s.text:5B86A259 NetpwPathCanonicalize proc near" f  o( R& j, h+ l# ]
...
4 _/ B$ b* n. g: n.text:5B86A2AF                 push    edi                ; int2 _# N. u) h, n) X
.text:5B86A2B0                 push    [ebp+arg_8]       ; int  b; E8 O3 Q7 ]. _0 a1 X3 Y
.text:5B86A2B3                 mov     [esi], di
/ u& J0 b. b7 i7 L' f.text:5B86A2B6                 push    esi                ; int% `6 q5 ~" @! H3 w- Q
.text:5B86A2B7                 push    [ebp+pPolicyChain]   ; pathname7 R6 t, _- M/ M) O* t
.text:5B86A2BA                 push    ebx                ; int$ o) R5 D/ ?- W: i2 H3 N5 p; C2 [
.text:5B86A2BB                 call    CanonicalizePathName
% _: c1 x5 I/ g# i. }.text:5B86A2C0                 cmp     eax, edi+ j' J" ^# _6 ?  y3 T- Q
.text:5B86A2C2                 jnz     short @@Return
5 @8 d+ R2 R; _+ x# G* h4 G  t...
6 A! {2 o5 c8 z7 o6 R1 [6 D9 z.text:5B86A2D2 NetpwPathCanonicalize endp
' l8 K: H; E& n6 u" {. M9 F* q7 y) y/ {
.text:5B86A2E0 CanonicalizePathName proc near% f$ N! A- q! m; G
...
! ^9 K1 L& s1 K! Y. X.text:5B86A37D                 push    eax             ; str
6 u' C  Q! e3 I2 p% w5 u.text:5B86A37E                 call    DoCanonicalizePathName
8 b5 h+ j2 o" V* x.text:5B86A383                 test    eax, eax% u' T3 Y1 p0 `4 k$ ]0 R
.text:5B86A385                 jz      short @@Return_0x7B2 L% T+ c* x3 |( W% E
...
+ Y6 P0 [9 j7 ~; _.text:5B86A3C7 CanonicalizePathName endp
+ U# d: h% T0 V) u/ w& G$ a/ k/ c3 i4 U: g
Netapi32.dll!NetpwPathCanonicalize函数通过内部函数CanonicalizePathName来处理传入的路径。该函数又调用内部函数DoCanonicalizePathName来实现真正的处理过程,该漏洞的溢出点则是出现在DoCanonicalizePathName函数中:, K1 C3 E1 c* ^1 U$ w5 X# g

0 p  M0 b  [9 [4 \. H; L该函数首先把路径中的’/’全部转成’\’,然后试图修改传入的路径缓冲区来得到相对路径。比如:
+ O' {) k7 B: N+ P' B5 C; k .\\abc\123\..\a\..\b\.\c
5 B( I6 c+ s4 t1 J0 W将被处理成:8 g+ m& Y2 L8 L4 ]& j
\abc\b\c
8 s* b4 s9 `  Q7 Z7 S/ y# h' ^! v- }' @+ [/ \4 x+ M+ l: [
该函数在处理相对路径时,使用两个指针分别保存前一个斜杠(后面用’\’表示)和当前’\’的指针,如下所示:+ A# C( ?3 T& t1 t7 _0 E
\abc\a\..\b8 H9 y1 D2 l, `4 i, ?! H. d
     ^  ^
1 b  n6 ]" U! B  q0 k% O     |  |6 P8 T. I3 p% |1 k& N3 n
     |  +--- 当前’\’指针(后文表示为CurrentSlash)
5 S! H3 l7 W/ c5 p  Y& B$ L     +----- 前一个’\’指针(后文表示为PrevSlash)
: |" Q- u$ Q  _
& N, u, q( M  F, @2 ]     当该函数扫描到’..\’时,会把CurrentSlash开始的数据复制到PrevSlash开始的内存空间处,然后(!漏洞就在这里!)从当前的PrevSlash指针减1的位置开始向前(低地址处)搜索’\’来重新定位PrevSlash,搜索截止条件为PrevSlash等于路径缓冲区的起始地址。% S& S: `) }, H( F3 Y7 K: A
     ; t0 \  c) u5 x, K2 N( w& u
     
; u" c2 Q, ]: I9 w6 ]7 m, j     下面是该函数的处理过程:  H0 b: ^6 }6 ]0 n& F
.text:5B87879C @@LoopSearchSlash:+ _3 w$ J6 J- H4 t# Q. C9 N' k
.text:5B87879C                 mov     [ebp+PrevSlash], edi( b) T) \$ ?* b' C3 S: J6 m
.text:5B87879F                 mov     esi, edi- L! O' i9 L8 D  |
.text:5B8787A1                 lea     eax, [edi-2]0 ~! H2 W$ M6 H# j
.text:5B8787A4                 jmp     short @@IsSlash?) w( ^0 g0 Y9 d, J& c' F/ p
.text:5B8787A6
  k- @5 q$ D/ ?0 h4 n.text:5B8787A6 @@LoopSearchBack:
9 A8 o- Z) J. n  H% l: J( p.text:5B8787A6                 cmp     eax, [ebp+BufferStart]+ B6 o' z7 |/ d, ?" [
.text:5B8787A9                 jz      short @@EndOfSearch
/ t9 N1 G' _2 m1 z. f.text:5B8787AB                 dec     eax. C8 `3 p9 }2 t/ E$ \- Q
.text:5B8787AC                 dec     eax
2 s' E* L9 O5 Y6 `$ V$ |$ x.text:5B8787AD
7 _6 ]7 m) Z- L0 \.text:5B8787AD @@IsSlash?:
5 b/ f2 H* ~/ j$ K) g0 r$ c$ g) Y.text:5B8787AD                 cmp     word ptr [eax], '\'' k) C+ w; J0 F+ o1 S
.text:5B8787B1                 jnz     short @@LoopSearchBack
( ^+ D/ b- ]/ @/ o.text:5B8787B3& M* r. |7 {0 _5 }& w) p2 k
.text:5B8787B3 @@EndOfSearch:( ]6 B2 ~5 u- C6 z: p1 J) E) D
     
. q! Z6 u% Y# l0 @3 m: h     % v8 ^8 f0 T& E( N
     考虑下面的情况:# Y' C2 ?2 j$ ]2 H% c
     # Z5 U% a, R0 {  V6 t% m% m
     \..\a, I2 m! [5 ~7 p- {: s
     ^   ^4 `$ o9 [, w+ ]& i( A2 g9 g5 r
     |   |  i( G+ B0 o$ J, A/ ?3 r& [
     |   +--- CurrentSlash
  O0 c* O& f* |0 m. d     +------ PrevSlash
3 b" s6 S- F9 ^2 D5 E1 a
% p; w9 w- e4 f2 q; _' l- ?     当完成对’..\’的替换后,缓冲区的内容为:’\a’。这时,按照该函数的算法,把PrevSlash减1并开始向前搜索’\’,此时PrevSlash已经向前越过了路径缓冲区的起始地址,所以该函数的截止条件失效,导致该函数会一直向堆栈的低地址空间搜索(上溢出)。如果在低地址处正好搜到一个’\’,则会把CurrentSlash之后的数据复制到堆栈中’\’开始的地方,并覆盖掉堆栈中的正常数据。攻击者可以通过传入精心构造的路径数据来覆盖掉函数的返回地址来执行代码
jony327
发表于 2009-3-28 17:44:11 | 显示全部楼层
svchost设置保护了吗
xikazi0
 楼主| 发表于 2009-3-28 21:42:31 | 显示全部楼层

回复 9楼 jony327 的帖子

没有
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-5-14 21:07 , Processed in 0.138173 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表