主机探测的目的是确定目标网络上的主机是否可达,这是信息搜集的初级阶段。
常见的探测手段是ping
,是非常好用的TCP/IP工具。它主要用于检测网络的连通情况和分析网络速度,Ping
命令发送的数据包时ICMP协议数据包。
ICMP协议(Internet Control Message Protocol):是IP的一部分,在IP协议栈中必须实现。
Ping命令原理:发送ICMP回送请求消息给目标主机。ICMP协议规定,目标主机必须返回ICMP回送应答消息给扫描主机。如果扫描主机在一定时间内收到了类型码为0的ICMP回应信息,则认为主机可达。Ping程序在ICMP协议能测试网络连通性的前提下,增加了可以测试网络速度的功能,因为Ping程序会连续发送多个ICMP数据包来计算网络间隔时间。
Ping的返回信息:Request Timed Out(防火墙拒绝或已下线),Destination Net Unreachable(路由表无路由)、Unkown host(域名解析失败)等。
通过ping /?
命令,我们可以得到很多中文帮助信息,中文的支持是Windows的优势,当然Windows系统正版是需要收费的。
ping -l 1024
通过 -l 命令设置发送的ICMP数据包大小字节:数据包大小; 时间:发出数据包和收回的经历时间; TTL:对方发送回来时设置的网络层的网络数据包生存周期(允许经过路由器的次数)
ping -n 2 www.baidu.com
ping -i 14 www.baidu.com
当确定了目标主机可达后,就可以使用端口扫描技术,发现目标主机的开放端口,包括网络协议和各种应用监听的端口。端口扫描一般向目标主机每个端口发送消息,询问端口是否开放。以更深入通过端口寻找安全漏洞。
国内非常著名的综合扫描器之一,完全免费无需注册安装,支持图形化和命令行方式,由民间黑客组织“安全焦点”完成。
X-Scan3.3-cn 系统要求:Windows NT/2000/XP/2003
工具程序的设计是利用ICMP以及IP header的TTL得到经过路由器的信息。
基本原理是,从源主机多次发送ICMP包到目标主机,第一次发送设置TTL为1,以后每发送一次TTL+1,直到发送到目标主机。在依次发包的过程中,会受到很多ICMP time exceeded的信息,这里面就包括了逐步经过的路由器的IP地址。
Traceroute有一个等待ICMP TTL到期消息响应的固定时间,如果时间过了,就会打印出 * 号,表明在这个路径上不在给定时间内发出ICMP TTL到期消息的响应。
扫描主机:
获得漏洞报告
Nmap扫描器支持Windows、Linux、Mac等操作系统,非常主流的扫描器。检测主机、端口、端口对应的软件、硬件地址、漏洞等等。支持图形化、命令行界面。
open、closed、filtered、unfiltered、open|filtered、close|filtered。
UDP扫描 (-sU):发送空的UDP报头到每个目标端口。如果返回ICMP端口不可到达错误(类型3,代码3),则端口是closed,其它ICMP端口不可到达错误一般是filtered(被过滤的)。
版本扫描(-sV)
TCP SYN扫描(-sS):SYN扫描是默认的扫描选项,速度快。原理是:不完成TCP连接,只发送一个SYN报文,如果回复SYN/ACK表示端口在监听,如果回复RST(复位)表示没有监听,数次重发仍无响应,则该端口被标记为被过滤;如果是ICMP不可达错误也被标记为被过滤。
TCP connect(-sT)扫描:当SYN扫描不可用时,默认选择该扫描方式。这种方式容易被IDS(入侵检测系统)捕获记录。(Nmap连接不发送数据又关闭连接,很多Unix系统会在syslog下留下记录)
Ping扫描
SCTP INIT Scan
TCP ACK Scan:发送ACK包,如返回RST标记unfiltered。如无返回或返回不可达,filtered。
TCP Window Scan:对滑动窗口的扫描,扫描技术类似ACK扫描。
IP Protocol Scan:IP协议的扫描,扫描目标主机支持哪些IP协议。
Intense Scan(猛烈扫描):常用扫描的组合,包括端口、系统、路由、版本信息。
tranceroute(路由跟踪)
1、使用TCP connect扫描方式,速度慢200多秒,结果相同
nmap.exe -sT 192.168.1.2
2、使用TCP SYN扫描方式,速度快1秒,结果相同
nmap.exe -sS 192.168.1.2
通过扫描主机相关堆栈信息区别操作系统,nmap.exe -O 192.168.1.2
nmap -sU 192.168.1.2
漏洞扫描是指基于漏洞数据库,通过扫描手段对指定的远程或本地计算机系沟通的安全脆弱性进行检测,发现可利用漏洞的行为。
漏洞扫描技术通常与防火墙和入侵检测系统相互配合,有效提高网络的安全性。
Nessus是目前全世界最多人使用的系统漏洞扫描与分析软件。v3以前是开源,支持多操作系统,Nessus对个人免费需要通过邮箱注册账号。
Nessus针对每一个漏洞都有一个对应的插件,漏洞插件是模拟攻击漏洞的代码段,它用NASL(Nessus Attack Script language)语言编写。
Nessus能力:主机探测、端口扫描、识别系统以及服务程序类型、根据已知漏洞信息分析漏洞、生成扫描结果报告。
无漏洞
/opt/nessus/sbin/nessuscli help
/opt/nessus/sbin/nessuscli fix --list-interfaces
/opt/nessus/sbin/nessuscli help
列出用户
/opt/nessus/sbin/nessuscli lsuser
增加用户
/opt/nessus/sbin/nessuscli useradd test
修改用户密码
/opt/nessus/sbin/nessuscli chpasswd test
简单来说使用NASL语言,编写可以加载到Nessus的攻击插件。
代码文件名为.nasl、使用/bin/下的nasl解释器进行编译运行。
# #检查SSH # if(description) { script_name(english:"Ensure the presence of ssh"); script_description(english:"This script makes sure that ssh is running"); script_summary(english:"connects ont remote tcp port 22"); script_category(ACT_GATHER_INFO); script_family(english:"Admiminstration toolbox"); script_copyright(english:"This script was imitated by Joe U."); exit(0); } # #SSH服务可能隐藏在别的端口 #因此我们需要依赖于find_service插件获得的结果 # port=get_kb_item("Services/ssh"); if(!port)port=22; #首先声明SSH没有安装 ok=0; if(get_port_state(port)) { soc=open_sock_tcp(port); if(soc) { #检查端口是否是由TCP_Wrapper封装的。 data=recv(socket:soc,length:200); if("SSH">