分享
 
 
 

Hook系统服务隐藏端口

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

有时候写程序,调试程序真是一件非常有趣的事,就比如这次,蹦蹦跳跳,笑嘻嘻,意犹未尽的就把这个程序搞好了。

netstat 或者其他各种列举端口的工具,比如fport,或者 sysinternals 的 Tcpview,都是调用 Iphlpapi.dll 中的 API 来完成端口的列举。而 Iphlpapi.dll 中的 API 最终是使用 ZwDeviceIoControlFile ,向设备对象 Device\Tcp 发 IOCTL_TCP_QUERY_INFORMATION_EX 来得到各种信息的。于是我们只要Hook相应的System Service ,然后对得到的结果做一些处理,弄掉不希望出现的端口信息就可以了。不过真正的问题在于,IOCTL_TCP_QUERY_INFORMATION_EX 和端口相关的各种结构定义,参数含义目前都(大部分)是未公开,没人知道的,也就是Undocumented的。Undocumented?? ring3调试,我熟啊。ring0调试,我熟啊。Windows驱动,我熟啊。Windows系统,我熟啊。我怕谁啊我。Undocumented??爽,要的就是Undocumented。

通过ring3调试,分析Iphlpapi.dll是如何使用 IOCTL_TCP_QUERY_INFORMATION_EX 相关的各种参数,结合msdn中的一些信息,于是很轻松的搞清了需要了解的结构。用我自己写的awx建一个VC的驱动项目,写好了Hook部分。

关于本例中使用的解决Hook在各种Windows版本下运行的方法,在很多地方很多地方都出现了,我不清楚最早是谁想出来的,我是在《Undocumented Windows NT》一书的源码中第一次看到这种方法的。

下面是实现源码,很简单,我就不多说什么了。

#if 0 //================================================================

Copyright (c) JIURL, All Rights Reserved

========================================================================

/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/

Module Name:

Jiurl_tcpioctl.h

About:

- 这个驱动项目由一个我写的 AppWizard 创建。

[ HomePage ] http://jiurl.yeah.net

~~~~~~~~~~~~~~~~~~~~~

[ Email ] jiurl@mail.china.com

~~~~~~~~~~~~~~~~~~~~

[ Forum ] http://jiurl.cosoft.org.cn/forum/index.php

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- 有偿定制 AppWizard ,请发邮件联系 。

Comments:

本文件中的所有内容目前都是未公开的,由我分析得出,是隐藏端口的关键内容。

Undocumented?? 爽!要的就是 Undocumented 。

/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/

#endif

// jiurl // IPSNMPInfo 结构的定义是根据 RFC 2011

// jiurl // 所以我根据 RFC 2022 ,仿 IPSNMPInfo, 定义结构 TCPSNMPInfo

// jiurl // 再通过一些分析得到一些扩展部分的定义

typedef struct TCPSNMPInfo {

ULONG tcpsi_RtoAlgorithm;

ULONG tcpsi_RtoMin;

ULONG tcpsi_RtoMax;

ULONG tcpsi_MaxConn;

ULONG tcpsi_ActiveOpens;

ULONG tcpsi_PassiveOpens;

ULONG tcpsi_AttemptFails;

ULONG tcpsi_EstabResets;

ULONG tcpsi_CurrEstab;

ULONG tcpsi_InSegs;

ULONG tcpsi_OutSegs;

ULONG tcpsi_RetransSegs;

ULONG tcpsi_unknown1;

ULONG tcpsi_unknown2;

ULONG tcpsi_numconn;

} TCPSNMPInfo;

#define tcpRtoAlgorithm_other 1 // none of the following

#define tcpRtoAlgorithm_constant 2 // a constant rto

#define tcpRtoAlgorithm_rsre 3 // MIL-STD-1778, Appendix B

#define tcpRtoAlgorithm_vanj 4 // Van Jacobson's algorithm

#define TCP_MIB_STATS_ID 1

#define TCP_MIB_ADDRTABLE_ENTRY_ID 0x101

#define TCP_MIB_ADDRTABLE_ENTRY_EX_ID 0x102

typedef struct TCPAddrEntry {

ULONG tae_ConnState;

ULONG tae_ConnLocalAddress;

ULONG tae_ConnLocalPort;

ULONG tae_ConnRemAddress;

ULONG tae_ConnRemPort;

} TCPAddrEntry;

