28 02 2020

> 1应用程序黑客攻击技术

消息钩取
• 消息钩取要使用user32.dll中的SetWindowsHookExA()方法。 Windows通过钩链(Hook Chain)处理来自键盘、鼠标等设备的消息。

• 钩链是用于处理消息的一系列函数指针的列表。程序员可以将特 定处理进程的指针强行注册到钩链,这样消息到来时即可对其进 行特定处理。

• 键盘记录器是最具代表性的黑客攻击技术,它采用消息钩取方式, 在中间窃取用户的键盘输入消息,然后将之发送给黑客。

API钩取
• API钩取技术利用了操作系统提供的调试进程。
• 首先使用调试器,在应用程序特定的命令位置设置断点,注册特 定方法以便执行。
• 接着应用程序运行过程中,遇到断点就会执行之前注册的方法(回 调方法),黑客只要在回调方法中植入黑客攻击代码即可执行相应 动作。
• 比如向记事本进行的WriteFile()设置断点,用户点击保存菜单时 就会调用并执行回调方法。如果黑客在回调方法中插入修改字符 的代码,那么将导致最终保存的文本内容与用户输入的内容不一 致。

DLL注入
• DLL注入技术可以将动态链接库DLL插入特定应用程序。
• 方法1:使用注册表 • 具体做法是先在注册表特定位置输入指定的DLL名称,应用程序调用 user32.dll时,指定DLL就会被加载到内存。
• 方法2:钩取函数 • 前面有所介绍。注册钩取函数,以便特定事件发生时加载指定DLL。 • 方法3:远程线程 • 为运行中的应用程序创建远程线程以插入DLL • Windows系统中,CreateRemoteThread()函数用于创建远程线程。

代码注入
• 代码注入技术与采用线程方式的DLL注入技术类似,不同之处在 于,它插入的不是DLL,而是可以直接运行的ShellCode。
• 代码注入的优点是不需要事先将DLL保存到系统的特定位置,并 且执行速度快,不易被觉察。
• 但不足之处在于,ShellCode自身特点决定了无法向其插入复杂 的黑客攻击代码。

> 2Web黑客攻击技术

• Owas 10

> 3网络黑客攻击

• TCP/IP本质上并不具有防范黑客攻击的强大能力,在连接设置与 通信过程中有很多问题。 • 第一,客户端初次尝试连接服务器时,会向服务器发送SYN包, 服务器将为连接分配缓冲资源。若客户端不断向服务器发送SYN 包,则服务器就会不断分配通信缓冲,缓冲全部耗尽后,网络进 入瘫痪状态。
• 第二,正常的通信连接结束后,黑客可以伪装成客户机轻松拦截 通信会话。一般使用TCP头中的序列号对通信对方进行认证,第 三方可以轻松得到该序列号,并伪装相应客户机。 • 第三,IP头中的源IP信息很容易伪造。将源IP伪造为攻击方系统 的IP而非客户机PC的IP,并向服务器发送SYN 包,服务器就会 将ACK包发送给攻击方系统,从而实现DoS攻击。

端口扫描
• IP是识别服务器的逻辑地址。端口是逻辑单位,它使得多个应用 程序可以共享一个IP地址。IP是IP协议的识别符,而端口是 TCP/UDP协议中的识别符。
• 为了对外提供网络服务,防火墙或服务器会主动的对外开放一些 端口,其中最具代表性的端口为80与443,分别用于对外提供 HTTP与HTTPS服务。
• 此外,还开放了一些端口,以方便管理,其中最具代表性的是21 号与23号端口,它们分别提供FTP与Telnet服务。
• 这些对外提供服务而开放的端口成为黑客攻击的目标

包嗅探
• 基于以太网的同一网络环境(使用同一交换机)中,数据包的传送 是基于MAC(Media Access Control)地址进行的。一台PC向另外 一台PC传送数据时,会将数据广播到同网段的所有PC。所有接 收到数据包的PC将自身MAC地址与数据包的目的MAC地址进行 比较,若两者一致,则接收并处理,否则丢弃。
• 借助包嗅探技术,PC会接收并处理所有数据包。这样,同一网络 中传播的所有数据可尽收眼底,一目了然。

