信息收集:
被动收集
指利用第三方的服务对目标进行访问了解,如Google搜索
目的:通过公开渠道,去获得目标主机的信息,从而不与目标系统直接交互,避免留下痕迹
信息收集内容: 用途:
1.IP地址段 信息描述目标
2.域名信息 发现目标
3.邮件信息 社工
4. 文档图片数据 物理缺口
5.公司地址
6.公司组织架构
7.联系电话/传真号码
8.人员姓名/职务
9.目标系统使用的技术架构
10.公开的商业信息
信息收集DNS:
DNS服务器概述:运行DNS服务器的计算机,储存DNS数据库信息。分为根域DNS服务器(存储了全部的顶级服务器的所在地址),顶级域名DNS服务器(存储了每位客户所注册的主机地址)。
域名记录:A,Cname,NS,MX,PTR
A记录(address)正向解析:
A记录是将一个主机名和一个iP关联一起。是大多数客户端默认的查询类型,如 xuegod.cn -> 8.8.8.6
PTR记录(Pointer)反向解析:
PTR记录将一个IP地址对应到主机名。这些记录都保持在in-addr.arpa
CNAME记录别名
别名记录(规范名字),这种记录允许您将多个名字映射到同一台计算机。如:www.xue.cn对应IP8.8.8.6, www.god.cn对应IP8.8.8.6
MX记录
MX是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。如:mail.xuegod.cn
当有多个MX记录时,需要设置数值来确定其优先级。通过优先级来指明服务器的选用顺序
NS记录
是域名服务器记录(授权服务器),用来指定该域名有哪个DNS服务器来解析,如:dns.xue.cn
DNS缓存服务器:缓存DNS服务器:不负责解析域,只是缓存域名解析结果
Maltego信息收集:多功能,可自动搜寻DNS服务器
Shodan信息收集:更隐藏,可以通过ip进行探测,多种搜索方式(端口:3389——windows、9200——日志)
Google搜索引擎:常用语法:
Site——指定域名 inurl ——URL中存在的关键字页面
Intext——网页内容里面的关键字 filetype——指定文件类型
Intitle——网页标题中的关键字 link——返回你所有的指定域名链接
Info——查找指定站点信息 cache——搜索Google里的内容缓存
Google可以将网页中的代码、账号等进行搜索
Site:域名
Inurl:qq.txt——限定在url中的内容admin.php(找后台)
Intitle:index.of xxx——搜索敏感信息文件,寻找使用过的命令(index.of——索引文件)
Cache返回结果是被搜索引擎收录的页面
主动信息收集:
通过直接访问、扫描网站,这种将流量经网站的行为,如nmap扫描端口
主动信息收集:直接与目标系统交互通信,会留下访问的痕迹,对于如何避免访问痕迹,使用受控的第三方电脑进行探测,使用代理或已经被控制的机器,做好被封杀的处理(因为目标机也会存在一些防护措施如:防火墙之类),扫描发送不同的探测,根据返回结果判断目标状态。
发现目标主机的过程:
- 识别存活主机,发现潜在的被攻击目标;
- 输出一个IP地址列表(IP地址段/IP地址范围)
- 使用二、三、四层进行探测发现(利用协议)
二层(数据链路层)扫描优缺点:
优点:扫描速度快、可靠;
缺点:不可路由
三层(网络层)扫描的:
优点:可路由,速度较快;
缺点:速度比二层慢,经常被边界防火墙过滤
使用IP、icmp协议
四层(传输层)扫描的优缺点:
优点:可路由且结果可靠
不太可能被防火墙过滤
可以发现所有端口都被过滤的主机
缺点:基于状态过滤的防火墙可能过滤扫描
全端口扫描速度慢
Ping命令:
判断主机之间的网络是否接通
Traceroute命令:
可以对路由进行跟踪,可以知道中间经过了哪些网络设备
ARPing命令:
计算机通过ARP协议将IP地址转换成MAC地址,将局域网里的32位IP地址转换为对应的48位物理地址,即网卡MAC地址,便于顺畅通信。
可以查看局域网中的IP是否冲突
arping 10.0.0.2 -c 1 | grep "bytes from"——通过关键字查询筛选出对应的信息
arping 10.0.0.2 -c 1 | grep "bytes from" | cut -d " " -f 5——进一步筛选,将IP直接截选出来
因此使用相对的脚本文件arping1.sh,可以查找所有的IP,若有一样的,说明冲突,这时就是被ARP攻击
Netdiscover命令
进行被动方式探测局域中存活的机器,是一个主被动的ARP侦查工具,使用netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送是ARP请求
主动模式:容易被发现netdiscover -i eth0 -r 10.0.0.0/24
被动模式:速度较慢,网卡将设为混杂模式来侦听网络内的arp数据包进行被动式侦测,需要网络内设备发送arp包才能被侦测
HPING3:
Hping3是一个命令行下使用TCP/IP数据包组装/分析工具,通常web服务会用来做压力测试和DOS攻击,hping也是每次只扫描一个目标。
hping3 -c 1000 -d 120 -S -w 64
发送数据包数 大小(字节) SYN数据包 TCP窗口大小(64字节,用来控制流量)
-p 80 --flood --rand-source www.baidu.com
执行端口 尽快发送(不考虑是否回复) 使用随机性的源
FPING命令
是ping的加强,可以对IP段进行扫描 fping 10.0.0.131 -c 1
基于Nmap扫描方式:
nmap -sn 10.0.0.0/24——嗅探发现存活的主机,sn指:只ping扫描,不进行端口扫描
Nmap扫描主要有TCP的全连接扫描(会在被扫描机器里留下记录,完成了TCP/IP三次握手),半连接(不会留下记录,完成TCP/IP前两次握手)
nmap -sS 101.200.128.35 -p 80,81,21,25,110,443——半连接扫描
Nc扫描:
扫描端口,实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听的指定端口;可以作为client发起TCP或UDP连接;机器之间传输文件;机器之间网络测速
-nv:表示扫描的目标是IP;
-w:表示超时时间;
-z:表示进行端口扫描
nc -nv -w 1 -z 192.168.1.1 1-100
Scapy
是一个可以让用户发送、侦听和解析并伪装网络报文的python程序。
Sacpy制定ARP协议
ARP().display()来查看ARP函数的用法
hwtype = Ethernet (10Mb) 硬件类型
ptype = IPv4 协议类型
hwlen = None 硬件地址长度(MAC)
plen = None 协议地址长度(IP)
op = who-has who-has查询
hwsrc = 00:0c:29:1e:df:6b 源MAC地址
psrc = 10.0.0.131 源IP地址
hwdst = 00:00:00:00:00:00 目标的MAC地址
pdst = 0.0.0.0 向谁发送查询请求
定义网关发送arp请求的数据包:
sr1(ARP(pdst="10.0.0.2"))
ICMP
ICMP().display()
type = echo-request 数据包类型
code = 0 代码
chksum = None 校验
id = 0x0
seq = 0x0
unused = ''
IP
IP().display()
version = 4 版本IPv4
ihl = None 首部长度
tos = 0x0 服务
len = None 总长度
id = 1 标识
flags = 标志
frag = 0 偏移
ttl = 64 生存时间
proto = hopopt 传输控制协议 IPv6逐跳选项
chksum = None 首部校验和
src = 127.0.0.1 源地址
dst = 127.0.0.1 目的地址
\options \
IP()生成ping包的源IP和目标IP,ICMP()生ping包的类型。使用IP()和ICMP()两个数,可以生成ping包,进行探测。
Scapy制定ping包
- 修改IP包的dst(目的地址)
- 拼接ICMP(默认就是回应包)
- 使用sr1()进行发送数据包并接受数据包
sr1(IP(dst="10.0.0.2")/ICMP(),timeout=1)
Scapy定制SYN请求
TCP().display()
###[ TCP ]###
sport = ftp_data TCP源端口
dport = http TCP目的端口
seq = 0 32位序号
ack = 0 32位确认号
dataofs = None 4位首部长度
reserved = 0 保留6位
flags = S 标志域,按照顺序排列:URG、ACK、PSH、RST、SYN、FIN
window = 8192 窗口大小
chksum = None 16位校验和
urgptr = 0 优先指针
options = '' 选项
sr1(IP(dst="10.0.0.2")/TCP(flags="S",dport=80),timeout=1)——这样的形式是半链接扫描,更隐蔽
僵尸扫描:
僵尸主机:是指感染僵尸程序病毒,从而被黑客程序控制的计算机设备。在僵尸扫描中的僵尸主机是指一个闲置的操作系统(指主机不会主动和任何人通信),且此系统中的IP数据包中的ID(IPID)是递增的。
条件:
- 目标网络可伪造源地址进行访问;
- 选择僵尸机,是闲置的,且需要IPID不断递增(XP系统)
原理:
端口开放状态扫描原理:
端口关闭状态扫描原理
向僵尸主机发送SYN/ACK数据包,将返回的数据包存入rz1
Rz1=sr1(IP(dst=”10.0.0.134”)/TCP(dport=445,flags=”SA”))
Rz1.display()——查看IPID变量内容
攻击者修改IP的src字段,伪装成僵尸主机给目标主机发SYN请求
Rt=sr1(IP(src=”10.0.0.134”,dst=”10.0.0.135”)/TCP(dport=22),timeout=1)
na
攻击者再次向僵尸主机发送SYN/ACK数据包,获得IPID
Rz2=sr1(IP(dst=”10.0.0.134”)/TCP(dport=445,flag=”SA”))
用nmap扫描进行僵尸扫描
nmap 10.0.0.0/24 -p1-1024 --script=ipidseq.nse——查询10.0.0.0的网络字段中可用的僵尸主机
nmap 10.0.0.131 -sI 10.0.0.2 -p1-100——查询该IP中开放的端口
Wireshark抓包:
是一个网络封包分析软件。使用WinPCAP作为接口,直接与网卡进行数据报文交换。
技巧:
- 要确定好wireshark的物理位置(核心网络区:一般是在出口,因为可以收到内网和外网的数据)。
- 选择捕获接口(一般选择internet网络接口)
- 使用捕获过滤器
- 使用显示过滤器,使过滤的数据包更细致
- 调色,划重点
- 构建图表
- 重组数据:传输较大的图片或文件,需要将信息分布在多个数据包(分组),这时需要使用重组数据抓取完整的数据
混杂模式:接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。
普通模式:只接收发给本机传递给上级,其他丢弃
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,所以用UDP会使DNS服务器负载更低,响应更快
捕获筛选器:
筛选源地址为10.0.0.131:ip.src_host == 10.0.0.131
筛选源地址为10.0.0.131或(and 是和)目的地址为10.0.0.2:
ip.src_host == 10.0.0.131 or ip.dst_host == 10.0.0.2
筛选地址为10.0.0.131:ip.addr== 10.0.0.131——不管是源地址还是目的地址
分析arp数据包实战:
Nmap -sn 10.0.0.2 ——只对端口进行扫描
从而在wireshark里可以抓到arp的数据包
分析ICMP协议实战:
用ping即可产生ICMP包
分析TCP协议实战:
用kali开启ssh:systemctl restart ssh
systemctl enable ssh
通过xshell连接就能获得TCP协议数据包
分析http协议:
curl -i baidu.com——是一个命令下工作的文件传输工具,-i是仅返回头部信息
当上不了网,用wireshark进行解决:
服务器被黑,ping可通网关,但是上不了网。
模拟场景:
修改主机TTL为1,echo “1” > /proc/sys/net/ipv4/ip_default_ttl
补充:TTL——数据报文的生存周期:默认linux是64,每经过一个路由节点,-1,当为0时,说明目的地址不可达:time to live exceeded。
Mtr检查网络连接时的网络过程中的设备的质量。
NMAP使用技巧和漏洞扫描发现
Nmap:是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取目标主机正在运行以及提供什么服务等信息,还可以探测操作系统类型。
检测活在网络上的主机;检测主机上开放的端口;检测到相应的端口的软件和版本;
检测操作系统,硬件地址,以及软件版本;检测脚本和脆弱性的漏洞
Nmap端口状态解析:
用于确定目标主机的TCP/UDP端口的开放情况:
open:应用程序在该端口接收TCP/UDP连接;
Closed:对关闭的端口进行nmap访问,接收nmap探测报文并作出响应,但没有应用程序在其上监听
filtered:包被过滤阻止探测报文到达端口,无法确定该端口是否开放,过滤可以来自专业的防火墙等;
Unfiltered:未被过滤并到达端口可访问,也无法确定端口是否开放。只有用于映射防火墙规则集的ACK扫描才可将端口分类到这个状态;
Open|filtered:无法确定端口是开放还是被过滤(如:开放的端口不响应),不响应意味着报文过滤器丢弃报文或者引发的任何反应(UDP、IP协议、FIN、NULL等扫描时会引起)
Close|filtered:无法确定端口是关闭还是被过滤
语法:
Nmap[scan type(s)][Options]
- 使用nmap扫描一台服务器(默认情况,nmap会扫描1000个最有可能开放的TCP端口)
nmap 10.0.0.131
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-27 14:30 CST
Nmap scan report for 10.0.0.131 (10.0.0.131)
Host is up (0.0000030s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
- 扫描一台机器,查看它打开的端口及详细信息(-v)。
nmap -v 10.0.0.131
- 全端口扫描(-p:指定地址),范围是1~65535
nmap -p 1-65535 10.0.0.2
Nmap 10.0.0.2/16
关闭服务:A.认识的服务;systemctl stop xxx(服务名)
B.不认识的情况
lsof -i :num(端口号)
Ps aux | grep 2085——查看进程,若进程里有不属于自己的文件在运行说明已被攻击
Which XXX——查看自己文件位置(确定进程里文件是不是自己的)
Kill -9 2085——杀死进程
- 扫描机器,查看此服务器的开放端口和操作系统类型
nmap -sS -O www.baidu.com——-sS:半连接扫描;-O:查看操作系统
- 扫描一个网段中所有机器是什么类型的操作系统
nmap -sS -O 10.0.0.2/24
- 查找开启80端口的服务器。
nmap -v -p 80 10.0.0.131-151
- 如何隐蔽扫描(过于频繁扫描,会被发现)
--randomize-hosts ——随机扫描,对目标主机的顺序随机划分;
--scan-delay ——延时扫描,单位秒,调整探针之间的延迟
nmap -v --randomize-hosts --scan-delay 3000ms -p 80 10.0.0.131-151
- 使用通配符指定IP地址:
nmap -v --randomize-hosts --scan-delay 3000ms -p 80 10.*.0.131-151——*:1-255
图形化界面的zenmap
DNMAP分布式集群执行大量扫描
Dnmap,用python写的进行分布式扫描的nmap扫描框架,采用C/S架构,进行大规模的网络扫描。
用户在服务器里设定好nmap执行的命令,dnmap会自动分配给客户端进行扫描,并将扫描结果提交给服务器。Dnmap有两个可执行文件,分别是dnmap_client和dnmap_server。在进行分布式nmap扫描前,可以用dnmap_server来生成一个dnmap的服务器,然后在其他机器用dnmap_client进行连接,之后就进行分布式的nmap扫描。
因为dnmap自带的用于TLS连接的pem文件证书太旧了,必须要重新生成一个pem证书客户端和服务器才可正常连接
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out server.pem
cat key.pem >> server.pem
创建Nmap命令文件
启动dnmap集群:
端口号46001
使用dnmap_server启动dnmap的服务端:-f:跟一个待会要执行的nmap命令的文件;
-P:跟一个用于TLS连接的pem文件,默认是使dnmap.pem
/usr/bin/dnmap_server -f nmap.txt -P server.pem
other: Ssh root@10.0.0.131
/usr/bin/dnmap_client -s 10.0.0.131
NESSUS漏洞检测
启动命令:/bin/systemctl start nessusd.service
使用nessus对windows进行扫描
扫描wed
若遇到网络用不了ping不通,connect不了,用:sudo dhclient eth0;
ifconfig eth0;
简单的查看CVE_2020_2551漏洞——远程操控漏洞
1.收集目标信息
得ip——进行端口扫描:
端口扫描是发现目标主机开放的端口及其对应开放的服务,攻击者可以通过发现及利用服务所存在的漏洞,入侵目标主机。
在windows里使用netstat -ano可以看到当前的逻辑端口
开放端口:listen、established。。。。
物理端口:就是路由器网线连接的端口等
每一个端口对应一个服务,通过端口找到服务,对服务进行攻击。
对于win7 ip为10.0.0.148,进行端口扫描:
使用nmap进行扫描:
使用可视化的zenmap
再使用railgun进行更详细的端口扫描(可以知道它端口的服务,更直观的查看)
7001端口:weblogic——反序化漏洞
这个属于7001端口漏洞标志性的界面。
使用反序化的工具查找:192.168.81.200:7001
3389端口:远程桌面连接
因此利用weblogic漏洞使用3389端口进行远程连接,这样就可以操控对方主机和获取权限。
深度利用:
Getshell
Webshell:以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以称为一种网页后门。
在入侵网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,以达到控制网站服务器的目的。