概述

在本文中,我们将主要分析如何绕过过滤器、输入清理和WAF规则,实现PHP的远程代码执行。通常,当我在写这样的文章时,人们总是会问,“真的有人写出这样的代码吗?”并且通常都不是疑问句。在再次被问到这个问题之前,我要抢先回答:“是真的。”

在研究过程中,我们对两个易受攻击的PHP脚本进行了测试。其中,第一个脚本非常简单,并且近乎愚蠢,但它只是为了重现一个远程代码执行漏洞的利用场景:

1.png

显然,第六行存在问题。第三行尝试拦截注入system、exec或passthru之类的函数。在PHP中,有许多其他函数可以执行系统命令,但我们重点关注这三个函数。该脚本在CloudFlare WAF后面的Web服务器中运行。和往常一样,我使用了CloudFlare,因为它非常简单,并且广为人知,并不意味着CloudFlare WAF不安全。其他所有WAF都或多或少会有相同的问题。第二个脚本落后于ModSecurity + OWASP CRS3的安全要求。

尝试读取/etc/passwd

针对第一个脚本,我尝试使用system()函数,通过请求/cfwaf.php?code=system(“cat /etc/passwd”);来读取/etc/passwd。

2.png

如大家所见,CloudFlare会阻止我的请求,可能是由于/etc/passwd。但是,我们有方法能轻松绕过,可以使用类似于cat /etc$u/passwd这样的命令。

3.png

CloudFlare WAF已经被绕过,但其中还存在对用户输入的检查,这阻止了我的请求,因为我正在尝试使用“system”函数。那么不禁要问,是否有一种语法,能让我在不使用“system”字符串的情况下使用系统功能呢?我们来看看PHP官方文档中,有关字符串的内容:https://secure.php.net/manual/en/language.types.string.php

PHP字符串转义序列

\[0–7]{1,3}是八进制表示法的字符序列,可以溢出一个字节。例如:“\400” === “\000”

\x[0–9A-Fa-f]{1,2}是十六进制表示法的字符序列。例如:“\x41"

\u{[0–9A-Fa-f]+}是Unicode代码点(Codepoint)序列,将作为该代码点的UTF-8表示输出到字符串(在PHP 7.0.0版本中加入)。

看来,并不是所有人都知道PHP中有很多用于表示字符串的语法。因此,使用“PHP变量函数”,就成为了我们绕过过滤器和WAF规则的瑞士军刀。

PHP变量函数

PHP支持变量函数的概念。这意味着,如果变量名称附加了括号,PHP将会查找与变量等价的名称相同的函数,并尝试执行。除此之外,这可以用于实现回调、函数表等功能。

这意味着,像var(args);和“string”(args);这样的内容,都等价于function(args);。如果我能够通过使用变量和字符串来调用函数,那么我就可以使用转义序列,而不再是函数的名称。一个例子如下所示:

4.jpeg

其中,第三种语法是十六进制表示法中的字符转义序列,PHP将其转换为字符串“system”,然后使用参数“ls”将其转换为函数system。我们在易受攻击的脚本上进行尝试:

5.png

这种技术不适用于所有的PHP函数,变量函数不适用于类似echo、print、unset()、isset()、empty()、include、require这样的语言结构。利用包装器函数,可以将这些结构中的任何一个作为可变函数。

改进用户输入清理

在易受攻击的脚本中,如果我从用户输入中排除双引号和单引号等字符,那么会发生什么?即使不使用双引号,是否也可以绕过它?我们来进行一下尝试:

6.png

正如我们在第三行所看到的那样,现在脚本将阻止在$_GET[code] querystring参数中使用双引号和单引号。现在,我之前的Payload应该已经被阻止:

7.png

幸运的是,在PHP中,我们并不总是需要引号来表示字符串。PHP中,还存在其他能够声明元素的类型,例如$a = (string)foo;。在这种情况下,$a包含字符串foo。此外,在没有特定类型声明的圆括号中的内容,都将被视为字符串:

8.jpeg

基于此,我们有两种绕过新过滤器的方法:第一种方法是使用类似于(system)(ls);的形式,但我们不能再代码参数中使用“system”,所以我们可以连接字符串,类似于(sy.(st).em)(ls);。第二种方法是使用$_GET变量。如果我发送一个请求,类似于?a=system&b=ls&code=$_GET[a]($_GET[b]);,那么其结果为$_GET[a],就会替换为字符串“system”。同时,$_GET[b]可以被替换为字符串“ls”。这样一来,我就能绕过所有过滤器了!

9.jpeg

让我们试试第一个Payload:

(sy.(st).em)(whoami);

10.png

然后,试试第二个Payload:

?a=system&b=cat+/etc&c=/passwd&code=$_GET[a]($_GET[b].$_GET[c]);

11.png

在示例中,这个技巧可能没有帮助,但我们实际上甚至可以在函数名称和参数内插入注释,这将有助于绕过阻止特定PHP函数名称的WAF规则集。以下所有语法都是有效的:

12.png

get_defined_functions

该PHP函数将返回一个多维数组,其中包含所有已定义函数的列表,包括内置(内部)函数和用户定义的函数。内部函数可以通过$arr[“internal”]访问,用户定义的函数可以通过$arr[“user”]访问。例如:

13.png

这可能是在不使用其名称的前提下,实现system函数的另外一种方法。如果我对“system”进行grep,那么可以发现它的索引号,随后将其用作代码执行的字符串:

14.png

显然,这应该适用于我们的CloudFlare WAF和脚本过滤器:

15.png

字符数组

