黑客零做起
什么是扫描技术?
扫描技术的本质是信息刺探技术,是黑客在进行侵入之前的踩点。扫描一台主机或者一个网络段,通常是为了发现被扫描对象提供哪些服务或具有哪些漏洞,推断系统的状态或者针对漏洞进行攻击。
TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)中文译名为传输控制协议/网络通信协议。简单的说,TCP/IP就是由网络层的IP协议和传输层的TCP协议组成的。
- TCP/IP协议包含两层协议:
1 高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传输送到接收端的TCP层,接收端的TCP层把包还原为原始文件。
2 低层为网络通信协议,它处理每个包的地址部分,使这些包正确的到达目的地。
-
TCP/IP协议使用客户端/服务器端模式进行通信。TCP/IP通信是点对点的,是网络中一台主机与另一台主机之间进行通信。
-
TCP/IP协议的上层应用协议包括,
1 超文本协议 HTTP
2 文件传输协议 FTP
3 远程网络访问协议 Telnet
4 简单邮件传输协议 SMTP
这些协议通常和TCP/IP打包在一起,再使用模拟电话与调制解调器连接网络的个人计算机,涉及
5 串行线路接口协议 SLIP
6 点对点协议 p2p
关于TCP协议报文结构图、用户数据报协议UDP的报文结构图,后续补充。
其他协议是网络主机用来交换路由信息的,包括Internet控制信息协议(ICMP)、内部网关协议(IGP)、外部网关协议(EGP)、边界网关协议(BGP)
关于ICMP报文结构图,后续补充。
IP地址是在网络上分配给每台计算机或者网络设备的32位数字标识符,IP地址的格式是xxx.xxx.xxx.xxx 其中xxx为0~255之间的任意整数。
端口是计算机与外部通信的途径,通常分为两种,
-
硬件端口
-
逻辑端口
在TCP/IP数据包中,除了携带发送和接收方的IP地址和端口号外,TCP的报头还包含一个序列号和一些起着标识作用的标记位,SYN、ACK和FIN。
一台计算机(以下简称A主机)首先请求和另外一台计算机(以下简称B主机)建立连接,它是通过发送一个SYN请求完成的,也就是前面提到的SYN标记位置位。
消息的大致内容是说“你好,我想和你设备上的端口x建立服务连接,先同步一下,用序列号Y来开始连接”。
【注】:根据端口号不同,服务类型不同。两台计算机间的每条信息都有一个由发送方产生的序列号,序列号的使用使得双方知道他们之间是同步的,而是还可以起到丢失信息时或接收信息错误时发送警告信息。
接收到SYN请求的B主机响应发送来的序列号,它将使用ACK标记位置位,同时提供自己的序列号,消息的大致内容是说,“你好,我收到你的连接请求了,这是我的序列号”。
【注】:到现在为止,A主机认为连接已经建立,B主机却不这样认为,B主机只有收到了自己序列号的应答消息才能确认连接。现在的状态,叫做半连接状态,所以系统不会对这次连接做任何记录。这种
半连接是扫描的重要原理之一。
- 两台计算机的连接和断开的握手情况,后续补充。
- 目前所有信息搜集扫描都是基于“握手”原理,在本地主机上可以通过弹出的CMD命令行,输入“netstat -an”。对主机扫描时,在一定程度上可以手动进行。手动进行扫描时,需要熟悉各种命令,而且对命令执行后的输出进行分析需要较多的实践经验。手动扫描无法对大范围的主机进行扫描,因此扫描操作主要依赖扫描器完成。
由黑客发起的恶意扫描通常为三阶段:
1.第一阶段 :主要任务是确定目标主机是否存活,如果目标主机在开机状态却无法扫描,则需分析主机可能采用的安全防御机制。
2.第二阶段 :发现目标后进一步搜集目标信息,进行开放端口扫描以及对端口所绑定的服务的确认,特别是在修改过服务器端口的情况下,需要确定修改后的端口上所绑定的服务。另外,还需要注意到操作系统类型、运行的服务以及服务软件的版本等。如果目标是网络,还可以进一步发现网络的拓扑结构、路由设备以及各主机的信息。
3.第三阶段: 根据搜集到的信息判断主机是否存在安全漏洞,主要任务是网络系统漏洞库,漏洞扫描大体包括CGI漏洞扫描、POP3漏洞扫描、FTP漏洞扫描、SSH漏洞扫描、HTTP漏洞扫描、SQL漏洞扫描、脚本漏洞扫描等等。在每一类漏洞扫描下面还有一些分类扫描项目,如FTP漏洞下包括针对FTP登录弱口令的扫描和远程溢出漏洞的扫描;HTTP漏洞下包括Unicode遍历目录漏洞探测、目录写权限漏洞扫描等。
在windows操作系统中,自带了一个ping.exe工具,该工具在网络安装检测中经常用到。当内网连接配置好以后,通常网络管理员都会在CMD下,使用如下命令查看与目标机之间的联系状况:ping 目标主机IP 。ping命令所具有的一些探查网络信息的功能,也常被黑客用来作简单的扫描之用。ping命令实际上一个小工具,通常可以在C:\Windows\System32目录下找到它。
TTL值 即生存时间,是IP包中的一个值,它能辨别网络路由器包在网络中存在的时间是否太长而应该被丢弃。解决方法是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否重发。
【注】:TTL初始值是系统默认值,是包头中的8位的域。TTL的最初设想是:确定一个时间范围,超过这个时间范围就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示在被丢弃前最多能经过的路由器个数,当计数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发报者。