最后防线:Linux主机入侵外连行为检测

主机入侵检测系统系列:这一篇讲述检测外连行为的原理和技术,可统一检测宿主机和docker子机

一台主机入侵后,入侵者往往会把数据发送出去或启动reverse shell。一般在IDC的出口防火墙都会有检测异常外连行为,可能由于中间有NAT,并不一定知道是哪台机器过来,但即使是知道哪台机器过来的,也不知道是该台机器哪个程序发起的外连行为。

通常的操作,都是用netstat命令来获取

[root@bogon-agent test]# netstat -anp4
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:42485         0.0.0.0:*               LISTEN      33041/node          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1640/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1885/master         
tcp        0      0 127.0.0.1:55622         127.0.0.1:42485         ESTABLISHED 25101/sshd: buckxu@ 
tcp        0      0 127.0.0.1:42485         127.0.0.1:50352         ESTABLISHED 33041/node          
tcp        0      0 127.0.0.1:42485         127.0.0.1:55622         ESTABLISHED 25171/node          
tcp        0      0 127.0.0.1:50354         127.0.0.1:42485         ESTABLISHED 128902/sshd: buckxu 
tcp        0      0 192.168.190.129:45782   192.168.190.128:1514    ESTABLISHED 2109/ossec-agentd   
tcp        0      0 127.0.0.1:50352         127.0.0.1:42485         ESTABLISHED 128902/sshd: buckxu 
tcp        0      0 192.168.190.129:22      192.168.190.1:62331     ESTABLISHED 25087/sshd: buckxu  
tcp        0      0 127.0.0.1:42485         127.0.0.1:50354         ESTABLISHED 128969/node         
tcp        0      0 127.0.0.1:42485         127.0.0.1:55620         ESTABLISHED 33041/node          
tcp        0      0 192.168.190.129:22      192.168.190.1:52429     ESTABLISHED 128898/sshd: buckxu 
tcp        0      0 127.0.0.1:55620         127.0.0.1:42485         ESTABLISHED 25101/sshd: buckxu@ 
udp        0      0 0.0.0.0:68              0.0.0.0:*                           103880/dhclient   

但如果放在HIDS(主机入侵检测系统)实现,就不可能调用命令,原因如下:

  1. 有些Linux机器可能没有安装netstat命令

  2. 即使有netstat命令,也可能由于之前的操作,导致netstat运行时依赖的so库缺失或符号缺失,导致无法执行这个命令

  3. netstat命令执行有异常,变成僵尸进程

  4. netstat命令在宿主机是没办法查到docker里的外连行为

按照Unix哲学一切皆文件,像端口和进程信息这些内容都可以从/proc文件系统下找到,所以HIDS是会/proc获取这些信息。

下面拿上面命令结果的2109/node来做例子展示这种手段。

  • 由于一个socket在Linux里是一个fd,先看一下/proc/2109/fd的内容

    [root@bogon-agent ~]# ls -l /proc/2109/fd 
    total 0
    lrwx------. 1 root root 64 Jan  4 18:35 0 -> /dev/null
    lrwx------. 1 root root 64 Jan  4 18:35 1 -> /dev/null
    lrwx------. 1 root root 64 Jan  4 18:35 2 -> /dev/null
    lrwx------. 1 root root 64 Jan  4 18:35 3 -> socket:[26069]
    lr-x------. 1 root root 64 Jan  4 18:35 4 -> /dev/urandom
    lrwx------. 1 root root 64 Jan  4 18:35 5 -> /var/ossec/queue/rids/005
    lrwx------. 1 root root 64 Jan  4 18:35 6 -> /var/ossec/queue/rids/sender_counter
    lrwx------. 1 root root 64 Jan  4 18:35 7 -> socket:[18173675]
    lrwx------. 1 root root 64 Jan  4 18:35 8 -> socket:[2986416]
    
  • 取这一行

    lrwx------. 1 root root 64 Jan  4 18:35 7 -> socket:[18173675]
    

    其中2969198inode。到/proc/2109/net找一下这个inode是在哪个文件有使用

    [root@bogon-agent ~]# grep -rIn "18173675" /proc/2109/net
    /proc/2109/net/tcp:9:   7: 81BEA8C0:B2D6 80BEA8C0:05EA 01 00000000:00000000 00:00000000 00000000   983        0 18173675 1 ffff9259346e3640 20 4 30 10 7     
    

更多内容请关注个人公众号“debugeeker", 链接为最后防线:Linux主机入侵外连行为检测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值