PHP中,每个字符串都可以用作字符数组(几乎与Python一样),我们可以使用语法$string[2]或$string[-3]来引用字符串中的单个字符。这可能是另一种逃避阻止PHP函数名称的规则的方法。举例来说,使用字符串$a=”elmsty/ “;,我就可以实现语法system(“ls /tmp”);

16.png

如果我们幸运,可以在脚本文件名中找到所需的所有自负。使用相同的技术,我们就可以选择所需的所有字符,类似于(__FILE__)[2]:

17.png

18.png

OWASP CRS3

不得不说,随着OWASP CRS3的发布,我们的绕过工作变得更难。首先,通过之前所描述的技术,我只能绕过第一关。但是,第一关只是我们在CRS3中能找到的规则的冰山一角,并且第一关旨在防止任何类型的误报。由于其中存在942430号规则“受限制的SQL字符异常检测(args):特殊字符数超出限制范围”,我们的绕过就变得非常困难,实际上所有事情都变得非常困难。我能做的,就是执行一个没有“ls”或“whoami”参数的命令。但是,我并不能像对CloudFlare WAF进行的那样,执行类似于system(“cat /etc/passwd”)的命令:

19.png

20.png

推荐阅读

Web应用程序防火墙逃避技术 #1

https://medium.com/secjuice/waf-evasion-techniques-718026d693d8

Web应用程序防火墙逃避技术 #2

https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0

Web应用程序防火墙逃避技术 #3

https://www.secjuice.com/web-application-firewall-waf-evasion/

最近一个Shamoon磁盘擦除恶意软件的新样本从法国上传到了VirusTotal扫描平台。它试图伪装成中国科技公司百度的系统优化工具。

这个新的Shamoon变体于2018年12月23日上传,并使用百度2015年3月25颁发的数字证书进行签名。该签名不再有效,因为它已于2016年3月26日到期。

这个恶意软件背后的威胁行为者攻击的目标通常是中东地区的石油和天然气公司。最新的Shamoon样本攻击了同一地区以及欧洲的公司,删除了受感染系统上的文件并使机器无法启动。

粗浅的混淆策略

分析人员还发现该恶意软件是使用商业加壳工具Enigma Protector的第4版打包的,该工具包于2014年3月发布,一直持续到2015年2月。Enigma Protector目前的版本为6.40。

Anomali Labs的研究显示,有人试图将该恶意软件伪装成合法软件。例如,攻击者定义其内部文件名为“百度PC加速器”,并在其描述中使用“百度WiFi热点设置”的字样。

图片1.png

这些粗浅的修改也在较早的Shamoon样本中观察到,该样本使用UPX加壳并在其文件描述中使用了“VMWare Workstation”字样。

研究人员评估说,这个样本很可能是“根据代码库的第二版编译的”,因为它与2016年和2017年间在针对中东私人组织的攻击中发现的Shamoon v2有许多相似之处。

另一个迹象是存在描绘燃烧美元的图像资源“格兰特”;包含的另一个资源名为“101”,并于本月早些时候在McAfee分析的样本中被发现。之前版本的Shamoon,也被称为Disttrack,包含燃烧的美国国旗和叙利亚难民儿童的图像。

图片2.png

APT33组织可能参与其中

研究人员说,

到目前为止,Anomali实验室尚未证实该样本已被用于在野攻击。然而,之前的Shamoon 2攻击发生在2016年11月和2017年1月下旬。在西方假期期间发生针对性攻击的可能性仍然存在。

Anomali Labs无法确认此样本背后的人员是否与过去袭击石油公司的攻击者相同。然而,这些发现表明,新发现的Shamoon可能是由威胁行为者修改的旧样本,不一定是其原作者。

在上周的博客中,迈克菲表示,在分析了今年看到的三个Shamoon样本后,他们得出的结论是,攻击者可能是被信息安全领域称为APT33的伊朗黑客组织,或者是一个试图看起来像APT33的威胁行为者。

McAfee分享的技术细节新样本揭示了与过去样本的相似之处以及差异。例如,Shamoon v3使用了一种名为Filerase的新擦除器,由Symantec首先发现。

Filerase的目的是删除受感染计算机上的数据,它自身的主启动记录(MBR)擦除机制使计算机无法启动。

该策略可确保即便将存储设备装在新的正常机器上,也无法获取硬盘上的数据。

一、 背景介绍

近日,深信服安全团队捕获到一个新型垃圾邮件,其中包含受密码保护的Word文档,团队中的相关人员对其进行了深入的分析,发现是同样类型的Neutrino最新版本僵尸程序。

二、 样本信息

Neutrino属于Kasidet家族,此次病毒通过伪装成“发票到期”的电子邮件并且带有密码保护的附件进行传播,带有密码保护的电子邮件可能会给人一种安全感。在此深信服提醒广大用户:陌生人发来的陌生文档,邮件不要轻易打开。邮件内容如下:

1.png

图1 邮件内容屏幕截图

2.png

图2 需要输入密码才能打开的Word文档

“Invoice.doc”附件中包含一个宏,如果用户的宏安全设置为低,则文档将自动启动宏。此外,宏受密码保护。面对这种情况,大多数用户都不知道这份文件会在后台做些什么。如下:

3.png

图3 启用宏内容

4.png

图4宏受密码保护

查看宏内容显示它将从hxxp//209.141.59.124/1.exe下载文件,然后保存至%Temp%\qwerty2.exe并启动。宏内容如下:

5.png

图5宏内容

qwerty2.exe主要功能如下:

a) DDOS攻击

b) 信息窃取

c) FTP嗅探

