| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 基于主机的反弹shell检测思路 -> 正文阅读 |
|
[系统运维]基于主机的反弹shell检测思路 |
前言难免有时候网站会存在命令执行、代码执行等漏洞可能被黑客反弹shell,如何第一时间发现反弹shell特征,kill掉相应进程,保护主机安全呢? 类型一bash反弹 先从最常规的开始举个例子。
原理简单说一下,本地打开bash将标准输出、标准错误输出、标准输入通过socket链接重定向至远程
/dev/tcp|udp/ip/port 可以看作是一个远程设备,所有重定向到该设备的信息 另外至少需要把标准输出流,标准输入流定向至远程,也就是远程输入命令 查看一下进程的文件描述符:
此时我们打开本地再打开一个bash,lsof命令查看一下进程描述符:
补充:为什么每个bash进程都会有0,1,2三个文件描述符? 这是反弹shell最常见的特征,就是bash进程中的输入输出文件描述符被定向到远程socket链接,下面我们看看常见的其他反弹shell方法: python反弹
s.fileno() 查看建立socket链接返回的文件描述符是3 使用duo2方法将第二个形参(文件描述符)指向第一个形参(socket链接) 接下来使用os的subprocess在本地开启一个子进程,启动bash交互模式,标准输入、标准输出、标准错误输出被重定向到了远程
perl反弹
特征与上面基本一致 nc反弹shell
如果执行上面命令提示没有-e 选项,可能因为版本是openbsd,可以手动指定nc.traditional lsof发现与上面的基本相同,这种都是属于同一种类型的,类似的还有:
等等,上面都属于同一种类型,就是直接把bash文件描述符重定向至远程socket链接。 类型二基本例子 下面看一下另一种类型,不同进程之间通过管道相连接,最后通过多次管道定向至bash的输入输出。 随便举个简单例子nc通过管道将远程的输入流定向至/bin/bash
命令的意思是接受来自远程的数据通过管道作为bash的输入
也就是说输入输出中间可能会经历多层管道,但最终一定会定向到远程的socket链接,pipe[387461] 最终还是被重定向至socket链接,中间需要根据id追踪一下管道两边的进程,完整过程如下,贴一张图就不做解释了: 补充:解释一下pipe和fifo在linux里还是有点区别的: nc
mkfifo 命令首先创建了一个管道,cat 将管道里面的内容输出传递给/bin/sh,sh会执行管道里的命令并将标准 补充:?linux管道pipe详解_程序员的成长之路的博客-CSDN博客_linux pipe
telnet反弹shell
与上面的类型,方法基本一样不做赘述。 总结一下第二种类型的反弹shell:0,1,2标准输入输出、错误输出流被指向pipe管道,管道指向到另一个进程会有一个对外的socket链接,中间或许经过多层管道,但最终被定向到的进程必有一个socket链接。 类型三socat反弹shell 可以看作是netcat增强版,Ubuntu下默认不预装
补充:SOCK_DGRAM 是无保障的面向消息的socket,主要用于在网络上发广播信息。 可以看出这种类型与上两种是有区别的bash通过管道与socat进程通信,但是管道并不是重定向的标准输入输出、标准错误输出这三个流而是其他的流,然后在程序内部再将该pipe管道定向到0,1,2这三个文件描述符。 这就是第三种基本类型特征。 类型四 msf生成payload反弹shell 这里以生成python为例,其他例如php等原理上都一样,生成payload受害主机上执行。lsof查看进程描述符的情况。 可以看到python开启了一个远程socket链接,但是没有任何pipe管道指向bash进程,查看msf生成的payload可知只是返回了一个相当于代码执行,并不是真正意义上的交互式shell。 dns_shell&icmp_shell 网上有很多开源的反弹shell的比如: lsof命令查看进程信息: 与上面情况基本一直,必须使用定制化的客户端,相当于代码执行上的一层封装。 总结再往下总结甚至可以列出第五种类型,比如client端接受server端命令,新开一个bash子进程进行命令执行等等,骚操作层出不穷。 从主机防护角度来讲,特征的高覆盖率势必对应着高误报,总要从这之间找到一个平衡点。 但是回过头来仔细想想,从一个黑客的角度出发,是不是会从最简单的反弹shell方法开始尝试,那当他第一步尝试失败的时候我们已经抓到了入侵动机,并及时采取了措施。 其他资料bash反弹shell攻击检测 - micr067 - 博客园 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 1:41:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |