网络取证原理与实战

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云防火墙,500元 1000GB
简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://chenguang.blog.51cto.com/350944/1660017

 

网络取证原理与实战

一、分析背景

网络取证技术通过技术手段,提取网络犯罪过程中在多个数据源遗留下来的日志等电子证据,形成证据链,根据证据链对网络犯罪行为进行调查、分析、识别,是解决网络安全问题的有效途径之一。目前,传统的计算机取证模型和方法比较成熟,而应用于大数据时代则需要OSSIM等集成分析平台对海量数据尽心网络取证分析。

二、取证分析特点

网络取证不同于传统的计算机取证,主要侧重于对网络设施、网络数据流以及使用网络服务的电子终端中网络数据的检测、整理、收集与分析,主要针对攻击网络服务(Web服务等)的网络犯罪。计算机取证属于典型的事后取证,当事件发生后,才会对相关的计算机或电子设备有针对性的进行调查取证工作。而网络取证技术则属于事前或事件发生中的取证,在入侵行为发生前,网络取证技术可以监测、评估异常的数据流与非法访问;由于网络取证中的电子证据具有多样性、易破坏性等特点,网络取证过程中需要考虑一下问题:

(1)按照一定的计划与步骤及时采集证据,防止电子证据的更改或破坏。网络取证针对的是网络多个数据源中的电子数据,可以被新数据覆盖或影响,极易随着网络环境的变更或者人为破坏等因素发生改变,这就要求取证人员迅速按照数据源的稳定性从弱到强的顺序进行取证。

(2)不要在要被取证的网络或磁盘上直接进行数据采集。根据诺卡德交换原理,当两个对象接触时,物质就会在这两个对象之间产生交换或传送。取证人员与被取证设备的交互(如网络连接的建立)越多、越频繁,系统发生更改的概率越高,电子证据被更改或覆盖的几率越大。这就要求在进行取证时不要随意更改目标机器或者目标网络环境,做好相关的备份

工作。

(3)使用的取证工具必须得到规范认证。网络取证可以借助OSSIM这种安全分析平台。

由于业内水平不一且没有统一的行业标准,对取证结果的可信性产生了一定的影响。这就要求取证人员使用规范的取证工具。四处在网上下载的小工具是没有说服力的。

    网络取证的重点是证据链的生成,其过程一般都是层次性的或基于对象的,一般可分为证据的确定、收集、保护、分析和报告等阶段,每个阶段完成后都会为下一个阶段提供信息,下一个阶段得到的结果又为前一个阶段的取证提供佐证。网络取证的每一个阶段都是相互联系的,这就需要这些信息相互关联,主要由关联分析引擎实现。

三、网络证据的数据源

网络取证的对象是可能记录了网络犯罪过程中遗留下来的数据的多个网络数据源。人们不管是使用Web 服务、云服务或社交网络服务,都需要包含服务提供端(如云服务器)、客户端(PC、手机等智能终端设备)以及网络数据流。

在网络取证证据的提取的过程中,首要的问题就是确定捕获什么样的数据。按照计算机取证的方法,为了准确地构造证据链,需要捕获网络环境中所有的数据(通过SPAN实现)。

四、网络证据分析

网络取证中证据链的开端是被入侵网站记录的非法访问数据。由于针对网络服务的犯罪往往是以窃取网络服务管理员的权限为突破口的,因此,进行网络取证工作时,首先就是针对用户权限以及用户访问点的调查。

取证者在可以进入程序管理模块调查用户账户的可疑记录,例如是否有管理员账户是用万能密码登陆的,后台是否有错误的管理账户登录记录以及可疑的文件记录,是否有用户加载了XSS 跨站session 脚本等异常脚本,进行边界数据监测如文件的上传与下载等用户活动。在进行证据收集的过程中,分析电子证据体现的可疑行为,从而推断犯罪者的攻击方式与信息,以作为下一步的取证活动的指导。

发现有可疑行为的用户记录后,收集该用户访问点的所有访问记录,包括认证用户的权限与对应的会话管理等,记录该用户的所有会话ID。对于可疑的行为记录,以截图、录屏、存储等方式将证据固化到取证设备中,并使用Hash函数对数据进行计算得到信息摘要并保存在基准数据库中。在证据分析之前,对要分析的证据再做一次Hash 计算,比较两者的结果,如果相同则说明数据完整性未被破坏。分析并对应用户与会话ID 之后,则以其作为指示信息收集网络服务器及应用服务器日志中有关该用户及其所有的会话信息记录。

