在线发布、提交软件

当前位置:首页 > 电脑教程 > 网络安全

渗透测试实践指南必知必会的工具与方法(第三章、扫描)

时间:2016-08-03 14:40:01  来源:软件园  作者:动力软件园

(建立IP地址与开放端口和服务的映射关系)

1.扫描过程的通常步骤

①用Ping数据包验证系统是否正在运行

判断目标系统是否已经开启以及是否可以与我们的计算机进行通信(这一步是最不可靠的,无论这一步产生什么样的结果。我们都应该继续下一步)

②用Nmap扫描系统的端口

识别在特定主机上开启了哪些端口以及运行了哪些服务,每一个开放的端口都是进入目标系统的潜在通道

(服务是指在计算机上执行的特定工作或任务)

③用Nmap脚本引擎(NSE)进一步查询目标

进一步查询,验证早期的发现

④用Nessus扫描系统漏洞

定位和识别运行在目标计算机上的服务和软件有哪些已知的漏洞

通用端口号以及对应的服务

端口号   服务                            端口号 服务

20          FTP数据传输                     443        HTTPS(HTTP+SSL)

21          FTP控制                            445        SMB(通信协议)

22          SSH                             1433     MSSQL(SQL Server数据库服务器)

23          Telnet(远程终端协议)   3306           MySQL

25          SMTP                         3389     RDP(远程桌面协议)

53          DNS                           5800     VNCover HTTP

80          HTTP                          5900     VNC(虚拟网络计算机,远程控制工具)

137-139      NetBIOS (用于小型局域网 Network Basic Input/Output System)

2.Ping(一种特定类型的网络数据包,称为ICMP数据包)

①命令格式:ping target_ip

或 ping target_hostname

例如:ping  google.com

(在Linux系统中,通过 “Ctrl + C”强制ping停止发送数据包)

②回复:

“64 bytes from ord08s05-f6.1e100.net(74.125.225.6): icmp_sep=1 ttl=128 time=29.2ms”

“64 bytes”:标明响应数据包的大小

“from ord08s05 -f6.1e100.net(74.125.225.6):”指定了相应我们的google.com的                                                                                      主机名(以及IP地址)

“icmp_seq=”:指定数据包顺序(依次会显示1,2,3,……)

“ttl=”:生存时间值,确定数据包自动终止前可以经历的最跳数。

“time=”:数据包到目标往返依次花费的时间

注:当100% packet loss 或者 Destination HostUnreachable 时,可以是目标主机宕机(离线)或者拦截ICMP数据包

③FPing

命令实例:fping -a -g 172.16.45.1 172.16.45.254>hosts.txt

< -a >:指定输出中只显示活动主机

< -g >: 指定扫描的IP地址范围

“ >hosts.txt ”:表示将输出重定向到文件 hosts.txt 中

再次提醒:不是每一个主机都会响应ping请求,有些主机上的防火墙或其他设施会阻止ping包。

4.端口扫描

①每台计算机上共有65,536(0-65,535)个端口,端口是基于TCP协议或UDP协议的。

②使用工具的命令行版本,

A)能进行更灵活地设置,更细致地控制,并且更好地理解工具

B)可以将命令行写入脚本中,脚本化和自动化是重中之重

③使用TCP通信时需要完成三次握手

A          SYN→            B

A               ← SYN/ACK  B

A          ACK→            B

5.使用Nmap进行扫描

< -p- > 指定扫描所有端口(Nmap默认扫描1000个最常用端口,)

< -Pn > 禁用Nmap主机发现功能并假定每一个系统都是活动的,强行对其进行扫描

①TCP扫描(最基础,最稳定)

命令实例:nmap -sT -p- -Pn 192.168.18.138

< -s >:告诉Nmap我们要运行哪种类型的扫描

< -T >: 指定执行一个TCP连接扫描

注:a)对整个子网或某一IP地址段进行扫描时,例如

nmap -sT -p- -Pn 192.168.18.1-254

(扫描192.168.18.1 - 192.168.18.254范围内的所有主机)

b)扫描一组IP地址不连续的主机,创建一个文本文件并将每个IP地址逐行填入文件,然后使用 < -iLpath_of_textfile > 参数

例如:nmap -sT -p- -Pn -iL /tmp/target_ip.txt

②SYN扫描(最常用)

A)Nmap默认扫描方式,只使用< -s >参数时,使用SYN扫描

B)SYN扫描比TCP扫描快,原因是只完成了三次握手的前两步

C)SYN扫描一定程度上隐藏了自己,因此SYN扫描通常被称为“隐形扫描”

命令实例:nmap -sS -p- -Pn 192.168.13.1

③UDP扫描

A)千万别忽视UDP端口扫描!

B)基于UDP协议的服务:DHCP,DNS,SNMP,TFTP(TrivialFTP)(简单FTP)

命令实例:nmap -sU 192.168.16.1

(注:之所以不使用 < -p- > 和 < -Pn > 参数是因为UDP扫描非常慢)