会话劫持
• 会话劫持(Session Hijacking)攻击大致分为HTTP会话劫持与TCP会话劫 持两类。前者是之通过盗取保存服务认真信息的Cookie中的SessionID值 进行黑客攻击,后者是指盗取TCP数据包信息。
• 此处以网络黑客攻击中常用的TCP会话劫持为中心进行讲解。
• TCP协议使用IP、Port、Sequence Number三个要素对通信对方进行认 证。
• TCP会话劫持中,先通过包嗅探获取认证信息,然后使用它在中间拦截 客户机与服务器之间的通信。黑客暂时断开客户机与服务器之间的连接, 将发送方IP修改为黑客PC的IP,重设与服务器的连接。在服务器看来, 通信只是暂时发生了中断,然后再次成功连接,从而将黑客PC误认为客 户机。客户机与黑客PC也采用类似方式设置连接。这样,客户机与服务 器之间的所有通信都会经过黑客PC,黑客即可控制所有信息。

欺骗攻击
• Spoofing的字典释义为欺骗、哄骗。从网络观点看,大致可以对 DNS、IP、ARP三种资源进行欺骗攻击。
• 以ARP为例,ARP协议用于根据IP地质获取MAC地址。PC内部 有ARP缓存表,保存IP与MAC的对应信息。识别通信对方时,只 要访问相应表提取其MAC地址即可。若在ARP缓存表中查不到相 应信息,则可以通过ARP协议获取指定IP地址对应的MAC地址。 • 由于ARP协议在设计时未充分考虑安全问题,所以很容易受到攻 击。只要使用ARP Reply包即可轻松操作对方的ARP缓存表。 ARP缓存表保存着通信对方的IP与MAC地址映射关系。黑客将 PC A与PC B对应的信息替换为自身PC的MAC地址后,所有通信 都会经过黑客PC

DoS攻击
• 拒绝服务攻击(DoS,Denial of Service)是网络中最常见的黑 客攻击技术之一。DoS攻击指通过发送大量正常的数据包使系统 服务瘫痪。
• 目前,出现了许多防范DoS攻击的设备,使用少数几台PC发动 DoS攻击使目标系统服务瘫痪并非易事。
• 为了解决这一问题,黑客广泛散播病毒,将大量的PC机变为僵尸 PC,通过控制这些僵尸PC发送大量合法服务请求,以达到使目 标主机服务瘫痪的目的,这种攻击称之为“分布式拒绝服务攻击” (DDoS,Distributed Denial of Service)

• 僵尸网络是指借助网络广泛传播含有恶意代码的文件(僵尸程 序),感染网络上大量PC并将其变为僵尸PC,然后通过C&C服 务器控制这些僵尸PC,最后组成庞大的网络。
• 恶意代码可以通过电子邮件、公告栏、木马等多种方式进行传播, 而对此进行实际防范并非易事。
• 目前通过僵尸网络发送DDoS攻击仍然是非常有用的黑客手段。 为了防范DDoS攻击,国家机关与金融机构大力推行网络隔离, 将业务网与互联网隔离。
• 网络隔离技术中,物理或逻辑网络被隔离,这样减少恶意代码扩 散的范围。

> 4系统黑客攻击

• 计算机系统由硬件、操作系统、进程组成,各组成部分通过接口 相互交换信息、有机协作,共同完成某项任务或功能。
• 为了对外提供多样化的功能,计算机系统的结构都比较复杂,其 内部自然会存在漏洞。随着系统的不断升级、改进,大量漏洞得 到修补,但黑客们一直在研究各种攻击方法。
• 系统黑客攻击是指利用计算机系统结构与功能非法盗取敏感信息, 或者诱使计算机执行意想不到的功能。
• 若想理解系统黑客攻击,必须先理解计算机结构与操作系统。

Rootkit
• Rootkit是一种特殊的黑客攻击程序,其功能是获取目标主机的 root权限,或者安装可以控制系统的后门。
• 它具有很强的隐蔽性,不易被杀毒软件发现。
• Rootkit有用户模式、内核模式、引导模式三种类型。 • 用户模式在应用程序级别工作,比较容易测出,对系统危害较低。
• 内核模式下会向内核添加其他代码,或者直接用新代码替换原有 代码。开发虽然有难度,但能够对系统造成致命危害。
• 引导模式对MBR(Master Boot Record,主引导记录)、VBR (Volume Boot Record,卷引导记录)、引导扇区产生影响,能 够对整个文件系统加密,或者使系统陷入无法引导的困境

