天天看点

一文读懂网络攻击

作者:三正科技

网络攻击是指针对计算机信息系统、基础设施、计算机网络或个人计算机设备的,任何类型的进攻动作。对于计算机和计算机网络来说,破坏、揭露、修改、使软件或服务失去功能、在没有得到授权的情况下偷取或访问任何网络设备的信息,都会被视为网络攻击。攻击与防御是伴生的,而因为防御的被动性,在实际网络世界中攻击总能技高一筹,就像没有绝对安全的锁一样,没有绝对安全的计算机网络。本文力求让非专业人士可以看懂并理解网络攻击的方式、方法,有效提升自己的安全意识,未雨绸缪防范攻击。而网络攻击的技术、方法、程序、技巧等都可以认为是武器、是工具,黑帽子用来犯罪,红帽子则使其成为发现弱点、协助防御、犯罪取证等的利器。

网络攻防的技术发展

1.1 不设防的网络就像木桶装水,并且存在短板,有时候不用人攻击,自己的水(信息)都能主动流出来;有时候稍稍用点技术手段,就可能通过虹吸获取桶中的水(信息)。

一文读懂网络攻击
一文读懂网络攻击
一文读懂网络攻击

1.2 防御者是不会放弃的,最直接的方式就是我把木板壁加高,加到超过水能产生一个大气压的高度(10米),看你还怎么虹吸?攻击者还是有办法的,只要通道已经建立,就可以先放入被控设备一个专用程序,像在这个高高的木桶中放入了一个电机,就可以产生更大的压强把水(信息)输送出去了。

一文读懂网络攻击

1.3 有人会说:这种比喻是不恰当的,你架了一根管子(通道)人家看不到么?这就跟网络的概念相关了,上网的信息是需要合法者正常使用的,事实上有很多这样的合法的管子,我们只是在其中混入了一根而已。这时,新的防御方案就出现了,这就是白名单与黑名单。合法的列入白名单允许访问或交互,或者确定不合法(有前科)的列入黑名单禁止访问与交互。攻击者仍然有办法,我不能直接拿下核心服务器,我可以先从你的合法用户入手,毕竟总有人的防御意识是比较弱的,先拿下一个合法用户,通过它去获取信息,若权限不够就继续进行内网渗透和提权。

一文读懂网络攻击

1.4 第一个弱鸡当然就是我们的肉鸡了,它给我们打开了很多方便之门。一旦有了内网的若干权限,就可以展开网络上的代理人战争了。有时候,对方的网络数据进行加密传输和存储,攻击者还可以采取中间人攻击的方案去破获传输中的加密信息。

一文读懂网络攻击

1.5 攻击与防御都在不停的发展,技术更新速度非常之快。若目标网络的防御措施非常严密,可能就需要祭出社会工程学这个杀手锏武器了。不管技防多么严密,使用者仍然是人,是人就会犯错,是人的操作就有规律可循。在攻击之前,详细了解目标网络的拓扑结构和人员信息,会使攻击工作事半功倍。

三正攻击团队的技术优势

三正科技有限公司网络攻击团队成员均拥有多年的实战经验,时刻跟踪相关技术发展前沿,不断创新攻击技术方法。

2.1 一机一马的木马编写技术,大大降低了木马被群杀的风险。针对特定的杀软更新,及时对木马程序进行监测,若发现有异常,可以用自动生成程序制作新的服务端程序,在目标机器未对杀软升级之前更换木马服务端程序,有效避免目标丢失。

一文读懂网络攻击

2.2 木马模块化编写与即时上传、执行、销毁技术有效保证了代码安全性。木马在潜伏存活状态下,仅有加解密模块和通信模块驻留在目标机器上,当需要进行文件管理、键盘记录、屏幕监控等操作时,才上传相关模块并执行,任务完成后即在目标机器上销毁相关模块,不留痕迹。

一文读懂网络攻击
一文读懂网络攻击

2.3 拥有针对专用软件的0day漏洞挖掘能力和针对系统及常用软件的1day漏洞快速响应能力。

2.4 拥有强大的网情分析团队和拓扑分析团队,针对特定目标网络可以快速完成社会工程学方面的信息搜集、甄别,发现其网络拓扑结构中的薄弱环节,制定最有效的攻击路径和方案。

漫谈攻击代码实现与免杀(撸代码)

程序是由程序员编写的,C语言是攻击者最常用的编程语言。下面我们就用C语言来描述一些功能实现与免杀技巧。

3.1 远程进程注入

为了保护木马主驻留程序,一般情况下,涉及比较敏感的操作会让系统进程来完成,这样杀毒软件也只是发现系统进程在干敏感的事情(咱不能暴露自己呀)。

远程注入的一般流程是用OpenProcess打开远程进程,用VirtualAllocEx在远程进程中开辟一小段空间,用WriteProcessMemory把要执行的线程Dll全路径写入开辟的地址空间,最后用CreateRemoteThread创建并执行远程线程。这样就完成了一个经典的远程注入过程。

一文读懂网络攻击

我们从代码中可以发现,这还是存在一个动态库文件的,如果它执行了敏感操作,防御软件可以追杀到这个动态库文件,怎么办呢?shellcode!事实上,CreateRemoteThread函数就是去执行了第四个参数(或者说是指针)的首地址,若把功能模块写成shellcode(尽量小一些),在调用WriteProcessMemory的时候不是写入dll的路径,而是直接写入shellcode代码,最后在调用CreateRemoteThread的时候第四个参数直接用这个地址,第五个参数设为NULL,就可以成功执行这一段shellcode功能模块了。

3.2 shellcode与数据执行保护

提到了shellcode,就不得不说一说数据执行保护的问题。一般情况下,程序中的shellcode都是以数据的形式存在的,若系统的安全级别设置为高级,它极有可能执行不了,攻击者必须绕过数据执行保护。

一文读懂网络攻击
一文读懂网络攻击

当然,我们也可以在汇编代码中预留大段的0x90(nop)用于后续插入shellcode代码并执行。

防御者的行为查杀对常规木马、漏洞利用等程序产生了很大的威胁,很多杀软对诸如注册表访问、服务增加或修改、驱动增加或修改、键盘消息HOOK、屏幕截取等行为中的多个同时存在的程序直接判定为高风险。这时候攻击者就要分析杀软是如何来判定这些行为存在的,不同的杀软方式不同。有的是采用沙盒进行试运行,有的是把程序上传进行云分析,有的是对程序中解析出来的所有API函数调用进行匹配。针对不同的沙盒,攻击者可以采用获取系统信息的方式进行沙盒判定,发现运行环境为沙盒时跳转执行其它常规操作即可规避;针对上传云分析,一般来说增加程序体积就比较有效;针对API解析,一般可以用简单HASH定位的方式直接去调用相关API,而不是用系统提供的调用方式即可规避。

继续阅读