如果后台应用管理模块中的可疑已经被攻击者删除而无法取得可疑会话信息时,则以收集与分析可疑访问的日志作为取证主体。可疑的访问包括记录的访问频率异常、错误信息处理记录、日志审核报告、网站重定向、管理员监控警报、收集站点信息的爬虫记录以及表单隐藏域等。

收集分析日志信息的最大难点在于如何在网站庞大的数据中检索出需要的信息,网络取证技术主要采用日志精简与人工忽略两种思想进行筛选。日志精简主要是根据例如犯罪发生的时间等犯罪信息作为筛选信息进行日志筛选。另外,可以有针对性的查找特定的攻击手段

留下的痕迹。当攻击时间前后公布了某一系统漏洞或者在当时某种攻击手法正在流行时,用这种针对性比较强的调查手段会取得更好的效果。

针对网站日志的分析是Web 取证在网站服务器端的主要应用,除此之外,取证者还可以应用其他技术作为辅助手段协助完成证据链。

五、针对网络数据流的取证

网络取证需要监测网络环境信息与网络流,进行数据包的捕获与分析。网络环境的相关信息主要依靠OSSIM系统中的IDS等进行获取。这一系列的工具可以用来进行网络信息收集与网络安全监测、IP/MAC 地址的分析与定位、监测TCP/UDP 端口与DHCP 列表、SMTP 活动记录等。在进行网络包捕获方面,使用的技术包括基于Libpcap 库、PF_RING 接口、直接使用系统调用等多种。

在被捕获的网络流中,网络包会按照其在网络上传输的顺序显示,相关网络取证工具可以对这些包进行重组,即将这些包组织成两个网络连接点之间的传输层连接。虽然很多取证工具可以对未重组的原始数据进行分析,但是这样会造成非标准端口协议的丢失以及无法应对数据编码与加密传输干扰的问题。

网络取证中的相关性分析研究主要因为网络攻击行为往往是分布、多变的,因此对结果的认定需要将各个取证设施和取证手法得到的数据结合起来进行关联分析以了解其中的相关性以及对结果产生的因果关系和相互确证,才可以重构过程。

 对于这种情况完全由人工分析很显然不太现实,所以我们可以利用开源OSSIM平台得以实现。这样你面对的是多纬度以及大视角的海量数据分析, 采用多数据纬度关联分析,例如如果防火墙检测到非正常业务逻辑的文件上传同时主机Hids 检测到非正常业务CGI 生成,很大可能是攻击者在利用文件上传漏洞上传可疑Webshell(由Snort负责分析) 。以上述检测规则作为给定规则,构建规则模式,形成规则模式集,继而分析证据集。

六、取证案例

为了让大家能够理解各种网络取证方法,在10多年Unix/Linux运维经验中笔者出版《Unix/Linux网络日志分析与流量监控》一书中,例举了二十一个常见网络故障,每个案例完整地介绍了故障的背景、发生、发展,以及最终的故障排除过程。其目的在于维护网络安全,通过开源工具的灵活运用,来解决运维实战工作中的各种复杂的故障。

精彩案例如下:

  • 案例一:闪现Segmentation Fault为哪般

  • 案例二:谁动了我的胶片

  • 案例三:邂逅DNS故障

  • 案例四:网站遭遇DoS攻击

  • 本案例描述了某网站受到拒绝服务攻击后,管理员小杨对比防火墙正常/异常状态下的日志,并配合已有的流量监控系统数据,调查经过伪装的IP地址,通过多种手段对DDoS攻击进行积极防御的过程。

  • 案例五:“太囧”防火墙

  • 管理员小杰在一次巡检中发现了防火墙失效,随着深入调查发现防火墙的可用空间竟然为零。通过大量路由器和防火墙日志对比,得出结论:这是攻击者对其开展的一次网络攻击所致。小杰管理的网络到底遭受了什么样的攻击,这种攻击又是如何得逞的呢?

  • 案例六:围堵Solaris后门

  • 管理员张利发现UNIX系统中同时出现了多个inetd进程,这引起了他的警觉,在随后的调查取证中又发现了大量登录失败的日志记录,系统中出现了什么异常情况呢?

  • 案例七:遭遇溢出攻击

  • 案例八:真假root账号

  • 案例九:为rootkit把脉

  • 案例十:当网页遭遇篡改之后

  • 案例十一:UNIX下捉虫记

  • 案例十二:泄露的裁员名单

  • 案例十三:后台数据库遭遇SQL注入

  • 案例十四:大意的程序员之SQL注入

  • 案例十五:修补SSH服务器漏洞

  • 案例十六:无辜的“跳板”

  • 案例十七:IDS系统遭遇IP碎片攻击

  • 案例十八:智取不速之客

  • 案例十九:无线网遭受的攻击

  • 案例二十:无线会场的“不速之客”

  • 案例二十一:“神秘”的加密指纹

