Windows事件响应:我的经历,第二部分
作为之前同名文章的后续,我想继续讲述这个故事;事实上,这个系列可能还会有更多文章,敬请关注。
嘿,分享自己经历的不止我一个人!看看Josh的博客,特别是他最近关于如何进入网络安全领域的文章!我可能被Josh的文章吸引是因为,像我一样,他是一名前海军陆战队员,尽管我可以说我服役时计算机还没有普及,那时我们使用的是1950年代技术、1970年代制造的无线电设备。我们并没有交集…我在Josh参加新兵训练营前12年就退役了,但即便如此,在共同的传统和经历中仍有一些共通之处。
好吧…回到正题!
编程
行业内,特别是在DFIR(数字取证与事件响应)领域,编程被广泛讨论。有些人会说你必须能够编程,甚至对选择的语言有强烈的情感,而其他人仅凭基本的shell脚本和批处理文件也能做得很好。我遇到过一些非常优秀的程序员,他们要么提出个人项目,要么参与更团队或社区为基础的项目,比如Volatility。很多编程工作似乎非常专业化,比如HindSight,而其他项目和贡献可能更通用一些。即便如此,我共事过的一些最优秀的DFIR分析师编程能力有限,仅停留在shell脚本和正则表达式的水平。
因此,在编程方面,你的体验可能会有所不同。不过,我要说的是…无论你选择哪种语言或框架,编程的经验都有助于你理解如何将事物分解为可管理的"块"。无论你是编写一些代码来管理日志,还是领导一个IR(事件响应)项目,你都会意识到要从A到Z,首先必须从A到B,然后到C,再到D,依此类推。通过编写代码完成任务迫使你以这种方式处理问题,因此,除了完成编码任务本身之外,还有其他好处。
我在80年代初开始在MacIIe上编程BASIC,然后在Timex-Sinclair 1000上完成了一些小的编程任务;“小"是因为将程序保存到磁带录音机或从磁带录音机加载程序,或者从杂志上复制程序,是一种全新的折磨。高中时,我在AP计算机科学课程开设的第一年就选修了它;该课程使用Pascal作为选择的语言,当我上大学时,又回到了TRS-80系统上的BASIC。当我进入研究生院时(90年代中期),是MatLab、少量C语言和一些M68000汇编,然后是Java。有一次,就在我即将退役时,我有一份小咨询工作,向一个商业团队教授Java编程。
转到私营部门后,我自学了Perl,最初是因为网络工程师正在寻找具备该技能的人加入他们的团队。后来我遇到了Dave Roth的工作,并为他的模块找到了一些非常棒的用途,买了他的书,甚至直接与他取得了联系。我继续坚持使用Perl,因为当时它是唯一一个具有用于访问离线注册表配置单元的功能模块的语言。我开始为此编写自己的模块,但遇到了James Macfarlane的模块,心想,为什么不呢?
角色
我离开军队后的第一个角色是在一家小型国防承包公司,但那并没有成功。短暂停留后,我转到了Trident Data Systems;这些人是另一家国防承包商,在德克萨斯州圣安东尼奥和洛杉矶设有办事处。结果,我最终加入了商业团队,这很棒。我们进行漏洞评估,因为我们有一个非常好的销售人员,这就是我们所做的,作为一个团队,我们在这方面变得非常擅长。偶尔会有一些不同的任务出现,比如渗透测试,但在大多数情况下,我们在漏洞评估方面有很多工作。
我在这份工作中的老板是一名退役的陆军上校;他立即告诉我,我们正在使用ISS的Internet Scanner产品,并且可能需要定期运行该工具大约2到3年才能真正理解它在做什么。我认为他是对的…有一个漂亮且相当复杂的GUI,如果你不关闭一些默认设置,比如检查net send"漏洞”,你最终会向每个桌面发送消息,给本地管理员带来麻烦。
结果,在大约6个月内,我开始使用我开发的Perl技能以及Dave Roth的模块,开始编写一个替代Internet Scanner商业产品的工具。ISS产品是一个黑盒…你按下一个按钮,它就会给你答案。只是我们不知道产品在"看"什么,也不知道它是如何确定某个东西是"易受攻击"的。当我们开始更仔细地研究并深入挖掘MS知识库时,我们开始弄清楚产品在检查什么,并且开始发现一些答案是错误的;我们遇到的最大问题之一是,当工具告诉我们某个特定办公室的21个系统上AutoAdminLogon功能被"启用"时,结果发现只有一个系统真正启用了该功能。更糟糕的是,客户知道只有一台系统启用了该功能;它之前在其他20个系统上启用过,但客户有意且费力地禁用了它。因此,我们将ISS产品与我们正在开发的新工具并排运行,并检查工作,这是一件好事。
这是我私营部门职业生涯中最早真正说明需要理解、真正了解你的工具在做什么以及它们如何做的时刻之一。这导致了随后25年多里的其他时刻,因为这个教训被一次又一次地重温。
发布者:H. Carvey
发布时间:上午7:16