#define tcpConnState_closed 1

#define tcpConnState_listen 2

#define tcpConnState_synSent 3

#define tcpConnState_synReceived 4

#define tcpConnState_established 5

#define tcpConnState_finWait1 6

#define tcpConnState_finWait2 7

#define tcpConnState_closeWait 8

#define tcpConnState_lastAck 9

#define tcpConnState_closing 10

#define tcpConnState_timeWait 11

#define tcpConnState_deleteTCB 12

typedef struct TCPAddrExEntry {

ULONG tae_ConnState;

ULONG tae_ConnLocalAddress;

ULONG tae_ConnLocalPort;

ULONG tae_ConnRemAddress;

ULONG tae_ConnRemPort;

ULONG pid;

} TCPAddrExEntry;

#if 0 //================================================================

Copyright (c) JIURL, All Rights Reserved

========================================================================

/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/

Module Name:

JiurlPortHide.h

About:

- 这个驱动项目由一个我写的 AppWizard 创建。

[ HomePage ] http://jiurl.yeah.net

~~~~~~~~~~~~~~~~~~~~~

[ Email ] jiurl@mail.china.com

~~~~~~~~~~~~~~~~~~~~

[ Forum ] http://jiurl.cosoft.org.cn/forum/index.php

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- 有偿定制 AppWizard ,请发邮件联系 。

/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/

#endif

#define PORTHIDE 139

#pragma pack(1)

typedef struct ServiceDescriptorEntry {

unsigned int *ServiceTableBase;

unsigned int *ServiceCounterTableBase; //Used only in checked build

unsigned int NumberOfServices;

unsigned char *ParamTableBase;

} ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;

#pragma pack()

__declspec(dllimport) ServiceDescriptorTableEntry_t KeServiceDescriptorTable;

NTSYSAPI

NTSTATUS

NTAPI

ZwDeviceIoControlFile(

IN HANDLE FileHandle,

IN HANDLE Event OPTIONAL,

IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,

IN PVOID ApcContext OPTIONAL,

OUT PIO_STATUS_BLOCK IoStatusBlock,

IN ULONG IoControlCode,

IN PVOID InputBuffer OPTIONAL,

IN ULONG InputBufferLength,

OUT PVOID OutputBuffer OPTIONAL,

IN ULONG OutputBufferLength

);

typedef NTSTATUS (*ZWDEVICEIOCONTROLFILE)(

IN HANDLE FileHandle,

IN HANDLE Event OPTIONAL,

IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,

IN PVOID ApcContext OPTIONAL,

OUT PIO_STATUS_BLOCK IoStatusBlock,

IN ULONG IoControlCode,

IN PVOID InputBuffer OPTIONAL,

IN ULONG InputBufferLength,

OUT PVOID OutputBuffer OPTIONAL,

IN ULONG OutputBufferLength

);

ZWDEVICEIOCONTROLFILE OldZwDeviceIoControlFile;

void DriverUnload(IN PDRIVER_OBJECT DriverObject);

NTSTATUS

DriverDispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp);

NTSTATUS NewZwDeviceIoControlFile(

IN HANDLE FileHandle,

IN HANDLE Event OPTIONAL,

IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,

IN PVOID ApcContext OPTIONAL,

OUT PIO_STATUS_BLOCK IoStatusBlock,

IN ULONG IoControlCode,

IN PVOID InputBuffer OPTIONAL,

IN ULONG InputBufferLength,

OUT PVOID OutputBuffer OPTIONAL,

IN ULONG OutputBufferLength

);

// jiurl // from addrconv.cpp

#define ntohs(s) ( ( ((s) 8) & 0x00FF ) | ( ((s) << 8) & 0xFF00 ) )

// jiurl // from tcpioctl.h tdiinfo.h tdistat.h

#define IOCTL_TCP_QUERY_INFORMATION_EX 0x00120003

//* Structure of an entity ID.

typedef struct TDIEntityID {

ULONG tei_entity;

ULONG tei_instance;

} TDIEntityID;

//* Structure of an object ID.

typedef struct TDIObjectID {

TDIEntityID toi_entity;

ULONG toi_class;

ULONG toi_type;

ULONG toi_id;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有