后门
• 后门是指可以远程控制用户PC的程序。
• 黑客可以通过公告栏、电子邮件、木马等传播含有后门的恶意代 码。用户无意中将恶意代码下载到PC后,后门客户端就会被安装 到用户系统。黑客运行后门服务器程序,等待客户端连接。后门 客户端安装好后连接到服务器,这样黑客即可远程控制用户PC。

注册表攻击
• Windows中使用的注册表是一种数据库,它采用“键,值”的形式 保存硬件信息、软件信息、用户信息,以及行为控制所需的各种 信息 。
• 为了控制注册表,Windows通过接口支持与CRUD(Create Read Update Delete)相关的所有功能。
• 入侵系统的黑客可以通过接口操作注册表,尝试初始化用户密码、 修改防火墙设置、DLL注入等多种攻击。注册表也保存着用户使 用网络信息,通过这些信息,黑客也可以获知用户的生活方式。
缓冲区溢出
• 缓冲区溢出攻击指通过向进程输入非正常数据,将黑客精心准备 的数据保存到内存,并使之运行。
• 进程运行时,处理流相应的数据会进入其所用的内存区域,如栈、 堆以及寄存器。修改此类数据后,进程的处理顺序就会改变或停 止运行。黑客通过不断修改输入值,观察哪些数据会引发错误, 以及在输入值的哪一部分植入ShellCode可以运行,最终编写攻 击代码。
• 缓冲区溢出攻击代码不是独立运行的程序,它是随视频、音乐、 文档一起运行的程序文件。
• 假设要对视频播放器发起缓冲区溢出攻击。首先,黑客将含有错 误代码的视频发布到网络,用户下载该视频后,在播放器中将其 打开的瞬间,其内部含有的ShellCode会使内存陷入异常,从而 得以运行。

竞态条件攻击
• 静态条件是指两个进程为了使用一种资源而彼此竞争的状况。
• 比如写文件时,必须先获得文件句柄。多个进程同时写一个文件 时,需要相互竞争,以获得该文件的句柄。竞态条件攻击利用这 一过程中出现的安全漏洞发动攻击。
• 在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作 系统函数并传送文件名,并选一个到该文件的路径来打开文件。 该函数取回一个顺序号,即文件句柄(File Handle),该文件句 柄对于打开的文件是唯一的识别依据。
• 最常用的方法是利用/etc/passwd文件的符号链接,/etc/passwd 文件保存着用户账户信息。
• 首先,使用root权限获得用户输入,创建临时文件,查找用于处 理逻辑的进程。黑客向该进程反复输入代表添加用户的值 (hacker:0:0:root:/root:/bin/ksh)。另一方面,运行程序,反复 创建/etc/passwd文件的符号链接(与临时文件同名)。
• 两个进程争夺文件句柄的过程中,进程会向符号文件链接保存用 户输入。此时,hacker:0:0:root:/root:/bin/ksh会被写入 /etc/passwd文件,最终黑客账户获得root权限。

格式字符串攻击
• 格式字符串用户设置printf语句输出的字符串格式。
• 比如输出字符串的printf(“print String: %s”,strName)语句中,%s 为字符串格式。若要输出的参数(strName)正常出现在格式字 符串之后,则不会有什么问题,否则就会取出栈中的值。
• 利用这一原理黑客将%s、%d、%x等多种格式字符串用作输入值, 即可操作栈。尤其是使用类似%n的格式字符串,他将printf()输出 的字节数保存为整型指针。这使得黑客可以将想运行的 ShellCode的返回地址输入栈。

延伸阅读
  1. Access数据库防注入系统拿实战shell
  2. 对菠菜站的被动信息收集
  3. 攀登计划项目《MRSAC的安全性分析》
  4. Kerberos网络身份认证协议
  5. 反弹shell总结(附实战反弹shell)
  6. 常见解析漏洞总结
  7. 最新总结大部分免杀一句话木马
  8. SQL注入绕过姿势总结
更多阅读
  1. 上一篇:反弹shell总结(附实战反弹shell)
  2. 下一篇:Kerberos网络身份认证协议
发表评论 抢沙发