黑客 Halvar Flake
原创
天御
天御
天御攻防实验室
2026年10月9日 15:19
广东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
背景
我借用了 Gera 的方法,准备一个简短版本和一个给历史学家看的冗长版本:
我八九岁的时候问哥哥“怎么破解版权保护”,他说“很简单,你只要把一个跳转指令取反”。我当时不知道跳转是什么,但记住了这个建议。我16岁学汇编,然后开始破解和写病毒,之后进入逆向工程和黑客/漏洞开发领域,开始培训政府人员以此资助我的数学学位,意外创办了一家公司,在健康状况不佳时被 Google 收购,恢复了几年,对安全感到厌倦,又创办了一家性能优化公司,卖掉它,然后花了几年时间照顾家人。现在对 LLM 和 AI 感兴趣,因为一切都在变动、新鲜且有趣。
给历史学家和真正无聊的读者的版本:
爸爸在我8岁时教我 BBx BASIC,但我没怎么用它。我输入杂志上的程序清单来玩游戏,但没法调试让它们跑起来。我问哥哥怎么破解版权保护,他说:“很简单,你只要把一个跳转指令取反。你需要懂汇编。”——这就是我记住的全部。我成了艺术小孩,画画,十几岁时尝试用叫“QuakeMe”的软件编辑 Quake 3D 模型,共享版(未付费)有一些限制。
我去美国做高中交换年。在 Barnes & Noble 我看到了 Wrox Press 的《Master Class Assembly Language》并买了它。它教我什么是 JMP,如何让 CPU 进入保护模式,DPMI 扩展器和分页如何工作,以及我需要的一切。我安装了 IRC 客户端,找到了破解场景,加入了 #cracking4newbies(如果你不是明显很厉害,立刻就会被从 #cracking 踢出去)。我开始学习,用一个糟糕的屠夫手法破解了 QuakeME,但它能用。我上瘾了。我读了 ed!son 的破解教程,然后偶然发现了后来成为 Fravia 逆向工程网站的内容。
我找到了一个几乎无穷无尽的谜题源泉和一起解谜的同伴。EFNet 破解场景是一个非常活跃的地方。整整一代好奇的孩子,年龄跨度10-15岁,聚集在共享空间里。从今天的视角看,有很多1990年代的怪异之处(有毒甚至反社会),但许多怪异的孩子找到了他们的社区。我在那里认识了许多现在安全世界中重要的人——太多无法一一列举。Rolf Rolles、scut、acp、random\_、Neel Mehta、Stephan Esser、Anders Vogh、Solar Designer、vizions、the\_grugq、the\_owl、G-R0M、iceman.de、Nishad Herath,等等等等。
我1996年通过滥用 PHF 漏洞黑进了第一台电脑,一台墨西哥大学的机器。我不知道接下来该做什么,因为我完全不懂 Unix。我读了 VLAD 和 29A 杂志。29A 里的 Win32.Cabanas 源代码和文章对我来说是绝对的眼界大开,我对 Win32.Cabanas 沉思了很久。Solar Designer 的 Crackme 包含自定义虚拟机以及可执行文件打包涉及的一切(PECrypt、Procdump32)。我也读 Phrack,但直到《Smashing the Stack》,很多黑客文章对我来说都很陌生。破解场景充满了汇编、中断,甚至一些加密,而许多黑客文章是“嘿,我们通过社会工程进入了”和“这里是某个晦涩电信系统的手册”。很迷人,但离我所知甚远。
《Smashing the Stack》对我来说是眼界大开。而且如果你习惯用汇编写 keygen,写 shellcode 很容易。但作为一个破解场景的孩子,我对 UNIX 一无所知,也不知道除了糟糕的 CMD.EXE 之外如何使用 shell。
我还有两年德国高中要读。当时有一个会议/派对叫“UC3D”——“underground conference 3D”——这是破解场景、演示场景和黑客场景仍然有交汇点的最后几个地方之一(这些场景已经 largely 分裂和发散)。我坐火车去德国的 Bingen,见到了 random 和 lorian,我在网上认识他们多年了。派对有现场演示编码比赛,但也有一个“硬件压缩”比赛(你必须把一块硬件压到尽可能小的体积)。
不久之后,发生了从破解场景到黑客场景的“大规模外流”。scut,TESO 的早期成员,在破解领域也有根基,邀请了一群破解者进入 TESO。结果很好。破解场景的人和现有的高度技术黑客融合,在短暂的时间里 TESO 凭借纯粹的技术输出成为最受尊敬的“黑客团体”之一。ADM 可能被认为更酷,但 TESO 也在那里,在短暂的时间里我们有极其协作的文化。我们把学到的一切写进“TESO informationals”,描述我们在做什么的文本文件——其中许多足以构成会议演讲。我们在 IRC 上闲逛,交换文献推荐,互相帮助解决问题。
临近高中毕业时,我在 Bugtraq 上看到一个关于 Netscape Enterprise Server 栈溢出的帖子,这是当时重要的商业 web 服务器(它运行 CNN.com,那是一个重要的新闻网站,文化上大约相当于今天的 Fox)。发帖的人似乎在利用上挣扎,我发邮件告诉他们我能做。他们回邮件说如果我成功就给我 1000 美元。我第二天就把 漏洞利用 发了过去。他们给我一份在曼谷的工作,鉴于我即将从高中毕业,并且在开始强制性兵役替代服务之前有几个月空闲,我同意了。我很高兴,因为过去一年我的家庭生活因超出我控制的事情变得非常困难,所以一条提供快速逃脱和一些钱的路径很好。
我从德国高中毕业,第二天就飞去曼谷。在那里我遇到了一些创办安全咨询公司的老派黑客。我也遇到了 Fyodor Yarochkin。我们一起工作,至今我仍视他为亲密朋友和伟大的人。那是有趣的时光——软件充满了 bug,人们不习惯买渗透测试却被核心基础设施服务中的零日漏洞黑掉。18岁在异国他乡有好食物和有趣工作也很有趣。我记得当时 Fyodor 和我摆弄受限的 x86 shellcode,成功做出带 '\_' 和 '-' 的字母数字 shellcode(现在别问我为什么需要那些字符),以及用 IDC 脚本 IDA 尝试做静态分析。
很有趣。Fyodor 还让我对当时所有奇怪的其他架构感兴趣,从 PA-RISC(栈向上增长)到 SPARC(至今仍是最美的汇编)。
我回到德国开始兵役替代。那是在一个非常 rough 城区的问题青少年之家。这份工作让我每天早上在孩子到来之前有大约2小时自己搞东西。
在泰国时我与一位 Windows 黑客同行 Joey\\ 约定见面。他是当时少数写 Windows 漏洞利用 的人之一(我真的只记得 handful 的昵称:darkspyrit(Barnaby Jack)、Joey\\、一个自称 UNYON / dark penguin (?) 的日本人,后来在 EEye 工作……再晚一点 Greg Hoglund (?))。
大家某种程度上都互相认识(或听说过)。
我一直很钦佩 Joey\\,我们同意提交到同一个 Blackhat 会议以便见面。我提交了并被接受,不知怎么 Joey\\ 没提交——细节我记不清了——但通过这个我最终在 Blackhat Amsterdam 2000 上做逆向工程的演讲。之后有人问我能否多讲讲这个。我19岁,刚高中毕业,需要自己养活自己(鉴于家里的困难情况,我不允许自己依赖父母)。
我开始在 Blackhat 做逆向工程和 漏洞利用 开发培训,以资助学业。
我接触到了所有常见的三字母机构。在我的第一堂课上,一位有经验的“DoD”逆向工程师(有大约13或15年逆向工程经验,对19岁的我来说是不可想象的时间跨度)和一些初级人员坐在课上,我困惑为什么他们会派有这种资历的人来上我这种课,由一个几年前自学逆向的小孩教。那人非常友善,并解释说他主要是来看看我如何……(教需要学这些东西的人)。
与美国情报部门的接触起初有点令人不安——我在一个深度和平主义的核心家庭长大(我父母都是作为孩子经历二战,都有深刻的情感创伤——这导致他们极端拥抱和平主义,尽管有非常普鲁士和相当军事化的家族历史)。所以一切与军事、间谍和国家间冲突有关的东西对我来说都深度可疑,对我父亲更是如此。但情报界聪明、足智多谋,并且经常对自己工作的道德和伦理维度相当内省。这缓解了我本能的反感。
TESO 遭受泄漏之苦。所以 TESO 以前自由奔放的内部研究文化急转直下,每个人都试图更多地锁定东西。泄漏没有停止(也许一些基础设施被妥协了),情况变得如此糟糕,以至于 TESO 成员经常只有在另一位 TESO 研究员的研究被泄漏并发表之后才知道它。
我必须决定大学学什么。我去了唯一没有人排队的科目:数学,意图做两个学期教自己如何清晰思考。我也读了 Schneier 的《Applied Cryptography》,认为一些数学会有用。
我人生中第一次一个科目对我来说真正困难,我成绩平平,甚至在学生的下半部。第一堂课教授开头说“看看你左边和右边的邻居。如果你到圣诞节还在这里,他们就不会了。”我太骄傲不愿放弃,所以坚持下去,最终意识到如果我想成为仅仅比无用高一个 epsilon,我必须决定爱它。我做了,并且我仍然爱它。
9/11 发生在我大学第一年的一两个月后。一切变得疯狂和复杂。全球反恐战争开始了,我对美国行动的看法必须很快变得更加细微,特别是在第二次伊拉克战争的准备阶段。我仍然通过培训赚钱。我在学习数学并与之挣扎,只为定期飞到拉斯维加斯或其他地方,教一堂满是比我年长得多(并且经常处于政府角色)的人的逆向工程和漏洞开发课。这非常精神分裂,并且有点孤立。
2003 年微软发布了一堆 Windows DCOM 系统的补丁,在黑客团体 LSD 报告了一堆 Windows 远程漏洞之后。为了缓解风险,微软希望提供补丁但不提供关于漏洞的任何信息。
我被有补丁后的可执行文件但无法理解我们修补的是什么 bug 所困扰。微软的发布可执行文件带有现在称为 PGO 的东西(基于分析数据的基本块重排序——微软甚至有这方面的专利),而他们的补丁没有——所以任何字节级比较都没用,因为一切都被打乱了。
所有字节都被打乱但几乎所有函数的图结构保持稳定这一事实,引导我构建了 BinDiff 的第一个原型。
在我 Vordiplom(大致相当于本科,但不是独立学位)接近尾声时,我参加了一个密码学研讨会。我呈现了我的部分,那是我本科唯一一次表现良好。教授在研讨会后把我拉到一边,告诉我:“听着,我看到你的成绩和你在这里的表现。我也看到你在这个研讨会上的表现。我的建议是:去做一些真正让你感兴趣的事情,换换口味。”
我听说 Dobbertin 刚刚在 Bochum 成为教授,我决定换大学,目标是写关于 MD5 的硕士论文。我当时认为这个构造看起来足够摇摇欲坠,值得一试。我之前会有一个学期空闲。我决定去阿根廷,那里许多朋友在 Gera 的公司 CORE 工作。
那2-3个月是我人生中最好的一些时光。BinDiff 真正变得有用,我为公司围绕它黑出了一个网站。我从阿根廷飞到洛杉矶教一个关于补丁分析的培训课。
有需求。
这个微软 PCT SSL 安全补丁在我在阿根廷时发布,这是 BinDiff 的第一个“大时刻”——工具精确定位了修复,补丁发布后24小时内就有一个在 CORE Impact 中工作且可靠的 漏洞利用,允许远程访问任何未打补丁的启用 SSL 的 IIS 安装。
美好时光。正是在这里我第一次了解到 Gera 为 dtlogin exploit 所做的堆可视化工作,对我来说是一个顿悟。
我回到德国,搬到 Bochum,搬进一个新公寓,2004年初夏。2004年8月,Wang 等人发表了他们的 MD5 碰撞,然后访问了 Bochum。我被邀请进入与 Dobbertin、他的研究生和王女士的讨论。这极其有趣,验证但也令人失望:我关于 MD5 脆弱性的直觉是正确的,但现在我需要做其他事情。
不幸的是,Dobbertin 教授在学期开始后不久生病,大多从大学生活中消失,最终死于癌症。我被困在 Bochum,我在那里的理由消失了,我必须等待密码学系主任重新任命。
与此同时人们想买 BinDiff。(适度的)收入开始进来,但足以减少我的培训旅行日程。不久之后,Rolf Rolles 联系我——他手动反编译了 BinDiff 插件二进制文件到可重新编译的源代码,并想看看他能否和我一起在这个工具上工作。我们找到了安排。
我也被介绍给 Ero Carrera,他当时在 F-Secure 工作,也研究过使用恶意软件的图结构进行恶意软件聚类。他也加入了“公司”,我们最终租了一个办公室。
路线图是:用 BinDiff 收入构建一个允许输入构造以到达程序中给定点的工具(BinNavi),然后用那笔钱构建 BinAudit,一个假设的 bug 检测程序,会在二进制中识别安全问题。在公司7年历史中,我们从未真正开始 BinAudit 的实际开发,但我们确实构建了 BinDiff 和 BinNavi,包括本应用于馈入求解器的 REIL IR。
我们还必须处理许多可疑客户,他们想直接到我们办公室用现金付款,以及其他各种疯狂。我们最终让公司秘书对我们的客户做基本背景检查。那些故事。
zynamics 很有趣,我们增长到10-12人,但对我来说也极其不健康。我把自己跑到精疲力竭:每当银行里的钱降到我的安全边际以下,我就去卖额外培训来弥补缺口,然后销售恢复,我仍然必须做那些培训,同时试图完成我的学位(先是 MSc,然后我开始 PhD)。于是发展出压力诱导的免疫失败——我在短时间内得了带状疱疹、百日咳和滑囊炎,滑囊炎使炎症标志物飙升到超出所有理由。我的医生最终告诉我:“年轻人,我们在你身上看到我们通常在免疫失败的80岁老人身上看到的症状。无论你对自己做了什么,如果你想活到35岁,你需要停止那样做。”
我休假开始冲浪,决定我需要一条摆脱跑步机的路。我们开始策划可能找到买家,最初在防病毒行业;我们非常幸运,X政府在恰到好处的时间被抓到黑 Google。
我们加入 Google——2011年那是一个令人兴奋的地方——Google 让我成为更好的计算机科学家,但更糟糕的逆向工程师(只是因为我工作的性质大幅转变)。我对漏洞开发的参与变得更加理论——我在2000年代末对 Sergey Bratus 称为怪异机器(weird machine)的正确定义方式有过重要“洞察”。
当 Flippy the Laptop 带着糟糕的 RAM 被发现并引发 Mark 成功运行到他的 Rowhammer exploit 时,我非常高兴能与 Mark Seaborn 合作。我休假,完成了怪异机器论文(一项苦差事,但重要),然后回到 Project Zero 的 IC 角色。P0 充满了了不起的人,在这样的研究组里感觉某种程度上解放。
我对安全感到沮丧。所以在坐在 Jann Horn 旁边并通过观察他学习 eBPF 之后,我决定是时候在性能领域做点什么,并离开 Google 创办一家性能优化公司。
我和一位漏洞开发朋友 Sean Heelan 一起,在他 PhD 工作期间我们讨论了很多。公司与 COVID 重合,2.5年后被 Elastic 收购,就在我母亲进入昏迷并去世时。
而……好吧,现在是5年后。LLM 现在是一件事,正在重塑一切,包括安全,我发现自己又在看一些安全东西,因为事情变化足够快,让一切再次有趣。正如 Hunter S. Thompson 所说:当事情变得怪异时,怪异的人就变专业,我在这里,至少暂时。
灵感
出于某种未知原因,我八九岁时告诉其他孩子我会成为黑客,从国防预算中偷走10亿美元。我不知道那从哪来的。
早期影响
我哥哥。然后可能是 Fravia,以及破解场景的其他人。我从未认识 ed!son,但他的破解教程对我来说巨大。
难忘经历
在我的 AMD 486 仿冒机上写 shellcode,并且过于聪明一半:为了避免 NUL 字节,我会把“pop ebp, call ebp”的字节推到栈上,然后发出“call esp”。它在我的机器上完美计算了 delta 偏移,但我不知道 Intel CPU 在 call esp 指令上有 erratum,所以互联网上大多数机器会崩溃。
2000年夏天站在火车站台上,吃着一袋樱桃,慢慢意识到预 malloc 整数溢出的全部影响。
一遍又一遍读 OpenSSH,错误地假设 fatal() 只是“打印并退出”,没意识到它做了一堆堆清理,因此错过了我自己拥有 OpenSSH 远程漏洞的最佳机会。
在 Katrina 之前的新奥尔良遇见 FX,最终和他在舞台上唱一首他不知道的歌的卡拉 OK。
Phrack 如何影响你并帮助塑造你是谁?
没有 Barnaby Jack 的 Phrack 文章,我不认为我会继续 Windows 黑客。route 运营 Phrack 时我是青少年,我钦佩所有参与其中的人。某种程度上,一些旧文本文件宣扬的价值观渗入了我们所有人?
你最喜欢的 bug/exploit(漏洞利用) 是什么?
每一个都有自己的小故事。它们最终像宠物。我最喜欢的之一是一个 RealServer bug,RealServer 会接受一个请求 URL 并将其拆成部分,在 '/' 处分割字符串,并把一系列 char\ 放入栈上的 char\ 数组——所以你会用指向你自己数据的 char\* 溢出栈缓冲区,并用那个指针覆盖 EIP,所以它真的是“发送正确的字符串并看着它被执行”。
我记得 Dave Aitel 对在 fuzzing 时什么都不做就意外执行代码感到困惑。漂亮的 bug。
缓解措施最终会让利用变得不可能吗?
我认为正确实现的细粒度内存标记可以使绝大多数内存损坏 bug 变得不可能或至少极其难以利用。我认为我们目前在成本/收益权衡上没有更好的缓解措施。时间会证明。
还会有其他 bug,或许不那么强大,但仍然值得利用。
你会推荐新手为开源项目做贡献吗?
我推荐每个人都为开源做贡献。传播源代码让我们所有人更富有。我也理解经济可能 dictate 不分享源代码——所以如果你不分享没有道德评判——但我一般认为当你能分享代码时,分享是一种根本利他的举动,让每个人都更好。
你对现在 vs 当时的信息安全场景的看法?
我们都老了很多 ;) 现在我们可以像谈 bug 一样多谈健康问题。中年突变忍者龟确实如此。
我们需要回忆90年代是一个怪异的地缘政治时期,一些严肃学者认真考虑“历史的终结”,我们都会交易并快乐,一种资本主义遇上嬉皮理想的形式。9/11 结束了那一切,余波给每个人关于权力、钢铁和酷刑意味着什么的 stark 提醒。我分享 Gera 关于“到处都是雇佣兵”的一些担忧,我不太喜欢一切的军事化。但它是细微的(读数字版获取更多冗长)。
结束语:我曾经开玩笑说在安全领域工作有趣的原因不到一打,我个人认识其中大多数。然后随着时间我必须增加那个数字,如今我大概能列出三打或更多我通过安全认识的、我高度尊重的人。所以尽管我喜欢的人的百分比可能下降了,但总体数量上升了,由于我擅长避开我不喜欢的人,按纯粹数字算,我今天与场景的生活比当时更丰富一点。
推荐
技术书籍:
《A New Era in Computing》——1993,MIT Press。最好的书。我一直从中偷想法。
除此之外:太多无法列出或太少无法列出。我有满架子我再也不会碰但无法让自己扔掉的书。
其他书籍:
Heinlein 的《The Moon is a Harsh Mistress》
Lem 的《Memoirs Found in a Bathtub》
数学传记或自传:Ulam、Rota、Thorpe、Erdos、Friedman
Giancarlo Rota 的任何东西
Vladimir Arnold 的随笔
Serhij Zhadan 的任何东西
《Descartes' Error》
《A History of Computing in the 20th Century》
反思
黑客精神:
无界的好奇心,即使人们说“没必要看那个”也想理解的欲望,以及通过吸收一个主题而不仅仅是阅读来进行真正实验和学习的真正欲望。
漏洞利用行业:
你不与雨的存在争论。
职业与倦怠:
有一个有用的类比:你的生活是一次长途汽车旅行,你的每个方面都是乘客。你需要找到让他们都快乐的方法,这始于倾听他们,而不是把其中一个锁在后备箱里多年。
洞察
重要原则:
小时候我理解了“金丝雀”原则:规则的执行往往是通过拿最恶劣的违法者做例子。如果你在破规则,不要站在第一线。如果第一线被打中,趴下并待得比合理更久。
黑客里程碑:
我推荐“在25岁前不被逮捕、起诉或严重伤害”在列表上相当高。对40岁来说,“做出让你8岁的自己和80岁的自己骄傲的决定”是里程碑。之后,意识到你坐在需要认真维护的失效机器里。
黑客的“艺术”:
找到某物的意外用途,要么为了美,要么为了乐趣,要么为了实际效用/收益。
最爱
编程语言: 我这些天实际上喜欢 C++。斯德哥尔摩综合症。
Pwnie Award: 是的。我得过一个,终身成就奖,感觉像一辈子以前。
软件: 我爱 SoftICE。我爱 IDA。如今,我只想要一个编译器、vim 和玩耍的自由。
聚会: 荷兰黑客营地。HAL、HIP、WTF 等——每次我去,它们刷新我的精神并让我想再待久一点。
地点: 比斯开湾。西班牙北部。台湾东部。乌拉圭的 Rocha。葡萄牙。种子岛。
个人
其他兴趣:
我热切地在很多事情上很烂,但我非常热爱学习的过程。
引语:
“Theo,UNIX 里不再有 bug 了”——Duke 与 Theo de Raadt 大约2001年的对话,当时 Theo 试图考他 bug。
来源:
https://archives.phrack.org/dl/73/halvar-flake-prophile.pdf
推荐阅读
闲谈
美国网络政策与战略专题
- 独家解读新版《美国网络战略》释放的危险信号
- 首发 | 特朗普政府对华网络政策评估
- 首发 | 美国国防部网络战略的演变
- 美国政府网络政策观察(第一期) | 美国国防部将腾讯等中国公司列入\"涉军企业清单\"
- 特朗普上台,中美会发生网络战吗?
- 疯狂!美国安会网络官员扬言要对网络攻击者使用致命武力
- 美军新增10亿美元预算用于对华进攻性网络战
- 白宫闭门会议:授权美国私营部门进行网络攻击
- 特朗普政府正在推动授权私营部门进行网络攻击的法案!!
- 美国公司是我们需要重视的下一个网络威胁
威胁情报
1.威胁情报 - 最危险的网络安全工作
2.威胁情报专栏 | 威胁情报这十年(前传)
3.网络威胁情报的未来
4.情报内生?| 利用威胁情报平台落地网空杀伤链的七种方法
5.威胁情报专栏 | 特别策划 - 网空杀伤链
6.以色列情报机构是如何远程引爆黎巴嫩传呼机的?
7.对抗零日漏洞的十年(2014~2024)
8.零日漏洞市场现状(2024)
APT
- XZ计划中的后门手法 - “NOBUS”
- APT研究顶级会议
- 十个常见的归因偏见(上)
- 抓APT的一点故事
- 揭秘三角行动(Operation Triangulation)一
- 闲话APT报告生产与消费
- 一名TAO黑客的网络安全之旅
- NSA TAO负责人警告私营部门不要搞“黑回去”
- 我们为什么没有抓到高端APT领导者的荷兰AIVD
- 抓NSA特种木马的方法
- 美中央情报局(CIA)网络情报中心
入侵分析与红队攻防
天御智库
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论