C)Nmap很难区分UDP端口是开启的还是扫描数据包被过滤了,所以当执行一个UDP扫描却没有收到任何响应信息时,Nmap反馈信息是“Open|Filtered(启用或过滤)”,解决方案是使用 < -sV > 参数进行版本扫描。

例如:nmap -sUV 172.168.13.2

④RFC(Request For Comments)征求修正意见书

是指一个文档,要么是注释文档,要么是关于现有某项技术或标准的技术规格,它提供了大量的特定系统内部运作的细节

A)Xmas Tree扫描和 NULL 扫描针对的是运行Unix和Linux操作系统的计算机,而不是针对运行Windows系统的计算机

B)运行Xmas Tree扫描和 NULL 扫描的一个主要好处是,某些情况下它们可以绕过简单地数据包过滤和ACLs(访问控制列表)

C)Xmas Tree扫描和 NULL 扫描不会建立任何类型的通信通道,扫描的目标就是判断目标计算机端口是开放的还是关闭的

D)Xmas Tree扫描

(之所以叫Xmas Tree扫描,其原因是数据包的FIN,PSH和URG标记置为“on”)

原理:假如我们所扫描的系统遵循TCP RFC文档的建议,通过发送非常规的数据包就能判断目标系统中端口的当前状态

使用实例:nmap -sX -p- -Pn 192.168.18.132

E)Null扫描

(与XmasTree扫描正好相反,使用没有任何标记(全空)的数据包)

使用实例:nmap -sN -p- -Pn 192.168.18.132

6.NSE(NMAP脚本引擎)

①NSE的调用,使用< --script > 参数

       命令格式:nmap --script <参数>/<脚本名> target_ip

       使用实例:nmap --script banner 192.168.18.132

       (banner 脚本是Nmap的一个扩展,创建到TCP端口的一个连接,并将目标系统发送的任何输出打印到本地终端,在识别隐藏端口上未识别服务时及其有用

       nmap --script vuln 192.168.13.122

       (“vuln”类别将运行一系列在目标系统上搜索已知问题的脚本,在发现漏洞时提供输出,特别注意CVE(Common Vulnerabilities and Exposures)通用漏洞披露,OSVDB(Open Source Vulnerability Database)开源漏洞数据库,以及各类链接。

②NSE将脚本分为多个类别,包括

       授权(Auth)、广播(broadcast)、暴力法(Brute)、默认(Default)

       发现(Discovery)、Dos(拒绝服务攻击denial-of-service attack)

       漏洞利用(Exploit)、外部(External)、漏洞检查工具(Fuzzer)、漏洞(Vuln)

       入侵(Intrusive)、恶意软件(Malware)、安全(Safe)、版本(Version)

7.端口扫描总结

①尽可能使用 < -sV > 参数

②< -T >:改变端口扫描的速度,可选值为0到5,0是最慢,5是最快(扫描速度越快可能造成精确度和隐匿性越低

③< -O >:识别操作系统

④Telent和SSH(最常用,最重要的远程连接服务)

       运行命令: telent target_ip

                            Sshroot@target_ip

8.Nessus(漏洞扫描工具)

       ① “.deb”文件的安装:“dpkg -i example.deb”

       ②在Kali Linux上安装Nessus过程

       A)apt-get install nessus

       B)/opt/nessus/sbin/nessus-adduser(建立一个Nessus用户)

       C)/opt/nessus/bin/nessus-fetch --registeryour_reg_key

       (输入key,从官网注册获得)

       ③Nessus的使用

       A)/etc/init.d/nessusd start(启动Nessus服务器,每次开机需要手动开启!)

       B)通过 https://127.0.0.1:8834 来访问 Nessus的服务器端

       C)确保选中“Safe Checks(安全检查)”,避免意外的网络中断

9.如何实践

       选择一个子网并在该子网中隐藏一个IP地址,然后想办法找到目标计算机,之后进行全面的端口扫描。

       A)使用如下脚本(注意修改IP地址前三个字段以适应自己的网络):

IP_Gen.sh

-------------------------分割线--------------------

#!/bin/bash

echo “Setting up the victim machine, this will take just amoment...”

ifconfig eth0down

ifconfig eth0192.168.18.$((($RANDOM %254) + 1)) up

# uncommentthe following lines by removing the #. To start up services on your victim

# placenote.you may need to change the location/path depending on your distro

#/etc/init.d/sshstart

# note. youmay have to generate your SSH key using sshd-generate

#/etc/init.d/apache2start

#/ect/init.d/atftpdstart echo “This victim machine is now setup.”

echo “The IP address is somewhere in the 192.168.18.0/24network.”

echo “You may now close this window and begin yourattach...Good luck!”

---------------------分割线------------------------

       B)修改该文件的属性  “chmod755 IP_Gen.sh”

       r=4 w=2 x=1,

       755 即 rwx(Owner)-rx(With the Group ofusers)-rx(Public users)

       C)运行该脚本 “./IP_Gen.sh”

10.接下来该做什么

①“insecure.org”网站上提供了关于深入学习Nmap的大量资料

②深入研究NSE,最终目标是编写自己的NSE脚本,进一步扩展该框架

③OpenVAS

④NeXpose、Metasploit Pro、 Core Impact、 Canvas