作为一名安全研究员, 我的日常工作环境是怎样的? - Linux篇

出于笔记本性能老化的原因, 我将它装成了linux的单系统来使用, 顺便更新了一下工作环境和模式, 那么也正好来分享和记录一下作为一名入行不及两年半的安全研究员, 一个高效的工作环境是怎么样的.

0x01 系统选择安装

就linux发行版而言, 可以考虑的选择有非常多, 着重挑选好自己喜欢的版本就可以了, 作为日常的开发和使用基本上也不会有太大的问题. 不过出于软件库的考虑, 最好还是选择Debian系和Arch系.

  • Ubuntu 18.04: 这是我使用时间最长的一款发行版了. 综合性来说肯定是非常合适的, 并且Gnome桌面经过一些美化可以做到非常的赏心悦目. 但是并非是一门针对安全工作的发行版, 所以是需要自己安装一些软件工具以及相应的环境的.
  • Manjaro: 开箱即用的Arch系发行版. 对于想接触Arch系但是又不想过于折腾的人来说是非常好的选择. AUR仓库和滚动更新确实很好用(单也有滚挂的风险), 我之前装的是Arch Linux + i3wn的组合. 用起来可谓是极度舒适. 不过缺点也很明显, 也并非是针对安全工作的发行版, 并且会需要折腾(Manjaro相比Arch Linux应该好很多了). 对于i3这样的平铺式窗口系统还是很好用的, 内存的占用也是极低. manjaro也有提供kde, xfce和deepin版本都是建议尝试的.
  • Kali Linux: 非常流行的适合安全工作者的发行版. 上面集成了相当多的安全系的工具并且配置好了环境, 如果想偷懒的话可以建议选择这个发行版, 并且也是Debian系, 安装软件也很方便. 当然缺点就是装的软件会比较多, 定制化的程度不高, 所以也算好坏参半版.

当然我还是选择了Kali Linux, 其实我只在早些年刚接触安全的时候才会选择这个发行版. 但是当时感觉上面更多的是渗透相关的软件, 再加上它的界面实在是有点丑(我还是会很关心颜值的, 毕竟每天都会接触到这些, 不弄得好看些实在伤眼睛). 不过目前的kali界面意外的好非常多了. (安全界总算是有一点审美在线了?!) 再算上更希望拥有一个全能的系统, 那么Kali就这样敲定了.

另外说说分析用的虚拟机环境. 分析样本总不可能在物理机伤操作, 肯定是要放进虚拟机里运行和分析的(包括还有相应的分析工具). 目前主流的虚拟机环境有以下:

  • FlareVM: FireEye开源的恶意代码分析用的虚拟机. 配置相当简单了, 运行它的脚本就可以设置好环境, 其实是非常轻便的.(当然前提是你有科学上网工具, 否则你得等上大半天)
  • REMnux: 一个辅助逆向分析的虚拟机. 上面齐全了非常多的逆向工具, 用于逆向分析实在是不可多得. 很多国外的课程也都是会直接使用该系统, 并且它有详细的文档. 我觉得相当赞.

0x02 基础工具

先来说下必要/常规的基础工具吧.

  • aptitude/apt-fast: aptitude能帮助解决安装包依赖的问题, 而apt-fast可以通过同时下载多个依赖包而解决速度问题.
  • curl/wget/aria2: 这三个下载工具自然不必多言. curl用于网络请求, wget是快速用的下载工具, aria2是多线程下载工具.
  • tmux: tmux能很好地划分任务会话. 可以帮助解决打开的终端过多而无法理清的问题, 像长期运行的服务器上是一定要装该软件的, 快捷键也很容易使用.
  • node.js/npm/cnpm: node环境以及包管理器. 目前有很多开源的js的命令行工具, 大部分都是需要node环境运行, 也就是需要用npm来安装. cnpm是走淘宝镜像的npm替代品(中国特色). 我的博客就是基于hexo的, 因此我也需要node环境.
  • synergy: 局域网共用一套键鼠控制多台机器的开源软件. 有多台机器的话, 每次都要切换鼠标键盘是极其费力和心烦的事情. 所以用一套键鼠来控制, 共享文件剪贴板是非常重要的事情.
  • ssh/vnc: vnc用于转发机器的图形界面. 像我目前有笔记本和台式机, 我就可以将任务划分为轻任务和重任务. 将重任务都转移到台式机上跑(当然需要安装openssh-server), 笔记本就专注轻任务即可. 当然有必要都会话, 就会需要用vnc来查看图形界面.
  • vscode: 我的主力开发工具. 一个轻量级的代码编辑器, 但是也能扩展成小型的ide来使用. 带有十分丰富的插件系统, 日渐淘汰来sublime(快但是巨丑, 并且插件安装比较麻烦)和atom(巨慢).
  • htop: 系统监视工具, 是top命令的替代品, 但是更为直观和好看.
  • zsh: 必须安装的一款shell. 其实也有一个fish shell也很流行, 但因为其对bash语法的不兼容, 所以用起来会很麻烦. 所以zsh是首选. 配合oh-my-zsh以及相应的插件简直不要太舒服了(git z extract fzf zsh-autosuggestions和zsh-syntax-highlighting). 如果还想折腾一下的话, 可以装一下powerline也是蛮好的. 只是我注重简洁, 那种长条状的提示符我还是不太喜欢.
  • rime: 小狼毫输入法(开源). 用起来非常的流畅, 并且是开源的, 可定制性也非常高. 像其他的也有搜狗输入法, 谷歌输入法可以考虑. 不过我觉得rime安装相比另两个要简单很多, 并且rime的dark theme也是非常舒适的.
  • f.lux/redshift: 蓝光过滤软件. 不必多言, 过滤蓝光能极大地提升眼睛的舒适度和观看时长.
  • typora: 简洁易用的可见即可读的markdown编辑器. 颜值和使用性都非常高. 我会使用Vue主题来美化.
  • mendeley: 文献管理工具, 它最大的特点就是跨平台免费, 并且有社区功能, 可以向你推荐社区内其他可能感兴趣的论文. 当然我的文献都存放在mendeley里, 迁移到其他的平台也会有麻烦之处吧.
  • albert: linux下的alfred替代品, 十一个快速的应用启动器, 使用起来体验非常好. 不过安装会稍有繁琐
  • tldr: 用于查阅linux命令的常用用法. 比man手册一大堆的信息要更有效
  • vcpkg: 微软推出的Win/Linux/Mac的C++库管理工具

0x03 安全工具

  • readelf: elf文件的解析工具, 对于pwn读取文件字段等信息很有帮助
  • strings: 快速获取文件中的可见字符串. 可以设置大小端.
  • objdump: 常用于查看反汇编代码. 可以指定intel格式输出汇编
  • radare2: 全面的逆向分析的套件.
  • capstone: 反汇编框架
  • keystone: 汇编框架, 可以使用vcpkg来安装
  • unicorn: 模拟执行框架
  • angr: 符号执行框架
  • afl: 模糊测试框架
  • gdb
    • peda
    • pwndbg
    • gef
    • pwngdb:
  • shellen: 开源的交互式编写shellcode的环境
  • malboxes: 一键创建一个分析恶意软件用的虚拟环境. 提供了多种环境(仅win7和win10)

TODO: 介绍IDA插件