新工具:convert-ts-bash-history.py
在SANS FOR577课程中,我们会在第5天讨论时间线分析,包括文件系统时间线和超级时间线。但有时我需要快速简单的解决方案,与其启动plaso来创建.bash_history数据的时间线,不如直接解析这些文件,并在启用时间戳时以人类可读的格式查看它们。课堂上有些学生编写了脚本来实现这一功能,甚至有学生承诺课后分享给我,但我最终没有收到,因此决定自己编写。
该脚本接受一个或多个.bash_history文件的路径,并以PSV(管道分隔值)格式返回标准输出,形式为:<文件名>|<日期时间>|<命令>
,其中<日期时间>
采用ISO-8601格式(这是唯一真正的日期时间格式,但由于.bash_history文件只能提供秒级精度,因此分辨率仅限于秒)。在未来的版本中,我可能会添加从PSV切换到CSV的选项。
我使用该脚本的一种方式是通过管道将输出传递给sort命令,特别是| sort -t '|' -k 2
,以对多个bash历史文件按时间顺序排序。关于是否交换前两列的位置,我反复考虑过,但由于我遇到的大多数历史文件没有时间戳,将包含命令的特定文件路径放在前面非常有用。我可能还会添加一个开关来省略文件路径。欢迎可能使用该工具的用户提供评论/想法。这就是为什么这是v0.9版本,而不是v1.0。
该脚本(如标题所示)名为convert-ts-bash-history.py,以下是几张显示其用法的截图。您可以在我的github脚本仓库中找到它。
最后提醒一点,正如我们在课堂上指出的,bash历史文件在shell退出时写入,因此如果您在实时系统上进行应急响应且shell仍处于打开状态,历史记录将仅存在于内存中,尚未写入磁盘。如果您想了解更多关于Linux事件响应和取证的知识,今年我将在我最喜欢的会议之一——11月迈阿密的SANS DFIRCON上再次教授FOR577课程,期待在那里见到您。
参考文献: [1] https://www.sans.org/cyber-security-courses/linux-threat-hunting-incident-response [2] https://github.com/clausing/scripts/blob/master/convert-ts-bash-history.py [3] https://github.com/clausing/scripts [4] https://www.sans.org/cyber-security-training-events/dfircon-miami-2025
Jim Clausing, GIAC GSE #26 jclausing –at– isc [dot] sans (dot) edu
关键词:bash 时间线 工具