专栏首页黑白安全Turbinia:一款自动化云端并行数字取证工具

Turbinia:一款自动化云端并行数字取证工具

Turbinia是一款专门用于部署、管理和运行分布式取证任务流的开源框架。该工具可以自动化运行常见的数据取整处理工具,例如Plaso、TSK和strings等等,可帮助研究人员对云端环境以及大量账号下的数字证据进行处理,并尽可能地通过并行处理方式来减少响应时间。

工作机制

Turbinia由客户端、服务器端和业务处理端(Worker)这几种组件组成,这些组件可以在云端环境中运行,也可以在本地运行,或者在这两种混合环境下运行都可以。Turbinia客户端会向Turbinia服务器端发送取证数据的处理请求,服务器端会根据用户发送过来的请求创建逻辑任务,并为Worker创建取证处理计划任务。在允许的情况下,需要处理的取证分析任务会被拆分成多个工作任务,Turbinia会以并行的方式处理这些任务以节省时间开销,服务器端会同时使用一个或多个Worker来持续处理分析任务。任务创建或分配的任何取证数据都将会回传给Turbinia来进行进一步处理。

客户端与服务器端的通信可以由Google Cloud PubSub或Kombu消息组成。Worker实现和计划任务使用了PSQ(Google Cloud PubSub任务队列)或Celery

更多关于Turbinia工作机制的内容,可以点击【这里】获取。

Virtualenv环境下的工具安装

创建Virtualenv实例

创建并激活Virtualenv:

virtualenv turbinia-env && . turbinia-env/bin/activate

在完成所有操作步骤之前不要退出Virtualenv。

构建与配置

安装Turbinia:

git clone https://github.com/google/turbinia.git
pip install --upgrade pip
pip install -r turbinia/requirements.txt

安装Plaso:

curl -o plaso-requirements.txt https://raw.githubusercontent.com/log2timeline/plaso/master/requirements.txt
pip install -r plaso-requirements.txt

更新Python路径:

cd turbinia; export PYTHONPATH=$PYTHONPATH:`pwd`; cd –
cd turbinia; echo "export PYTHONPATH=$PYTHONPATH" >> ~/.bashrc ;cd -

选择Turbinia配置文件存储路径:

/etc/turbinia/turbinia.conf
sudomkdir /etc/turbinia
cp<localgitpath>/turbinia/config/turbinia_config.py/etc/turbinia/turbinia.conf
/home/$USER/.turbiniarc
cp<localgitpath>/turbinia/config/turbinia_config.py /home/$USER/.turbiniarc
<localgitpath>/turbinia/config/turbinia_config.py

部署云函数:【传送门】 

工具使用

工具安装完成后,可以按照下列步骤进行取证处理:

1、 使用下列命令开启Turbinia服务器组件:

turbiniactl server

2、使用下列命令开启一个或多个Turbinia Worker:

turbiniactl psqworker

3、 使用下列命令控制Turbinia客户端发送取证任务:

turbiniactl ${evidencetype}

4、 使用下列命令检查任务运行状态:

turbiniactl status

turbiniactl命令可以用来开启不同的组件,下面给出的是基本使用方法:

$turbiniactl --help
usage:turbiniactl [-h] [-q] [-v] [-d] [-a] [-f] [-o OUTPUT_DIR] [-L LOG_FILE]
                   [-r REQUEST_ID] [-R] [-S][-C] [-V] [-D]
                   [-F FILTER_PATTERNS_FILE][-j JOBS_WHITELIST]
                   [-J JOBS_BLACKLIST] [-pPOLL_INTERVAL] [-t TASK] [-w]
                   <command> ...
 