d) 反调试、反虚拟机和反沙箱

e) 文件下载

本次分析涉及的文件信息如下:

3.png

三、 样本分析

1. 样本运行后先执行一段混淆代码,然后通过“MapViewOfFile”将文件进行映射。

6.png

7.png

图6 映射后的代码数据

2. 将映射后的数据进行解密,通过跳转到ZwSetInformationProcess函数将DEP关闭,然后在转入解密后的数据并执行。

8.png

图7 解密后的数据

9.png

10.png

图8 跳转到解密后的代码并执行

3. 获取cpuid信息(包括型号,信息处理器)、操作系统版本、地理位置、网卡配置和IP信息。

11.png

图9 获取cpuid

12.png

图10 获取地理位置

13.png

图11动态加载Getadaptersinfo获取网卡配置和IP

4. 为了防止恶意程序被多次运行Neutrino恶意软件创建互斥体:“{FC502D82-2B78-8E2F-95F0-8FA2992433F6}”。

14.png

图12 创建互斥体

5. 修改文件创建时间、设置文件属性、设置注册表Run启动,确保在受感染的机器上持久存活。

15.png

图13 注册表Run启动

6. 动态加载CreateToolhelp32Snapshot、Module32First、M odule32Next函数遍历进程模块与事先设定好的进程模块进行比较,如果遍历到相同进程模块,则终止执行。

16.png

图14 遍历进程

7. 使用IsDebuggerPresent、CheckRemoteDebuggerPresent判断程序是否正被调试。使用GetTickCount、Sleep、GetTickCount进行单步执行时间检测。使用QueryDosDevices检测虚拟机(比如:VMware),判断是否处于虚拟环境中,使用EnumWindows、GetClassName进行窗口检测。 

17.png

图15 判断程序是否被调试

18.png

图16 窗口名检测

8. 如果程序加载成功,便会加载核心程序,使用CryptStringToBinary API函数解密嵌入的C&C URL将获取的信息以 POST的方式发送到securityupdateserver4.com。这些响应包会以注释形式嵌入到空白html页面中,为避免让用户发觉。捕获的流量包如下:

19.png

图17 捕获到的流量包

总结:

僵尸程序最主要的特点就是可以一对多地执行相同的恶意行为,比如可以同时对某目标网站进行分布式拒绝服务(DDOS)攻击,同时发送大量的垃圾邮件等,而正是这种一对多的控制关系,使得攻击者能够以极低的代价高效地控制大量的资源为其服务。僵尸程序一旦构成了一个攻击平台,便可利用这个平台有效地发起各种各样的攻击行为,可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或个人隐私泄漏,还可以用来从事网络欺诈等其他违法犯罪活动。

四、 相关IOC

Md5:E875E978CCDD5A02AEEFB207F83F7E16

Md5:30B43B2437A5CA665279D4A47A18CE7C

IP:209.141.59.124

域名:securityupdateserver4.com

Url:http//209.141.59.124/1.exe

五、 病毒防御

1. 及时给电脑打补丁,修复漏洞。

2. 陌生人发来的陌生文档,邮件不要轻易打开

3. 对重要的数据文件定期进行非本地备份

4. 建议企业对全网进行一次安全检查和杀毒扫描,加强防护工作。

近年来,国内各大网站逐渐升级为HTTPS加密连接、甚至是全站HTTPS,以防止网站被篡改、劫持或是用户数据被监听等事件的发生,在很大程度上提升了网站的安全性。但即便如此,一向被认为“安全可靠”的HTTPS安全传输协议也无法保证万无一失——如果是在存在有木马的计算机中,HTTPS也可能被轻易劫持!

近期360互联网安全中心监测到一款专门劫持HTTPS的木马再次开始活跃。在2017年,我们就曾曝光过该病毒团伙,在那之后该团伙确实有所收敛,谁知最近他们重出江湖,又开始大肆传播——来自360网络安全研究院的数据显示:HTTPS劫匪木马的主控域名之一erhaojie[.]com,在近期的域名请求次数单日峰值已超过190万次。

dsfsd.png

图1 木马主控域名请求次数波动 

过程分析

劫持木马安装过程和之前版本没有太大区别,依旧主要是以伪装成色情播放器的方式进行推广,部分用户可能会被木马诱骗,关闭安全软件进而中招:

微信截图_20181226115555.png图2 木马通过伪装成色情播放器进行传播 

木马在中招电脑中运行后会进行如下操作:

1.安装kangle web server服务,而该服务则通过请求控制配置和回应控制配置的方式,对主流网站的静态资源域名进行了配置;

2.通过导入证书的方式实现中间人攻击;

3.导入到本地信任的伪造证书签发了大量域名,同时修改电脑上的hosts文件,将这些域名解析到kangle web自身地址上来。

dsdd.png

图3 木马配置的控制规则和被修改的hosts文件 

这次HTTPS劫匪木马与之前不同之处在于更新了其导入的证书,新增了15个域名,签发域名达到48个。

kjkjljl.png

图4 导入证书及证书信息 

木马会通过泛域名(wide_host)匹配规则对系统发起的每条网络访问进行匹配,一旦发现上述域名下的js类型文件,就会在原js文件的尾部插入一条用于劫持的js链接:hxxps://ssl.erhaojie.com/ssl/ba.js

4.png

图4 在Kangle Web后台捕获到的劫持信息 

劫持客户端新闻弹窗

由于近年来各路软件弹出mini新闻窗的套路风靡,木马作者也是新增了对mini窗页面的劫持。多款软件的mini窗均被劫持到带其推广ID的东方头条mini页面:hxxp://hot.eastday.com/mini0**