由于篇幅所限就不一一详述,各位读者可以到新华书店和图书馆获取该书详情。

七、后记

目前,网络取证技术还没有统一、比较完备的网络取证流程,这相应的造成了没有统一的取证工具以及相应的评价指标。但笔者通过多年研究开发和应用OSSIM系统发现,该系统的确可以解决目前网络安全取证环节遇到的一些问题。

 

本文出自 “李晨光原创技术博客” 博客,请务必保留此出处http://chenguang.blog.51cto.com/350944/1660017

目录
相关文章
|
11天前
|
并行计算 安全 网络协议
探索未来网络:量子互联网的原理与应用
本文深入探讨了量子互联网的基本概念、技术原理及其潜在应用。通过对量子纠缠、量子叠加和量子隐形传态等核心概念的解释,文章展示了量子互联网如何利用量子力学特性来实现超高速、超高安全性的通信。此外,还讨论了量子互联网在金融、医疗、国防等领域的应用前景,以及当前面临的技术挑战和未来的发展方向。
|
3天前
|
人工智能 安全 网络协议
探索未来网络:量子互联网的原理与应用
本文深入探讨了量子互联网的基础原理、关键技术及其在未来通信领域的应用前景。通过分析量子纠缠、量子叠加等核心概念,揭示了量子互联网相较于传统互联网的优势所在。同时,文章还讨论了当前量子互联网领域面临的技术挑战和解决方案,为读者呈现了一个关于量子互联网的全面且深入的视角。
|
10天前
|
SQL 安全 算法
网络安全的盾牌与剑:漏洞防御与加密技术的实战应用
【9月更文挑战第30天】在数字时代的浪潮中,网络安全成为守护信息资产的关键防线。本文深入浅出地探讨了网络安全中的两大核心议题——安全漏洞与加密技术,并辅以实例和代码演示,旨在提升公众的安全意识和技术防护能力。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络背后的原理与实践
【9月更文挑战第29天】本文将带你深入理解深度学习的核心概念,从基础理论到实际应用,逐步揭示其神秘面纱。我们将探讨神经网络的工作原理,并通过实际代码示例,展示如何构建和训练一个简单的深度学习模型。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技能。
22 2
|
20天前
|
网络协议 Python
告别网络编程迷雾!Python Socket编程基础与实战,让你秒变网络达人!
在网络编程的世界里,Socket编程是连接数据与服务的关键桥梁。对于初学者,这往往是最棘手的部分。本文将用Python带你轻松入门Socket编程,从创建TCP服务器与客户端的基础搭建,到处理并发连接的实战技巧,逐步揭开网络编程的神秘面纱。通过具体的代码示例,我们将掌握Socket的基本概念与操作,让你成为网络编程的高手。无论是简单的数据传输还是复杂的并发处理,Python都能助你一臂之力。希望这篇文章成为你网络编程旅程的良好开端。
38 3
|
21天前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
32 2
|
28天前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
52 8
|
22天前
|
数据采集 API 开发者
🚀告别网络爬虫小白!urllib与requests联手,Python网络请求实战全攻略
在网络的广阔世界里,Python凭借其简洁的语法和强大的库支持,成为开发网络爬虫的首选语言。本文将通过实战案例,带你探索urllib和requests两大神器的魅力。urllib作为Python内置库,虽API稍显繁琐,但有助于理解HTTP请求本质;requests则简化了请求流程,使开发者更专注于业务逻辑。从基本的网页内容抓取到处理Cookies与Session,我们将逐一剖析,助你从爬虫新手成长为高手。
47 1
|
27天前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【9月更文挑战第14天】网络协议是机器间交流的约定格式,确保信息准确传达。主要模型有OSI七层与TCP/IP模型,通过分层简化复杂网络环境。IP地址全局定位设备,MAC地址则在本地网络中定位。网络分层后,数据包层层封装,经由不同层次协议处理,最终通过Socket系统调用在应用层解析和响应。
|
22天前
|
Python
HTTP协议不再是迷!Python网络请求实战,带你走进网络世界的奥秘
本文介绍了HTTP协议,它是互联网信息传递的核心。作为客户端与服务器通信的基础,HTTP请求包括请求行、头和体三部分。通过Python的`requests`库,我们可以轻松实现HTTP请求。本文将指导你安装`requests`库,并通过实战示例演示如何发送GET和POST请求。无论你是想获取网页内容还是提交表单数据,都能通过简单的代码实现。希望本文能帮助你在Python网络请求的道路上迈出坚实的一步。
36 0