optional arguments:
  -h, --help            show this help message and exit
  -q, --quiet           Show minimal output
  -v, --verbose         Show verbose output
  -d, --debug           Show debug output
  -a, --all_fields      Show all task status fields in output
  -f, --force_evidence  Force evidence processing request inpotentially
                        unsafe conditions
  -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                        Directory path foroutput
  -L LOG_FILE, --log_file LOG_FILE
                        Log file
  -r REQUEST_ID, --request_id REQUEST_ID
                        Create new requestswith this Request ID
  -R, --run_local       Run completely locally without anyserver or other
                        infrastructure. Thiscan be used to run one-off Tasks
                        to process data locally.
  -S, --server          Run Turbinia Server indefinitely
  -C, --use_celery      Pass this flag when using Celery/Kombufor task
                        queuing and messaging(instead of Google PSQ/pubsub)
  -V, --version         Show the version
  -D, --dump_json       Dump JSON output of Turbinia Requestinstead of
                        sending it
  -F FILTER_PATTERNS_FILE,--filter_patterns_file FILTER_PATTERNS_FILE
                        A file containingnewline separated string patterns to
                        filter text basedevidence files with (in extended
                        grep regex format).This filtered output will be in
                        addition to thecomplete output
  -j JOBS_WHITELIST, --jobs_whitelistJOBS_WHITELIST
                        A whitelist for Jobsthat we will allow to run (note
                        that it will not forcethem to run).
  -J JOBS_BLACKLIST, --jobs_blacklistJOBS_BLACKLIST
                        A blacklist for Jobs we will not allow torun
  -p POLL_INTERVAL, --poll_intervalPOLL_INTERVAL
                        Number of seconds towait between polling for task
                        state info
  -t TASK, --task TASK  The name of a single Task to run locally(must be used
                        with --run_local.
  -w, --wait            Wait to exit until all tasks forthe given request
                        have completed
 
Commands:
  <command>
    rawdisk             Process RawDisk as Evidence
    googleclouddisk     Process Google Cloud Persistent Disk asEvidence
    googleclouddiskembedded
                        Process Google CloudPersistent Disk with an embedded
                        raw disk image asEvidence
    directory          Process a directory asEvidence
    listjobs            List all available jobs
    psqworker           Run PSQ worker
    celeryworker        Run Celery worker
    status              Get Turbinia Task status
server              Run Turbinia Server

默认情况下,当添加了新的需要处理的取证任务时,turbiniactl将以客户端的身份向Turbinia服务器发送任务请求,如果没有指定–server参数的话,它将会开启自己的Turbinia服务器进程。下面给出的是turbiniactl添加rawdisk类型任务的示例代码:

$./turbiniactl rawdisk -h
usage:turbiniactl rawdisk [-h] -l LOCAL_PATH [-s SOURCE] [-n NAME]
 
optional arguments:
  -h, --help            show this help message and exit
  -l LOCAL_PATH, --local_path LOCAL_PATH
                        Local path to theevidence
  -s SOURCE, --source SOURCE
                        Description of thesource of the evidence
  -n NAME, --name NAME  Descriptive name of the evidence

参考文档

1、 工具安装 2、 工作机制 3、 贡献代码 4、 开发新任务 5、 疑难解答 6、 调试常见错误

参考来源:maaaaz

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Thinkphp < 6.0.2 session id未作过滤导致getshell

    2020年1月13号,Thinkphp 6.0.2发布,在详情页指出修复了一处Session安全隐患。

    周俊辉
  • 总结常见的10种破解密码方法

    为了防止键盘记录工具,产生了使用鼠标和图片录入密码的方式,这时黑客可以通过木马程序将用户屏幕截屏下来然后记录鼠标点击的位置,通过记录鼠标位置对比截屏的图片,从而...

    周俊辉
  • 最流行的渗透测试工具,你用过哪些

    黑客可以使用用户的IP地址来跟踪和窥探他们的数据。它也被称为“IPScan”,即通过IP地址和端口扫描来查找用户系统开发端口服务。它是一款开源的跨平台软件,是目...

    周俊辉
  • React中的模式对话框 转

    在16.x版本之后React提供了Protals功能来解决模式对话框不在Dom根节点导致的一些BUG。除了Protal还有更多的方法去解决这些问题,本文来自Da...

    随风溜达的向日葵
  • 揭秘:一份真实的23andMe个人基因检测报告

    大数据文摘
  • 微软统一预训练语言模型UniLM 2.0解读

    预训练语言模型(Pre-trained Language Model)的应用,使得原本无法针对各种语境变化的静态词向量表征,向着真正基于语境的语义特征表示(Co...

    朴素人工智能
  • 如何应对和防御网站劫持

    很久以前我们说过网站劫持的问题,劫持很伤心有没有,明明好不容易来的流量,起早贪黑SEO什么的,广告什么的各种来的流量,人家小小的一操作什么都没了。劫持有DNS劫...

    乐网网络
  • C++中自定义结构体或类作为关联容器的键

    STL中像set和map这样的容器是通过红黑树来实现的,插入到容器中的对象是顺序存放的,采用这样的方式是非常便于查找的,查找效率能够达到O(log n)。所以如...

    charlee44
  • LintCode-49. 字符大小写排序

    悠扬前奏
  • 【Python基础】列表的排序

    对于列表,我们常用的操作除了上文的增删改查之外,还有很多,我们这就来看看,对于一个列表我们应该怎么玩。

    DataScience

扫码关注云+社区

领取腾讯云代金券