5.png图5 劫持mini窗部分代码片断

微博账号刷粉

此次木马还增加了微博账号自动加粉的功能。如果木马检测到用户电脑登录了微博,则会自动关注木马内置的两个微博账号。这两个微博的粉丝均已超过7000个(其中一个账号仅发了4条微博),对比发现两个微博的粉丝相近,关注方式也基本一致——也能从侧面印证这两个微博账号很大可能都是通过这种方式添加的粉丝。

一分钟看点:hxxps://weibo.com/p/1005056585391017

看点新闻图:hxxps://weibo.com/p/1005051729979622

图片1.png

图6 通过模拟点击方式关注微博 

劫持京东网页二维码

此外,木马还会将京东网页中原本用于扫描安装京东客户端的二维码篡改为安装其推广软件的二维码!

图片2.png

图7 替换京东APP二维码相关代码片断及替换效果 

其他行为

除上面介绍的两个恶意功能外,木马还能够:

1.在用户访问购物、导航、搜索等网站时,自动添加木马作者的推广ID;

2.在用户访问的网站中插入浮窗广告;

3.替换掉原来网页中的广告内容;

4.在搜索引擎的结果中插入广告。

另外,由于这款木马本身劫持功能做的不够精细,还会造成用户在访问网络时出现各种故障。如腾讯游戏的相关网站被劫持后,验证码输入窗口被跳转到东方头条网站,导致用户无法正常登录WeGame。如下图:

图片3.png

图8 验证码窗口被劫持导致用户无法登陆WeGame 

幕后作者

分析过程中,我们发现这又是一起公司形式制作恶意软件的案例。通过该劫持木马所用到的两个主要云控域名的Whois信息,我们查出:

n 注册者姓名:li**qun

n 注册邮箱:30****[email protected]

n 所属公司:深圳市**信息科技有限公司

rtrtrt.png图9 控制域名Whois相关信息 

而根据其ICP备案信息也显示域名属于深圳某公司:

图片5.png

图10 网站ICP备案信息以及公司股权控制图 

通过支付宝姓名验证也确认该邮箱对应的真实姓名为李*群:

图片6.png

图11 支付宝信息 

从搜索引擎搜索该QQ,能看一些早年作者曾经发过网站备案相关的帖子以及制作过小电影网站的一些信息:

图片8.png

图12 通过搜索找到的一些QQ相关信息 

以上所有相关信息都指向同一主体:

n 姓名:李*群

n 公司1:深圳市**信息科技有限公司

n 公司2:深圳****国际文化传播有限公司

n 手机1:158******69

n 手机2:186******47

n QQ:30****28

n 邮箱1:30****28#qq.com

n 邮箱2:41*****84#qq.com

360互联网安全中心已将相关信息提交主管部门。

结语

HTTPS的普及,很大程度上提升了网站的安全性。但HTTPS并不是万能的,也存在多种劫持和攻击的手段。近期更是有多款木马开始讲攻击目标锁定在HTTPS的站点上。现在绝大部分登录认证、支付过程等涉及用户敏感信息的操作均已使用HTTPS进行通讯,也正因如此,针对HTTPS的劫持攻击对用户的威胁往往更大,用户和厂商也应格外注意此类型攻击。

对于此类木马,360安全专家提醒:正常开启360安全卫士,遇到安全软件报警提示木马病毒的情况,不要冒险添加信任运行,就可以拦截此类木马攻击。

图片9.png

图13 360安全卫士拦截提示窗口

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

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

背景

萌新第一次学习逆向,所以在这里也算总结和记录,如有错误之处还请指出。

