目录
1)域名与ip(DNS Domain Name Server)
一.为什么要做信息收集
1)渗透测试的流程:确定目标,信息收集,漏洞扫描,漏洞利用,形成报告
2)收集包括的内容:域名信息,ip段,开放的端口,网站架构,文件目录结构,软件版本,WAF,旁站,C段.....
3)学习框架:这种信息是什么,怎么收集这种信息,收集这种信息有什么用
二.域名相关信息
1.域名是什么
域名:Domain name
在计算机网络中,想找对应的计算机需要用到ip地址,因为ip太难记了所以需要用域名来代替ip
域名的注册需要花钱
2.域名的分类
国际域名
.com(商业公司),.net(网络服务), .org(组织协会),.gov(政府部门),.edu(教育机构),.mil(军事领域),.int(国际组织)
国别域名
.cn(中国),.UK(英国),.US(美国
新顶级域名
biz,info,name,pro,aero.........
3.域名联系人信息
所属人,邮箱,电话,地址.......(一个人只能有一个备案号)
用在线网站去查询
ICP/IP地址/域名信息备案管理系统 (miit.gov.cn)
用kali去查
查到公司名字后可以去天眼查查公司的具体信息
天眼查-商业查询平台_企业信息查询_公司查询_工商查询_企业信用信息系统 (tianyancha.com)
4.子域名信息
1)什么是子域名
百度搜索:www.baidu.com
百度新闻,百度地图,百度贴吧,百度文库。。。。。
例如a.baidu.com
在百度的主域名前多一个分域名
2)怎么查
a.baidu.com,b.baidu.com...........
1.字典猜解(需要有一个比较好的字典)
2.枚举
3.工具查询(如layer子域名挖掘机,subDomainsBrutelijiejie/subDomainsBrute: A fast sub domain brute tool for pentesters (github.com))
5.域名DNS信息
1)域名与ip(DNS Domain Name Server)
www.baidu.com----->域名解析服务------->220.181.38.148
2)域名解析信息
设置DNS服务器,用来提供DNS解析服务
补充:记录类型
A:A记录是最常用类型,将域名指向一个IPv4地址,如8.8.8.8
CNAME: 将域名指向另一个域名地址,与其保持相同解析,如https://www.dnspod.cn
MX 用于邮件服务器,相关参数一般由邮件注册商提供
TXT 可填写附加文本信息,常用于域名验证
NS 域名服务器记录,可将指定域名交由其他DNS服务商解析管理
AAAA 将域名指向一个IPv6地址,如 ff06:0:0:0:0:0:0:c3
3)怎么查
域名解析查询(A/Txt/Cname/Mx/Srv/Aaaa...) (dbcha.com)
What's that site running? | Netcraft
在线域名解析记录检测-在线Nslookup域名解析查询工具 (jsons.cn)
kali中的maltego(免费版本功能比较少,不推荐)
三.IP相关信息
1.DNS服务器的类型
1)DNS解析流程
找本地的DNS服务器
在cmd中ipconfig /all
有可能显示路由器地址:由路由器转发给 本地域名服务器
根域名服务器:全球有13组(.com)
顶级域名服务器:负责顶级域名的解析(baidu.com)
授权服务器:解析三级服域名(map.baidu.com)
2.ping / nslookup
拿到域名后,我们需要找到对应的IP
1)ping
ping全称:Packet Internet Groper(因特网包探测器)
ping /?
查看ping 的指令
2)nslookup
1.nslookup baidu.com
显示Non-authoritative answer的原因:这条解析记录是从电脑本地拿的
2.man nslookup查看参数
举例:nslookup -type="NS" baidu.com
3.IP归属信息
通过在线网站查询
4.如何获取CDN背后的真实IP
1)什么是CDN?
Content Delivery Network:内容分发网络
了解CDN:参考阿里云的文档
实现流程:
2)为什么要有CDN?
如果没有CDN会有什么影响?
全球用户都访问同一台服务器,极容易造成DDOS
采用CDN技术后
用户就近访问同一个运营商下的服务器
3).常见的CDN服务商
CloudFlare/CloudFront
帝联/蓝讯/网宿/七牛云/腾讯/百度/阿里云
4)如何找出真实ip
如果一个网站采用了CDN技术,会使我们的渗透难度加大
wsglb0就是运营商(网宿)提供的CDN服务
此时我们获取的ip是运营商的服务器的ip而不是源站ip
绕过CDN方法:
1.超级ping
多个地点Ping服务器,网站测速 - 站长工具 (chinaz.com)
利用在线网站帮助探测ip
2.历史DNS
为什么要查历史DNS
因为一个网站在刚开始时用户流量不高,采取CDN技术成本太高,因此会直接使用源站ip,
因此,历史DNS中有可能找到源站ip
在线查询网站
What's that site running? | Netcraft
全球 CDN 服务商查询_专业的 IP 地址库_IPIP.NET
3.通过子域名查询ip
为什么子域名能查到?
同样也是成本问题,可能有些公司在主域名(访问量大)使用了CDN,但子域名(访问量小)就没使用CDN
参考2.7字域名信息
4.国外主机解析
为什么国外的能查到源站ip?
以阿里云提供的CDN服务为例
只是覆盖了70多个国家和地区,而不是全球地区,总能找到没有提供CDN服务的地区,此时用该地区的ip访问拿到的ip有可能是源站
Website Speed Test | Pingdom Tools
WebPageTest - Website Performance and Optimization Test
Website uptime monitoring service, check is site down - Host-tracker - en
5.其他
网络空间搜索引擎:fofa,censys
邮件(通过抓邮件的包)
收集APP抓包
微信服务号抓包
四.端口服务相关信息
获取真实ip后,我们需要了解这台服务器运行了什么服务,才能找到能够利用的漏洞
1.端口扫描思路和代码(python)实现
计算机对外提供服务时,为了区分服务,每一个服务都会占用一个端口号
端口号:1~65535
很多程序都有自己的默认端口号:
mysql:3306,http:80,tcp:443等等
在这种情况下,我们找到端口号就能确定这个服务器提供了怎样的服务
1)查看本机端口信息(以mysql为例)
Windows: netstat -ano|findstr 3306
Linux:netstat -an|grep 3306
2)远程机器
按端口号给靶机发送数据包,若靶机回应了则认为靶机有开放该端口
常用的命令
telnet 192.168.142.137 80
wget ...
nc -vz 192.168.142.137 80-9000
(-v 显示详细信息,-z显示进程,不会向靶机发送实际数据)
3)端口一个一个试太麻烦了,因此我们可以使用代码来帮助我们测试
# 模板位置:file,setting。Editor。file and Code Templates
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_port(host_ip, delay):
threads = [] #to run TCP_connect concurrently
output = {} #for printing purposes
#Spawning threads to scan ports
#以10000为例
#如果需要从1-65535就将for中的10000改为65535
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_port(host_ip, delay)
input("Press Any Key to Exit")
if __name__ == "__main__":
main()
演示:
画红线的就是需要填写的
可以看到
2.常见端口及漏洞
从1~65535扫描效率太低了,实际上,我们可以通过扫描常用端口号来获取相关信息
记不住没关系,也不必要去记,用的多了自然就记住了
如图(颜色是分类)
分类
1.文件共享服务
端口号 | 端口说明 | 攻击方向 |
21/22/69 | FTP/SFTP文件传输协议 | 允许匿名上传,下载,爆破和嗅探操作 |
2049 | NFS服务(Network File System) | 配置不当 |
139 | Samba服务 | 爆破,未授权访问,远程代码执行 |
389 | LADP目录访问协议 | 注入,允许匿名访问,弱口令 |
2.远程连接服务
端口号 | 端口说明 | 攻击方向 |
22 | SSH远程连接 | 爆破,SSH隧道及内网代理转发,文件传输 |
23 | Telnet远程连接 | 爆破,嗅探,弱口令 |
3389 | RDP远程桌面连接 | Shift后门(windows Server2003以下的系统),爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PcAnywhere远程控制服务 | 抓密码,代码执行 |
3.Web应用服务
端口号 | 端口说明 | 攻击方向 |
80/443/8080 | 常见的web服务端口 | web攻击,爆破,对应服务器版本漏洞 |
7001/7002 | Weblogic控制台 | java反序列化,弱口令 |
8080/8089 | Jboss/resin/jetty/Jenkins | 反序列化,控制台弱口令 |
9090 | Websphere控制台 | java反序列化,弱口令 |
4848 | Glassfish控制台 | 弱口令 |
1352 | Lotus domino邮件服务 | 弱口令,信息泄露,爆破 |
10000 | Webmin-web控制面版 | 弱口令 |
4.数据库服务
5.邮件服务
6.网络常见协议
7.其他服务端口
3.端口扫描工具(Nmap)
1)Nmap介绍:
全称:Network Mapper
C语言写的,kali中有内置的nmap
下载:Nmap: the Network Mapper - Free Security Scanner
2)nmap的常用功能
1)扫描同一网段下存活的主机(Host Discovery)
2)扫描端口(Port Scanning)
3)探测操作系统,软件版本(Operating System Detection, Version Detection)
3)查看nmap帮助手册
1.kali中输入nmap --help
nmap --help
2.查看官方提供的手册
Options Summary | Nmap Network Scanning
nmap中内置了很多lua脚本,查看的地址
NSEDoc Reference Portal: NSE Scripts — Nmap Scripting Engine documentation
3.常用参数
简单扫描
nmap -sP ip
指定端口或范围扫描
nmap -p0-65535 ip
探测操作系统
nmap -O ip
只进行主机发现,不进行端口扫描
nmap -sn ip
补充:
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段的其他服务器
4)其他扫描工具
在线扫描
在线端口检测,端口扫描,端口开放检查-online tool-postjson (coolaf.com)
masscan,nbtscan.......