频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

SMB攻击的一些资料

来源:www.zxboy.com 作者: 出处:巧巧读书 2006-05-25 进入讨论组
上一页 1 2 3 4 5 6 

  --[ 8 - 使用RAP命令列出服务器上所有可得的共享列表

这部分是上面的补充。我将会演示一个如何使用RAP命令的例子。

我们如何才能获得网络上的每人都可访问的SMB共享资源:

其实过程很简单。客户端必须在服务器上通过认证。这些在第三章里都有讲解。在服务器通过验
证后,客户端发送一个TconX请求数据报给服务器(在接收到SesssetupX应答数据报之后)。

TconX 的意思是 Tree Connect and X。

TconX请求数据报用来访问一个共享资源。

----[ 8.1 - TconX数据报

TconX数据报是建立在SMB基础报文头部之上的,命令代码为0x75。

请求数据报头部:

UCHAR WordCount; Count of parameter words = 4
UCHAR AndXCommand; Secondary (X) command; 0xFF = none
UCHAR AndXReserved; Reserved (must be 0)
USHORT AndXOffset; Offset to next command WordCount
USHORT Flags; Additional information

USHORT PasswordLength; Length of Password[]
USHORT ByteCount; Count of data bytes; min = 3
UCHAR Password[]; Password
STRING Path[]; Server name and share name
STRING Service[]; Service name

密码在会话建立过程中被发送到了服务器。如果密码的长度为1,则密码就被置为空(0x00)。

“Path”域包含了你想要访问的共享资源的名字。它使用UNICODE编码。如过我想访问一台
“myserver”服务器上的“myshare”资源,“Path”字符串就该置为“\\myserver\myshare”。

“Service”包含了请求资源的类型:

stringType of ressource

“A:” 磁盘共享.
“LPT1:” 打印机.
“IPC” 命名管道.
“COMM” 通信设备.
“?????” 任何设备类型.

如果你要扫描设备的类型,你必须在“Service”域里使用“?????”。

在你发送了一个TconX请求数据报到服务器后,它会给你发送一个TconX的应答报文。你还必须
修复“Tid”域(在SMB基础报文头部),因为它是RAP命令里的事物处理请求。你还要告诉服务器你想
获得那些你有权得到的资源名字。当然,你可以通过“NETSHAREENUM”命令来获得它们。

----[ 8.2 - RAP命令“NetshareEnum”的解释

我们将要学习RAP命令里的“NetShareEnum”。

RAP命令中的“NetShareEnum”请求:

函数NetShareEnum的16位代码: 0;

参数描述符: “WrLen”;

返回的数据描述符: “B13BWZ”;

一个16位的值为0x01的整数;

一个16位整数包含的获得数据的缓冲区长度;

在这个请求数据报中不需要任何数据,所以“DataCount”域和“TotalDataCount”域都置零。

│--------------------------------------------│
│ NETBIOS HDR │---------> 4 bytes
│--------------------------------------------│
│ SMB BASE HDR │---------> 32 Bytes
│--------------------------------------------│
│ SMB TRANSACTION REQUEST HDR │
│--------------------------------------------│

事物处理请求的“Parameters”域获得RAP请求命令的参数:

│--------------│
│ 0x0000 │ ----------------------------------------> A
│--------------│--------------│--------------│
│ W r │ L e │ h 0x00│-----------> B
│--------------│--------------│--------------│-------│
│ B 1 │ 3 B │ W Z │ 0x00 │---> C
│--------------│--------------│--------------│-------│
│ 0x0001 │ 0xffff │--------------------------> D
│--------------│--------------│

A: NetShareEnum函数代码: 0x00
B: 参数描述符
C: 数据描述符
D: 0x01(已定义值)和0xffff(获取数据报的最大长度)

服务器的应答:

“Parameters”域接收到事物处理应答报文头部信息:

一个16位整数包含了返回的状态值:

成功 0
拒绝访问 5
拒绝访问网络 65
更多数据 234
服务器已关闭 2114
事物处理配置错误 2141

一个16位的“转换字”,用来计算备注信息的偏移量。

一个16位获得返回的条目数 = 返回SHARE_INFO数据结构的数目。

一个16位获得可利用的条目数。

在事物处理应答报文的“Data”域中包含了几组SHARE_INFO的数据结构。

SHARE_INFO数据结构包含了可利用资源的信息,定义如下:

struct SHARE_INFO {
char shi1_netname[13]; /*Name of the ressource*/

char shi1_pad; /*Pad to a word*/

unsigned short shi1_type; /*Code specifies the type of the shared resssource :
0 Disk Directory tree
1 Printer queue
2 Communications device
3 IPC*/

char *shi1_remark; /*Remark on the specified ressource*/
}

shi1_remark是一个32位的字符传指针。它包含了相应资源的备注信息。你必须取出它的后16位
到“converter word”域中,以知道这个备注字符串和RAP应答报文参数头部之间的偏移量。

实际上以ASCII编码是:

│--------------------------------------------│
│ NETBIOS HDR │------------> 4 bytes
│--------------------------------------------│
│ SMB BASE HDR │------------> 32 Bytes
│--------------------------------------------│
│ SMB TRANS REPLY HDR │
│--------------------------------------------│

事物处理应答头部的“Parameters”域定义:
(对应于NetShareEnum函数返回的参数)

│--------------------------------------------│
│ status code │-------------> 2 bytes
│--------------------------------------------│
│ converted word │-------------> 2 bytes
│--------------------------------------------│
│ number of entries returned │-------------> 2 bytes
│--------------------------------------------│
│ number of entries available │-------------> 2 bytes
│--------------------------------------------│

事物处理应答报文的数据部分:
(对应于多个SHARE_INFO数据结构)

│--------------------------------------------│
│ shi1_netname │-----------> 13 bytes
│--------------------------------------------│
│ shi1_pad to pad to word │-----------> 1 byte
│--------------------------------------------│
│ type of service │-----------> 2 bytes
│--------------------------------------------│
│ pointer to remark string │-----------> 4 bytes
│--------------------------------------------│
.
其他的SHARE_INFO数据结构
.
│--------------------------------------------│
│ remark string 1 │
│--------------------------------------------│
│ another remarks strings │
│--------------------------------------------│


--[ 9 - 结论

我希望你能在这篇文章中学到些东西。如果你有任何意见,问题,请与我联系:


--[ 10 - 参考

[1] "A common Internet File System (CIFS/1.0) Protocol
Preliminary Draft", Paul J.Leach and Dilip C. Naik
http://www.snia.org/tech_activities/cifs/cifs-tr-1p00_final.pdf

[2] "CIFS Remote Administration Protocol Preliminary Draft"
Paul J.Leach and Dilip C. Naik
http://us6.samba.org/samba/ftp/specs/cifsrap2.txt

[3] RFC 1001
http://www.faqs.org/rfcs/rfc1001.html

[4] RFC 1002
http://www.faqs.org/rfcs/rfc1002.html

本文:http://www.qqread.com/net-saft/f707113081.html 更多文章 更多内容请看DoS 拒绝服务攻击专题脚本攻击和防范DDoS攻击防御与分析专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章