文章目录
端口服务信息
1、端口扫描思路和代码实现
1.1 查看本机端口信息
# Windows
netstat -aon|findstr 3306
# Linux
netstat -an|grep 3306
1.2 远程机器端口
telnet 192.168.142.137 80
wget 192.168.142.137 80
nc -vz 192.168.142.137 445
1.3 python代码扫描
import socket, threading
def TCP_connect(ip, port_number, delay, output):
TCPsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCPsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
TCPsock.settimeout(delay)
try:
TCPsock.connect((ip, port_number))
output[port_number] = 'Listening'
except:
output[port_number] = ''
def scan_ports(host_ip, delay):
threads = [] # To run TCP_connect concurrently
output = {} # For printing purposes
# Spawning threads to scan ports
# 先扫10000个端口
for i in range(10000):
t = threading.Thread(target=TCP_connect, args=(host_ip, i, delay, output))
threads.append(t)
# Starting threads
for i in range(10000):
threads[i].start()
# Locking the script until all threads complete
for i in range(10000):
threads[i].join()
# Printing listening ports from small to large
for i in range(10000):
if output[i] == 'Listening':
print(str(i) + ': ' + output[i])
def main():
host_ip = input("Please enter host IP: ")
# 超时抛出异常
delay = int(input("How many seconds the socket is going to wait until timeout: "))
scan_ports(host_ip, delay)
input("Press Any Key to Exit")
if __name__ == "__main__":
main()
2、常见端口及漏洞
2.1 常见端口
https://nsrc.org/workshops/2009/summer/presentations/day3/common-ports.pdf
2.2 分类
- 文件共享服务
- 远程连接服务
- Web应用服务
- 数据库服务
- 邮件服务
- 网络常见协议
- 其他服务端口
2.3 文件共享服务端口
2.4 远程连接服务端口
2.5 web应用服务端口
2.6 数据库服务端口
2.7 邮件服务端口
2.8 网络常见协议端口
2.9 特殊服务端口
3、端口扫描工具
3.1 Nmap
Nmap(Network Mapper)https://nmap.org/
1)扫描主机(Host Discovery)
2)扫描端口(Port Scanning)
3)探测操作系统、软件版本 (Operating System Detection、Version Detection)
参数类型
nmap --help
- TARGET SPECIFICATION:目标,对什么进行扫描,比如是域名、IP或者网络
- HOST DISCOVERY:主机发现,怎么对主机进行扫描,比如简单扫描,还是全部扫一遍,或者用相应的协议扫
- SCAN TECHNIQUES:扫描技术,协议的设置
- PORT SPECIFICATION AND SCAN ORDER:端口和扫描顺序设置
- SERVICE/VERSION DETECTION:服务和版本识别
- SCRIPT SCAN:使用脚本,nmap本身内置了大量的lua脚本,而且还可以自己编写脚本
- OS DETECTION:操作系统识别
- TIMING AND PERFORMANCE:时间和性能设置,比如扫描频率、重试次数等等
- FIREWALL/IDS EVASION AND SPOOFING:防火墙绕过和欺骗,比如使用代理,假IP等
- OUTPUT:把扫描接出输出到文件
- MISC: 启用IPv6等等配置
脚本
nmap本身内置了大量的lua脚本,而且还可以自己编写脚本
ls /usr/share/nmap/scripts/ | wc -l
全部清单:https://nmap.org/nsedoc/index.html
例如:
nmap 192.168.142.137 --script http-enum 列举HTTP服务
nmap --script=auth 绕过鉴权
nmap --script=brute 暴力破解
nmap --script=vuln 扫描漏洞
安装metasploitable2 Linux靶机
nmap 192.168.142.137 # metasploitable2 Linux
nmap testfire.net # IBM的一个靶场
常用参数
# 简单扫描
nmap -sP 192.168.142.137
# 指定端口或范围扫描:
nmap -p0-65535 192.168.142.137
# 探测操作系统:
nmap -O 192.168.142.137
# 只进行主机发现,不进行端口扫描
nmap -sn 192.168.40.195/24
IP后面的 /24是什么意思?
掩码的位数。
子网掩码8位,11111111.00000000.00000000.00000000 代表:
255.0.0.0(A类IP地址)
子网掩码16位,11111111.11111111.00000000.00000000 代表:
255.255.0.0(B类IP地址)
子网掩码24位,11111111.11111111.11111111.00000000 代表:
255.255.255.0(C类IP地址)
旁站:和目标网站在同一台服务器但端口不同的其他网站。
C段 :和目标服务器IP处在同一个C段的其它服务器。
3.2 Zenmap
第一种:Intense scan
第二种:Intense scan plus UDP
第三种:Intense scan,all TCP ports
第四种:Intense scan,no ping
第五种:Ping scan
第六种:Quick scan
第七种:Quick scan plus
第八种:Quick traceroute
第九种:Regular scan
第十种:Slow comprehensive scan
3.3 其他扫描工具
在线扫描 http://coolaf.com/tool/port