关于应用层协议的审计

 

数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)

IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)

TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)

 

以下协议均是 在 wireshark 下抓包获取的,每个协议区分于其他协议的都有一个特征位,或者标示符,只需要找到相应就ok!,关于各协议的具体流程你可以参考RFC。

1、DNS  ----域名解析服务器 

       DNS 默认端口 53;

       

 基于UDP,我们可以看到,dns分请求和响应,请求的标示位|0100| 而响应的response 为|8180|。然后我们可以根据这些东西在编写程序的时候获取这些包。

 

2、HTTP 协议

    HTTP协议是一种请求/响应型的协议,HTTP通信通常发生在TCP/IP连接上。默认端口是TCP 80;

    HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于 GET方式的请求时产生。如果服务器不能处理太长的URI的时候,服务器应该返回414状态码(此状态码代表Request-URI太长)。

  方法Method可选值:
         Method = "OPTIONS"
                | "GET"
                | "HEAD"
                | "POST"
                | "PUT"
                | "DELETE"
                | "TRACE"
                | "CONNECT"
                | extension-method
  extension-method = token

  1.2 URL定义
     Request-URI    = "*" | absoluteURI | abs_path | authority

  

图2是16进制表示的。可以看到htp数据部分,首先是GET,我们可以通过这个表示去区别协议包、、。。。。

 至于URL 表示不太理解rfc中所说的,我的做法是Host后面的内容+GET 后面的内容、 

 

3、netbios 协议

    NETBIOS名字用来在网络上鉴别一台计算机。

  137端口:netbios 的名称 UDP

  138端口: netbios数据报 UDP

   139端口: netbios会话  TCP  

  这边讨论的是网上邻居《可以抓到NBSS包即:netbios session》 端口139

   让我们假设一个这样的环境:一个客户端希望访问一台服务器上的特定资源。

 

  1 - 开始于客户端向服务器请求一个NETBIOS会话。客户端发送它的已编码的NETBIOS名字到SMB   服务器(它们在139端口监听连接请求)。服务器接收到NETBIOS名字后回复一个NETBIOS会话数据报给   有效的会话连接。客户端在建立了连接之后才能进入访问。

 

一个软件接口和命名系统。每台主机都有一个长度为15个字符的NETBIOS名字,且第十六个字符用来标志主机的类型(域名服务器,工作站……)。

第十六个字符的选择:

0x00 基础电脑,工作站。0x20 资源共享服务器。

  2、关于netbios 的名字 

 

编码一个NETBIOS名字非常的简单。例如我的计算机的NETBIOS名字是“BILL”,它是一个工作站,所以它的第十六个字符为“0x00”。

首先,如果一个NETBIOS名字比15字节短,就会在右边补填上空格。

“BILL “

十六进制为: 0x42 0x49 0x4c 0x4c 0x20 0x20 ......0x00

每个字节都分裂为4位一组:

0x4 0x2 0x4 0x9 0x4 0xc 0x4 0xc 0x2 0x0 .......

而且每个4位都要添加ASCII码‘A’的值(0x41)。

0x4 + 0x41 = 0x45 -> ASCII value = E0x2 + 0x41 = 0x43 -> ASCII value = C……

最后NETBIOS名字被编码为32字节长。

        代码:

        

static uint8_t*  OperatorUserParse(uint8_t* user)
{
    char tmp[32]={'\0'};
    int i=0,j=0,num1=0,num2=0;
    memset(tmp,0,sizeof(tmp));
    int len =strlen(user);
    for(j;j<len;j=j+2)  
    {
      num1 = user[j]-'A';
	  num2 = user[j+1]-'A';
	  tmp[i++]=num1*16+num2;
    } 
    return tmp;	 
}

 

    具体参考:http://blog.csdn.net/vevenlcf/article/details/17716053

    抓到的包:请求标示符 8100  响应 8200

    【图片有点问题,自行抓包!!!】

    netbios 在139 会话中 与SMB 协议一起联合使用。NBSS 中获取 user 用户名。SMB可以获取 通过网络邻居 访问的路劲, 但是 由于 会话时间问题,可能会中断会话,但是用户仍然需要 继续操作,所以还是建议 通过写文件的操作 来将 一级目录存取下来,然后通过tree_id来鉴别文件中的path,最后在与获取的二级目录相连接,注意的是,netbios会话中的包,中文是连续的,使用的unicode 编码。转换为utf8的比列 1:2. 但是 英文的却不是连续的 中间 穿插了一个00,所以 解码的时候需要注意,英文只占一个字符长度。   

 

4、telnet

 

一个TELNET连接就是一个用来传输带有TELNET控制信息数据的传输控制协议(TCP)的连接。服务器使用端口号23

       telnet是实时的,终端每一次的输入都会产生必要的响应。 请求标示符| ff fd 25|  响应的标示符|ff fb 25|。

      

   5、IMAP 协议    --RFC3501

    IMAP 运行在TCP/IP上,使用的端口是143 ,当前用的是imap4.

   MAP4和POP3的区别

  IMAP和POP3的区别,简单来说,imap只拿邮件头下来,邮件仍在服务器上,可以节约远端的下载时间,不需要全部下载,可以通过客户端直接对邮件进行操作。

     

     POP3提供了快捷的邮件下载服务,用户可以利用POP3把邮箱里的信下载到PC上进行离线阅读。一旦邮件进入PC的本地硬盘,就可以选择把邮件从服    务器上删除,然后脱离与Internet的连接并选择在任何时候阅读已经下载的邮件。

    IMAP同样提供了方便的邮件下载服务,让用户能进行离线阅读,但IMAP能完成的却远远不只这些。首先,IMAP提供的摘要浏览功能可以让你在阅读    完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。也就是说,你不必等所有的邮件都下载完毕后才知道究竟邮件里都有    些什么。如果你根据摘要信息就可以决定某些邮件对你毫无用处,你就可以直接在服务器上把这些邮件删除掉,而不必浪费你宝贵的上网时间。

    

 

 

      

       具体: http://www.doc88.com/p-0827384311550.html

 

 

 

 

 

 

 

 

 

 

 

 

SMTP,POP,QQ,FTP  待续。。。。。。。。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tiny丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值