分析文件是exe格式,附带一个dll链接文件。要求得到解密后的三个key,exe主程序负责key1的解密,dll文件负责key2和key3的解密。文件可以在链接处下载(链接: https://pan.baidu.com/s/1eS22yH0 密码:wtne)。

使用工具

ida(V6.8,吾爱破解网站下载)静态分析+ollydbg(V1.10,官网下载)动态分析。

运行环境

本人是mac系统,然后安装了虚拟机:vmware+windows xp sp3。

那么,我们进入正题吧。

一、ida静态分析

将程序crackme.exe在ida中打开,可以看到对应的汇编语言。

然后看到左侧列表有个main函数,直接双击,找到汇编程序的main入口处,f2加断点高亮显示:

图片 1.png

此时,可以直接在高亮处按F5反汇编得到对应的C代码:

图片 2.png

代码前面部分就是各种初始化,变量声明之类的,没什么特别。继续往下看,看到”&unk_40FA58″看起来是调用了数据段的某个地址的内容,于是双击看看是什么:

图片 3.png

哟,很明显的字符串,会不会是key1呢?于是输入key1,显示错误。然后继续看看程序中使用这串字符串的位置:

图片 4.png

可以看到,在程序找到字符串之后,接下来就是具体的解密部分,其实可以看到很明显的一句汇编语言:

.text:00401128                 dec     edi

寄存器edi中存储的是加密字符,执行的计算是减一,也可以理解是向前移位的计算。

到这一步,再打开ollydbg进行动态分析,验证自己的猜想。其实直接分析汇编语言也可以得到答案,只不过觉得执行程序得到结果更形象。

二、od动态分析

在之前还是简单地介绍一下od的界面和在之后用到的界面(其实也就是常用的几个界面):

图片 5.png

汇编代码窗口和寄存器窗口是两个常用窗口,一个确定程序运行到了哪一步,一个确定需要的内容在内存的存储位置。

对照在ida找到的main函数,直接右键选择“Go To”跳到main函数位置设置断点(在没有ida静态分析不知道主函数位置的网上有各种方法):

图片 6.png图片 7.png

然后反复调试程序设置合适的断点,可以确定汇编代码的功能并得到计算后的字符串:

图片 8.png

这一段代码很短,可以一步一步调试(F7),然后注意oa右边的寄存器窗口,截图中解释的地址就是根据相应寄存器存储内容确定的。

解密算法执行结束之后到内存地址窗口找到存储解密字符串的位置[00393F68],可以看到一串熟悉的字符串亲切地躺在这里:

图片 9.png

此时不太确定是不是key1,然后到程序上输入:

图片 10.png

YEAH!!第一个key1找到啦!萌新特别开心!

然后一鼓作气,继续解决key2和key3。这个时候有点陷入汇编代码的茫茫大海中,直接在od中使用f7动态调试,没有再对照ida中的代码。本意是想分析一下后面的执行顺序,看看内存的变化。

f7太慢,然后又按f8。结果执行又太快,还没注意到具体解密算法,就看到右下角栈区域出现了一个疑似key的字符串。找到对应的内存位置,上下滚动一下发现有两个字符串:

图片 11.png

然后拿到程序中试试:

图片 12.png

踏破铁鞋无觅处,得来全不费工夫啊!

但是,本着认真学习的态度,我决定再回过头看看解密这两个字符串使用了什么算法。

od使用 alt+f2 重新载入程序。

三、再次分析

记住key2在内存中的写入位置:003B3D78,然后重新载入程序,设置内存写入断点,看看是什么时候在经历了什么步骤之后写入的。结果发现并没有这个位置,有可能是载入动态链接库之后才赋予的地址:

图片 13.png

继续分析c代码,发现忽略了这两个地址引用:

图片 14.png

就按照上一个key的方法再次找到汇编语言中使用这两字符串的地方:

图片 15.png

同理在od中定位到[0040123D]然后继续在od中F8动态调试,找到合适的断点:

图片 16.png

进入key2解密函数,此时已载入动态链接库。再查找内存地址003B3D78,出现了该地址内容。可以看到该内存地址还没有被初始化,在此位置设置内存写入断点(关于设置内存写入断点的细节可以参见链接:http://bbs.pediy.com/thread-187118.htm):

图片 17.png

然后F9执行之后在一行代码停下,可以看到此时key已经开始写入:

图片 18.png

此时再使用f7可以单步执行溯源找到解密算法:

图片 19.png

可得:key2的解密是让字符串与77进行亦或(xor)运算。

同理得到key3的解密算法,key3的内存写入地址是003B3DC0:

图片 20.png

key3的解密是让字符串和0F做与运算然后左移4位。

四、一鼓作气

等等!你以为这样就结束了吗?!别走,快回来!

并没有,让我们再回过头来看看主程序的代码:

图片 21.png

看到这个sub_401000()木有?程序调用了动态库的decode函数对字符串解密得到了key2和key3,也就是v21和v23,v24、v26分别是用户输入的key2和key3。然后它们分别经过sub_401000()函数的洗礼(加密),来看看这个函数到底在干什么:

图片 22.png

没办法,萌新看到这一串C语言就觉得头疼,还是使用oa调试看看吧。这段代码可以当作是再次加密,同时将加密后字符串存入[003929A0]开头的地址中:

图片 23.png

这段代码中,需要理解的就是imul操作符及后面的代码对字符进行的操作。在这里使用了IMUL单操作数的使用方法:

imul AL;

意思就是:

AL=AL*AL;

而后面的IMUL CL意思是:

AL=AL*CL;

综上对单个字符的操作描述为:取字符的十六进制数(寄存器EAX低八位即AL),平方后取低八位结果(存入AL中),用这结果再加上循环次数(CL)的平方得到加密字符存入BL中,再写入内存。

用python语言表示为:

#在寄存器中字符用16进制表示,在这里假设字符a也用16进制表示;

#计数君ECX低八位CL用t表示:

a = int(‘a’, 16);         //计算的时候将a转化为10进制数

a = a * a;                      //自乘得到结果

a = hex(a – (a/255*255));       //取乘法结果的低八位再转化为16进制数

a = a +hex( ‘t*t’);             //然后再与循环次数的平方相加得到最后结果

所以最后的结论就是,将存储在程序中的key2和key3解密并加密得到key22和key33,然后用户输入usr_key2和usr_key3用同样的加密算法加密得到usr_key22和usr_key33。最后比较key22和usr_key22,key33和usr_key33是否相等。

总结

用户输入前程序做了什么:

1. key1向前移一位解密得key11。

程序输入key之后程序做了什么:

1. 输入usr_key1正确之后生成中间dll文件,程序载入两个dll文件;

2. key2与77做XOR运算再加密得key22;

3. key3与0F做AND运算然后左移4位再加密得key33;

4. 用户输入usr_key2,usr_key3;

5. usr_key2加密得usr_key22,usr_key3加密得usr_key33

6. if (key22 == usr_key22 && key33 == usr_key33),you win!

分析结束,撒花撒花~~

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

一、 背景介绍

近日,深信服安全团队在云查记录中捕获到一款高度活跃的病毒,并对其进行了深入分析后确定该病毒为Kasidet家族,此次分析的病毒主要通过窃取系统信息然后连接服务器根据攻击者分发不同的命令执行不同的功能,攻击者可以利用受感染的计算机作为攻击平台实施各种网络攻击,如DDoS攻击、局域网感染、散布蠕虫病毒、窃取机密资料等,其隐秘性、破坏性和威胁程度都远大于单一的网络攻击模式。

二、 样本信息

1.png

该病毒的图标及详细信息,如下:

1.jpg

三、 样本分析

1. 该病毒的核心代码经过加密处理,运行后首先会调用VirtualAlloc申请空间在内存进行PE文件解密,然后再执行到PE文件入口点,如下:

2.png

图1解密后的PE文件

2. 解密后的PE文件分析,调用函数SetUnhandledExceptionFilter设置异常捕获,获取当前进程句柄,提升自身权限为Debug权限,如下:

3.png

图2提升权限

3. 创建互斥体变量“4ZBR19116-NNIF”,为避免程序重复运行,如果存在该变量则退出,如下:

4.png

图3创建互斥体变量

4. 创建文件夹%APPDATA%\4ZBR19116-NNIF\,并将自身重命名为{随机名}.exe复制到该目录下,判断当前用户是否为管理组成员,设置注册表HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,达到开机自启动的目的,复制explorer.exe的创建时间修改为自身文件的创建时间,然后启动进程复制后的文件{随机名}.exe,如下:

5.png

图4复制自身修改文件时间、设置Run启动

5. 创建线程,监视注册表活动状态使应用程序可以接收事件通知指定的注册表项及其子项的更改,如下:

6.png

图5监视注册表

6. 获取系统的安装时间RegId,判断系统的版本号,获取系统安装的杀毒软件信息,扫描获取本地局域网内的IP地址,获取受感染机的安装密钥,动态解密上线地址,发送上线验证数据,等待远控命令。检查%APPDATA%,%TEMP%和%ALLUSERSPROFILE%中的所有可执行文件,代码如下:

7.png

图6获取系统信息、发送上线验证数据

8.png

图7解密后的C&C地址

该病毒对于发送的每一个请求,都会检查其中的验证密钥,建立连接后,发送验证密钥“21232f297a57a5a743894a0e4a801fc3”,等待接收远控指令,如下:

9.png

图8建立连接,发送上线验证数据

7. 调用CreateToolhelp32Snapshot函数遍历系统进程,查找浏览器进程firefox.exe、chrome.exe 、iexplore.exe 、Opera.exe,然后选择对应的浏览器以POST请求的方式发送受感染机的数据,如下:

10.png

图9遍历进程,查找chrome浏览器

11.png

图10 firefox浏览器进行网络通信

12.png

图11 IExplore浏览器进行网络通信

13.png

图12 Opera浏览器进行网络通信

8. 数据以“getcmd=1&uid=%s&os=%s&av=%s&nat=%s&version=%s&serial=%s&quality=%i”字符串的形式进行发送,其中uid表示受感染的计算机guid,os表示操作系统上的数据,av表示已安装的防病毒软件, nat表示本地IP地址信息,version表示安装的版本,quality 是检测到的病毒数量,如下:

14.png

图13 发送字符串的形式

9. 如果连接服务器成功,可接收执行的远控命令,如下:

2.png

接收可执行的远控命令,相关代码如下:

15.png

图14 远控命令部分代码1

16.png

图15 远控命令部分代码2

17.png

图16 远控命令部分代码3

10. 反调试技术分析:

a. 通过IsDebuggerPresent和CheckRemoteDebuggerPresent检查程序是否为调试状态。

b. 通过获取系统用户名及模块用于检查沙箱和虚拟机,受检查的用户名“MALTEST、TEQUILABOOMBOOM、SANDBOX、VIRUS、MALWARE、SAMPLE、VIRUS、SANDBOX”。

c. 通过kernel32.dll检查是否有导出函数”wine_get_unix_file_name”来检测wine软件。

d. 通过注册表来检查VMware虚拟机、VirtualBox虚拟机、QEMU模拟器,相关注册表及值如下:

SOFTWARE\\VMware, Inc.\\VMware Tools
HARDWARE\\DEVICEMAP\\Scsi\\ScsiPort0\\ScsiBus0\\TargetId0\\Logical Unit Id 0 ,值:“Identifier”、“VBOX”。
HARDWARE\\Description\\System,值:“SystemBiosVersion”、“VBOX”
SOFTWARE\\Oracle\\VirtualBox Guest Additions HARDWARE\\Description\\System,值:“VideoBiosVersion”、“VIRTUALBOX”
HARDWARE\\DEVICEMAP\\Scsi\\Scsi Port 0\\Scsi Bus 0\\Target Id 0\\Logical Unit Id 0,值:“Identifier”、“QEMU”
"HARDWARE\\Description\\System,值:“SystemBiosVersion”、“QEMU”

如果其中有一项条件满足,则弹出错误对话框,启动自我删除,退出程序,代码如下:

18.png

图17 反调试、反虚拟机、反沙箱

四、 相关IOC

MD5

原始样本:99F5AD74262E5CD0509D5DCE82262D02

解密后的PE:C6530B4293D79D73D4FF0822A5DB98A8

DNS

nutqss123a10cc.com

nutqss123a2cc.com

nutqss123a3cc.com

nutqss123a4cc.com

nutqss123a5cc.com

nutqss123a6cc.com

nutqss123a9cc.com

nutqss123a1cc.com

nutqss123a11cc.com

nutqss123a12cc.com

nutqss123a13cc.com

URL

http://nutqss123a10cc.com/newfiz5/tasks.php

http://nutqss123a2cc.com/newfiz5/tasks.php

http://nutqss123a3cc.com/newfiz5/tasks.php

http://nutqss123a4cc.com/newfiz5/tasks.php

http://nutqss123a5cc.com/newfiz5/tasks.php

http://nutqss123a6cc.com/newfiz5/tasks.php

http://nutqss123a9cc.com/newfiz5/tasks.php

http://nutqss123a1cc.com/newfiz5/tasks.php

http://nutqss123a11cc.com/newfiz5/tasks.php

http://nutqss123a12cc.com/newfiz5/tasks.php

http://nutqss123a13cc.com/newfiz5/tasks.php

五、 解决方案

病毒防御

1. 及时给电脑打补丁,修复漏洞。

2. 陌生人发来的陌生文档,邮件不要轻易打开

3. 对重要的数据文件定期进行非本地备份

封面图.png

近年来,我国面临的安全形势日趋严峻复杂,信息系统的安全性正在遭受严重冲击和挑战:国家关键信息基础设施的未授权控制,各行业数据存在窃取的风险,个人及企业私有数据被暴露和滥用。

在此趋势下,针对西安区域信息安全行业特点,本次论坛将力邀区域政企、安服公司、高校代表、行业协会代表及有关专家、学者汇聚一堂,围绕信息安全技术创新、大数据安全风险防控等热点议题,与同行交流经验、分享案例、碰撞思维。洞察信息安全最新动态,把握数据安全发展趋势,就当前的区域内数据安全所面临的问题以及解决方案进行深入探讨,促使本市相关产业及信息安全建设保障工作更上一个台阶。

· 论坛时间:2019年1月11日 周五 13:00-17:45

· 论坛地点:西安电子科技大学太白校区报告厅(一区313)

· 论坛地址:太白南路3号,二环南路西段(太白立交西侧);地铁三号线太白南路站(D1口)向北步行700米

· 主办单位:OWASP中国、OWASP中国陕西区域

· 支持单位:陕西省大数据集团、西安四叶草信息技术有限公司

· 协办单位:陕西省信息网络安全协会、陕西省区块链与安全计算重点实验室

· 媒体支持:安全客、嘶吼、安全+

会议内容

演讲主题:从软件供应链安全的维度看待软件安全开发

近年,全球行业对软件供应链安全问题开展广泛研究;而我国也在今年对软件供应链安全特别关注。软件供应链安全的核心问题之一是如何在软件开发过程中保障部件的安全。本议题从管理、技术、人员多个维度,探讨如何利用OWASP全球开源的项目成果,帮助软件供应链上的相关研发企业在软件开发生命周期中尽可能为软件供应链安全提供保障和支持。

演讲嘉宾:王颉

OWASP中国副主席兼成都区域负责人,英国拉夫堡大学网络安全博士,SecZone开源网安创始人之一。自2009年加入OWASP全球安全组以来,先后主持、参与和独立开展了“OWASP Top 10”、“OWASP Mobile Top 10”、“OWASP OpenSAMM”、“OWASP安全编码规范快速参考指南”、 “OWASP Code Review”等数10个OWASP中国分部项目,在行业内积极推广软件安全开发(S-SDLC)的意识普及和技术实践。


演讲主题:大数据全生命周期隐私问题探究

主旨为大数据全生命周期中隐私相关问题探究。重点介绍其在数据存储、数据处理以及数据交换等过程中,面临的隐私与安全风险。从学术角度上,阐述以及分析相应解决方法。

演讲嘉宾:刘雪峰

副教授,硕士生导师,西安电子科技大学网络与信息安全学院。主要从事于数据隐私研究,主持并参与10余项信息安全国家重点研发计划、国家自然科学基金重点项目、国家自然科学基金项目、博士后基金等。第一作者在CCF 推荐A类期刊IEEE TPDS、A类会议IEEE INFOCOM、中科院分区二区期刊IEEE TSC等重要期刊和会议上发表学术论文10余篇。


演讲主题:OWASP AppSec最新工具项目分享

在2018年10月12日结束的OWASP AppSec USA 2018大会中,一些新的OWASP工具类项目在大会上得到了展示。此次会议将把本人对一些最新项目的初步研究以及针对甲方需求切实结合的项目经验进行分享,以此帮助大家更好的了解甲方安全运维。

演讲嘉宾:任博伦

陕西省大数据集团公司信息安全专家,RHCA、CCIE、HCIE、CISP持证人,常年从事甲方安全运维,信息安全体系建设,多次参与ISO27001、等保、ITIL等相关管理体系的评估。


演讲主题:以乙方安全的视角谈数据安全

近年注定是个数据泄漏年,每隔几个月就会爆出千万级甚至亿级数据泄漏事件,似乎在宣告一个事实:数据即金钱!在这个数据可变现为金钱的时代,在黑灰产业链盛行的时代,数据安全的被动防御能力已远远无法应对当前数据窃取或破坏的自动化/半自动化的攻击手段,只有站在攻击者的视角变被动为主动的数据防御理念,并通过不断提高数据安全能力才能有效应对这些黑客攻击。

演讲嘉宾:Xiao 7

95后安全从业者,国内知名信息安全专家,四叶草安全渗透负责人、项目经理,专注于web安全、内网渗透等领域,挖掘过国内众多开源软件的0day,曾负责我省十九大网络安全保障、关键信息基础设施检查,成功渗透过国内知名大型互联网企业,进入多家银行内网,多次为客户先于黑客一步发现问题,保护客户数据,赢得众多客户的一致好评。

前言

今天,给大家介绍的是一款名叫WepAttack的开源工具。这是一款基于Linux平台的开源WEP密钥破解工具,它主要针对的是WLAN无线安全领域,可利用基于字典攻击的方式破解802.11 WEP密钥。

1.png

这款工具基于主动字典攻击,这种攻击方式可以测试数百万条关键词并最终寻找到正确的密钥。在执行这种攻击时,只需要一个数据包即可。

WEP密钥是什么?

WEP是Wired EquivalentPrivacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络。不过密码分析学家已经找出 WEP 好几个弱点,因此在2003年被Wi-Fi Protected Access (WPA) 淘汰,又在2004年由完整的 IEEE 802.11i 标准(又称为 WPA2)所取代。WEP 虽然有些弱点,但也足以吓阻非专业人士的攻击渗透了。

如何使用WepAttack WEP密钥破解工具

WepAttack在执行攻击之前,需要一份dumpfile。如果目标网络数据是采用Kismet捕捉到的话,会自动生成一个dumpfile。这种文件的基础格式为“Kismet-[date]-[no].dump”,WepAttack可以直接对此类文件进行解析。

工具使用:

wepattack-f dumpfile [-m mode] [-w wordlist] [-n network]

-fdumpfile        network dumpfile to readfrom

-mmode                run WepAttack indifferent modes. If this option is empty, all modes are executed sequentially(default)

 

               64              WEP 64, ASCII mapping

 

               128            WEP128, ASCII mapping

 

               n64            WEP64, KEYGEN function

 

               n128          WEP128, KEYGEN function

 

-wwordlist        wordlist to use, withoutany wordlist stdin is used

-nnetwork          network number, can bepassed to attack only one network. Default is attacking all available networks(recommended)

使用样例

wepattack –f Kismet-Oct-21-2002-3.dump –w wordlist.txt

WepAttack工具资源:

WepAttack:【下载地址

官方网站:【传送门

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

安全研究人员之前发现了一个Microsoft Edge浏览器的内存破坏漏洞,近日又发布了漏洞滥用代码PoC。PoC代码会导致未修复的机器上的远程代码执行。

漏洞详情

安全漏洞影响Edge的JavaScript引擎Chakra,攻击者利用该漏洞可以以登陆用户的权限运行任意代码。

Phoenhex团队的安全研究人员Bruno Keith报告称该漏洞对受影响的微软操作系统的影响为critical,受影响为moderate的操作系统只有Windows server2019和2016。

POC代码只有71行,会导致越界(out-of-bounds)内存读泄露,影响其实并不大。但攻击者可以修改POC利用来使用危害更大。

image.png

image.png

image.png

image.png

POC代码51-52行的注释为:

Chakra没有成功插入导致headSegmentsym和headSegmentLength sym重载的值,因此需要用检查的错误值来评估新的缓存。

未修复的系统处于危险中

攻击者利用该漏洞代码的场景非常多,比如完全控制安装程序、查看、修改和删除数据、以管理员权限创建新用户账户等。

Microsoft在12月的公告中称:

在基于web的攻击场景中,攻击者还可以创建一个通过Microsoft Edge浏览器利用该漏洞的web页,然后使用户查看该页面。攻击者还可以用不同的方法来感染用户计算机,包括将漏洞利用代码放在用户可以访问的位置,比如网站和广告。

微软已经在12月的Windows系统更新中解决了该问题。但这并不表示用户受到了保护, 也不能保证是安全的。因为用户端的系统并不一定及时更新,因此研究人员建议用户要及时更新操作系统。

昨天是12月28日,北京的天气特别冷。抢票第一天,动车&卧铺失败,候补一张普快坐票(先保个底)。没想到下午“12306”又出事了。

消息传出

下午朋友圈盛传12306账号泄露,看了下截图,还是暗网的那一个站。想去一探究竟,于是就进去看了看。

数据真实性

首先试了试给出的账号,第一个就登上了12306。阔怕!

由于数据量不大,有人猜测数据不是从12306官网上泄露的,可能是抢票软件泄露的。

12月28日18:01,中国铁路官方辟谣。

溯源

卖家还给出了高清图片示例,用的是新浪图床。好奇的我,有个想法——图片反查。

图片反查,根据图片地址查询图片来源,从而找到发图的人。

百度一下后,发现新浪图床还真可以。V2EX 上好几个帖子讨论,还有人制作了浏览器插件。下面附一个油候脚本。

在Chrome 商店下载了插件,试了试还真能找到图片的来源。

于是我就找到了下面的这个微博账号”xxx酱”。到这里了,我们就不深究了。已经从暗网走到了互联网中,卖家身份败露。

关于隐私的思考

暗网(深网)是匿名的、很难追踪的,但要一丝痕迹不留是很难得。人性存在漏洞,有时候会为了方便而放弃安全,例如密码的强度。这次的卖家就犯了这个错误,为了高清大图,采用新浪图床,导致信息泄露。

这样看来,方便与安全似乎是对立,那又该如何平衡两者呢?

关于暗网追踪的思考

在暗网每个人都有自己的面纱,想要追踪起来很难。首先可以从个人发布的内容追踪,例如是否有姓名、电话号码等信息,或直接与对方交谈(社工)。也可以从侧面追踪,从发布的多媒数据本身进行追踪,例如引用来自传统互联网的数据是否可用来反向定位用户本身,如照片的EXIF 信息、云存储中的反向追踪等。

建议

以上内容属个人推测。未得到官方证实,纯技术分享。温馨提示:春运抢票不可避免,也许会用到第三方的抢票软件。建议为12306 设置一个特定的密码,切忌不能使用个人常用的密码。最好在抢票结束后,修改一次密码。

参考链接

https://github.com/fei-ke/WeiboImageReverse

https://www.v2ex.com/t/388152

*本文作者:四维创智4DOGS,转载请注明来自FreeBuf.COM