“先森”在黑客入侵服务器修改考试成绩的取证和分析纪实一文中以靶场环境设置在General_log开启的情况下使用纯手工方式完整的追踪和定位了“黑客”的行为痕迹。
整个过程遵循电子取证规范,是一篇较为符合现实的电子取证实例。文章步骤5中提示用编程的方法遍历加密压缩包,由于文章此部分存在删减,故决定作为练习,编写程序遍历后缀为”rar”/”zip”的文件分辨带有加密位的压缩包。由于靶场环境Python缺乏rarfile包,需要手工导入,Linux需要自己手动编译生成so文件:
1.首先在python中pip install unrar安装rarfile,然后去下载源文件,不过这就不像Win那样给你封装好了,你需要下载的是源代码:http://www.rarlab.com/rar/unrarsrc-5.4.5.tar.gz ,也就是RARLab官网下载列表中的 UnRAR Source,可以下载到最新版本;
2. 下载完后解压,得到unrar目录,cd unrar 后,使用 make lib 命令将会自动编译库文件,哗啦啦编译完成后,再使用 make install-lib 命令产生 libunrar.so 文件(一般在 /usr/lib 目录下面);
3. 最后,你仍然需要设置Linux系统的环境变量,找到 /etc 目录下的 profile 文件,当然你可以直接使用 vim /etc/profile 命令来编辑,在 profile 文件末尾加上 export UNRAR_LIB_PATH=/usr/lib/libunrar.so ,别把我这句话的逗号加进去了。成功保存后再使用 source /etc/profile 命令使变量生效。
编写py:
#!/usr/bin/env python
#_*_coding=utf-8_*_
import os, sys
import zipfile
import gzip
from unrar import rarfile
def is_Encrypted(file): #是否为加密文档
Suffix = os.path.splitext(file)[1]
if Suffix == ".zip":
z = zipfile.ZipFile(file, 'r')
for i in z.infolist():
if i.flag_bits & 0x01:
print("****** 该文件是加密文档!******")
elif Suffix == ".rar":
z = rarfile.RarFile(file, 'r')
for i in z.infolist():
if i.flag_bits & 0x04: #0x04 文件使用密码加密
print("****** 该文件是加密文档!******")
def fun(path): #当前工作路径
Const_File_Format = [".zip", ".rar"] #需要筛出来的文件后缀
if os.path.splitext(path)[1] in Const_File_Format:
print ('[!]' + path)
is_Encrypted(path)
def search(root, target): #搜索当前目录下的文件
items = os.listdir(root)
for item in items:
path = os.path.join(root, item)
if os.path.isdir(path):
None
search(path, target)
elif path.split('/')[-1] == target:
None
else:
fun(path)
def main():
workingpath = os.path.abspath('.') #获取文件绝对路径
s = 'file.txt'
search(workingpath, s)
if __name__ == '__main__':
main()
最终效果图:
程序编写较为简单,其实可以拓展功能加上参数设置、自动解密和解压功能,如果有时间会去完善一下。最后谢谢先森、嘟嘟的爸爸、和远远美女的分享。