Lec 26 网络攻击
前面攻击者试图通过观察或者篡改数据包;这次有新的目标:使服务宕机。采用的策略是让服务拥塞,让服务花时间处理对手的请求,以至于无法处理合法的请求,这就做DoS(拒绝服务)攻击。从多个机器上发起攻击,那我们称之为DDos(分布式Dos)攻击。
思考题
- 如何让一台机器成为僵尸网络的一部分(高层次解释)
- 比较/对比两种不同类型的网络入侵检测系统(NIDS)
- 解释挂载DDos攻击的方式(比如,SYN 洪水攻击、DNS 放大攻击)
- 识别每次攻击消耗的资源(比如,网络、存储等)
僵尸网络
当今攻击者使用的基本方法。僵尸网络就是一个庞大的被攻击者攻陷的机器构成的集合。对于个人而言,你可以去租用它。僵尸网络的机器联系命令与控制(C&C)服务器,接收命令。


网络入侵检测系统
Network intrusion detection system(NIDS),检测方法分为两种:
- 基于签名的入侵检测系统。基于签名的 IDS 通过寻找特定的模式来检测攻击,例如网络流量中的字节序列或恶意软件使用的已知恶意指令序列。但它难以检测新型攻击,因为没有现成的模式可供识别。
- 基于异常的入侵检测系统。基于异常的入侵检测系统主要是为了检测未知攻击而引入的,部分原因是恶意软件发展迅速。基本方法是使用机器学习创建可信活动的模型,然后将新的行为与该模型进行比较。由于这些模型可以根据应用程序和硬件配置进行训练,基于机器学习的方法相比传统的基于签名的 IDS 具有更好的泛化能力。
我们来看一条基于签名的IDS的规则:
css
alert tcp $EXTERNAL_NET any -> $HOME_NET 7597
(msg:"MALWARE-BACKDOOR QAZ Worm Client Login access";
flow:to_server,established; content:"qazwsx.hsq";
metadata:ruleset community; reference:mcafee,98775;
classtype:misc-activity; sid:108; rev:11;)alert: 规则的动作,表示满足条件出发警报
$EXTERNAL_NET: 这是变量,通常是在网络配置中定义的
any: 源端口
->: 流量方向
$HOME_NET: 变量,受保护的内部网络
msg: 这是触发警报时显示的消息
flow:to_server,established: 这表示规则只会在已建立的 TCP 连接且流量是发送到服务器的情况下生效。
content:"qazwsx.hsq": 这是规则要匹配的内容。在数据包中搜索特定的字符串"qazwsx.hsq"
reference:mcafee,98775 : 规则与 McAfee 公司的某个病毒定义或威胁报告(ID 98775)相关联
classtype: 规则分类类型,表示一个杂项活动
sid:108: 这是规则的唯一标识符,用于区分不同的规则
rev:11: 这是规则的版本号,指示该规则已经被更新了 11 次
为了展示NIDS而言的复杂性(高层次上)
python
for each packet:
search packet for "root"问题:字符串可能跨数据包
python
stream = []
for each packet:
add packet data to stream
search stream for "root"问题:数据包到达可能是乱序
stream = []
for each packet:
get sequence number
add to stream in the correct order
search stream for "root"问题: 实际上还需要维持大量的状态; 它甚至不能工作

额外的挑战: 一些DDos攻击模仿合法的流量
