基于数据分析的网络安全学习笔记
第12章 文本分析
分析带有文本的安全数据,学会如何以半结构化(根据一套比较有条理的规则而创建出来的)的形式来处理分析文本问题
12.1 文本的编码
- 编码是指计算机会根据规则把字符与相应的数值关联起来,或是将数值解读成对应的字符。
- Unicode是一套字符集,里面的每个字符都有索引,这个索引是数字形式的值,成为该字符的代码点(简称码点)。
- 编码机制,就是要把数字形式的代码点,表达成某种标准的二进制形式。
12.1.1 Unicode、UTF与ASCLL
- Unicode本身只是一套编码标准,用来将代码点与字符对应起来,它并不是特指某套具体的编码方案。
- UTF-8(UTF的意思是Unicode Text Format)通过编码这一过程,将字符表示为具体的数字。这是一种长度可变的编码方案。
12.1.2 攻击者如何利用编码发起进攻
12.1.2.1 Base64编码
Base64的目标是用常见的字符来表示任意一个二进制值,因此需要把二进制值,映射到0~63这个范围的某个整数里面,并将该整数替换成对应的字符。Base64采用的是大写的字母A-Z、小写字母a-z、数字0-9,以及另外两个字符。
Base64进行编码的基本流程:
- 将原始的字符串写出来
- 将其中的每个字符表示成二进制的形式
- 以24个二进制为单位,将其分成许多块
- 如果某一块里面的二进制位不到24个,那就用0来填充
- 将每个块分成4组,并把每一组内的那6个二进制位转化成一个字符
辨认Base64编码最简单的方法为,看某段文本是否总是找不到Base64之外的字符,尤其是那些很常见但始终没有见到过的字符。
12.1.2.2 非正式的编码技术与混淆技术
比如倒着写或者在后面加上内容,比如将.zip写成.piz以此来规避对于zip文件所做的过滤。
12.1.2.3 压缩
利用压缩技术可以绕开检测机制。在各种压缩格式中,像UPX、Themida、ASPack等可执行的压缩格式是攻击者很喜欢的。这些格式可以把经过压缩的数据文件,与解压缩时需要的逻辑,合起来打包成一个可执行文件。
12.1.2.4 加密
12.2 基本技能
主要介绍一套基本技能来帮助处理并操控文本。
- 查找字符串
在UNIX操作系统中,可以用grep工具进行特定字符串查找,在查找时要注意,如果想要匹配IP地址,其中的圆点符号(.)会被当成正则表达式里面的通配符,这时可以将符号写成\.来查找字面上的圆点符号。在Python中搜寻字符串的方法有两种,一个是find,另一个是index。 - 处理分隔符
tr工具可以很方便的处理分隔符,在python中也可通过字符串的.translate方法来实现。 - 按照分隔符进行拆分呢和提取
- 正则表达式
12.3文本分析技术
- 雅卡尔距离,指两个字符串的交集与并集的比。
- 汉明距离,两个字符在多少个位置上面具有互不相同的字符。
- 莱文斯坦距离,某个字符串至少要经过多少次的单字符操作才能变成另一个字符串。
可以通过这些距离指标找出那些容易混淆的域名