Summ3r 0f h4ck 2019:研究结果


今天,我们将在公司研究部门中分享第四次Summ3r 0f h4ck夏季培训计划的结果。


在过去的几年中,结果可以在这里找到: 2016,2017 。 审计部门在此处单独发表文章并在2018年发表联合文章。


因此,让我们从数字,事实和其他有趣的信息开始。


  • 来自俄罗斯和周边国家的76个申请
  • 10名入选候选人
  • 候选人代表萨拉托夫,加里宁格勒,顿河畔罗斯托夫,莫斯科,符拉迪沃斯托克,圣彼得堡,克拉斯诺达尔等城市。
  • 大学:SSU(以车尔尼雪夫斯基命名),BFU以I. Kant命名,南方联邦大学,HSE MIEM,远东联邦大学(FEFU),圣彼得堡国立技术大学,莫斯科技术大学 彼得大帝圣彼得堡工业大学N.E. Bauman,俄罗斯联邦内政部十字军东征。

在我部从7月15日至8月15日的培训期间,进行了以下主题的讲座:


  • 二进制应用程序和源代码中的漏洞搜索简介
  • 大型开源项目的静态安全性分析
  • 在逆向工程中恢复符号信息
  • 固件安全性(关于UEFI BIOS)
  • 介绍Ghidra二进制分析工具
  • 与KLEE,libfuzz,AFL分阶段
  • 第三方对微体系结构的攻击简介

其中一位学生还就“使用VMProtect的示例使用代码虚拟化进行保护概述”主题进行了内部演讲。 感谢大家提出有趣的问题,对演讲产生了浓厚的兴趣。 另外,值得注意的是,两个部门的学生都可以参加讲座并参加小型CTF,有关详细信息,请参阅审计部门的文章。


至于今年的话题,有:


  • 基于英特尔处理器硬件的跟踪器
  • lang语分析器插件
  • 赋予Pigaios
  • Uefi固件安全研究框架
  • 基于状态的API模糊测试
  • 对微控制器的侧通道攻击
  • 自动恢复功能名称的框架
  • 使AFL Phaser适应网络应用
  • 在Ghidra中反编译eBPF

值得注意的是,在处理主题的过程中,主题本身及其方向有时由于一种或多种原因而发生了演变和修改。 我们可以说所有人都很棒,并试图在此相当短的时间内压缩最大数量。 尽管最重要的是获得新的知识和经验(和约会)。


重要的是要了解我们的Summ3r 0f h4ck程序是一个培训程序,而不是实习程序(尽管为了简单起见,有人将其称为“实习”程序)。 在此过程中,这些家伙与导师一起做项目的主题,听讲座,解决不同的实验室,获得有关信息安全不同方面的各种技巧,当然还要回答他们的问题。


与往常一样,我们转向学生对他们在公司(他们想发布的月份)中的月份进行的不可编辑的评论。


迷你面试的问题是这样的


  1. 您为什么决定在Digital Security实习? 是什么吸引了您进入公司?
  2. 你喜欢实习吗? 特别令人难忘的是什么? 现实如何符合您的期望?
  3. 告诉我们您的任务。
  4. 您在实习期间从事的任务看起来有趣吗? 您有想做但失败的事情吗?
  5. 您准备好回到公司实习还是工作?

这是一些学生给出的一些答案


Novoseltseva Alyona



  1. Digital Security是俄罗斯信息安全领域的领先公司,拥有最大,最友好的反向器团队。 我一直想在精神上融入您附近的人的环境。 这里有真正的专业人士,很多东西可以向他们学习。 而且,在我地区,至少没有某种程度上与逆向工程有关的公司和社区。
  2. 我真的很喜欢实习。 最令人惊奇的是公司的经营氛围。 尤其是细心的人会同意我的看法-在员工的办公桌上,除了他们自己的想法和想法的笔记本上,没有一张纸。 这说明了很多,并且在我们的官僚世界中极为罕见!
    您将获得最佳的工作条件-安静,舒适,最重要的是人。 员工及其研究非常鼓舞人心。 我真的很喜欢与导师一起在一个项目中进行工作-我们日以继夜地解决了问题,我们一起寻找解决方案,并在工作解决时感到欣喜。 我很久没有经历过这种幸福了。 萨沙,科里亚-我向你鞠躬。
  3. 我的研究工作是在Sleigh中开发一种系统,该系统可将eBPF字节码转换为pCode,以实现反汇编和反编译的可能性。 有必要为Ghidra开发一个扩展,该扩展将允许反汇编和分解eBPF程序。 我必须精通Sleigh处理器规范语言,了解eBPF架构的功能以及eBPF程序与内核的交互作用,获得开发Ghidra扩展和使用Eclipse的经验,等等。
    任务成功完成! 该项目是公开可用的,并在Github上发布。 任何人都可以通过使用以下链接从资源库下载扩展程序集来测试结果。 可以在另一篇文章中找到更多详细信息。
  4. 是的,任务是复杂且有趣的,我真的很喜欢开发过程和团队合作。 我非常想研究程序自动分析和寻找二进制漏洞这一主题,它的符号执行更加深入,有趣。
  5. 非常高兴! 由于大学尚未学习几年,我将为下一次实习做准备! 工作-当然并且可能已经

链接到项目


布科夫斯基维克多



  1. 我决定在Digital Security实习,因为这家公司是我最喜欢的信息安全会议-ZeroNight的组织者。


  2. 实习陷入了灵魂。 一切顺利。 现实超出了我的期望的那种罕见情况。 我特别记得在实习的最后一天,他们是如何对公司的知识和心理能力进行测验的:),因为这次胜利,我收到了一盒饼干和一件T恤。


  3. 我的任务是使用Hex-Rays API为IDA PRO 7编写插件。 其中之一的任务是在一个特殊的表格(图1)中显示一些函数,这些函数包含一些功能,这些功能在研究人员看来是不安全的(不能绕开重言法)。 可能有人会说,该实习工作的另一个核心插件是使用支持信息从剥离的(-s)可执行文件中恢复功能名称。 在我的案例中,我们从传递给日志功能的参数中获取了功能的名称(图2)。



  4. 对我而言,任务绝非易事,只会激起人们对其执行的兴趣。 具有讽刺意味的是,我是有幸与三位策展人一起工作的少数幸运者之一。 最初,是Artyom向我介绍了这个主题,为Bitbucket准备了用于存储项目的工具,在Trello的董事会,具有最初的任务和目标,并且还介绍了如何使用Markdown标记语言。 然后,德米特里·埃夫多基莫夫(Dmitry Evdokimov)成为了我的策展人,最近他已经处理过功能名称的恢复工作,使我有了必要的想法,并更加深刻地揭示了这个问题。 好吧,采访我的人鲍里斯·琉丁(Boris Ryutin)成为了我的策展人,感谢我在这次实习中得到的帮助。 和他在一起,我已经收到了旨在获得期望结果的准确任务。 一切都以非常有力的步伐进行,我们计划的一切都得以执行,对此再次表示感谢。


  5. 我不确定实习的情况,因为在我看来这家公司工作太短了。 我想一直待在里面,所以是的,我准备恢复工作。



链接到项目: https : //github.com/o0Starley0o/HexRaysPlugins


希望保持匿名


  1. ZeroNights /是朋友
  2. 自然,我真的很喜欢它。 期望是合理的,甚至更多。
    值得注意的第一件事是我处理的主题。 我计划去看一些我不能(不会)在家做的事情,实际上,主题恰好与此相对应。
    尽管我不能说我花了很多时间在她身上,但我对结果和过程中所学到的知识完全满意(实际上-一周多一点,就得出了主要结果=)。
    我很高兴对任何问题都可以立即从导师那里得到答案(答案是“您想尝试/学习更多吗?”)。
    第二个是很多有趣的人,不仅来自员工,还有来自实习生的人,我们可以通过这些人来判断信息安全的未来。
    第三,渗透测试者对设置/服务容易受到攻击的机器进行了非常酷的选择(从带有机器人的xss任务,特权升级到顺序捕获域管理员)。
    每个人都被允许玩,接下来的两个星期这很有趣。 那些没有给予她足够的爱的人非常错误地估计了。
    第四-讲座,很高兴填补知识空白或为自己发现新事物。
    几乎所有的反向讲座都是非常认真的;渗透测试者分发食物并进行互动任务。
  3. 在SMM模式(ring-2)下删除执行轨道的任务。 您不能从特权较低的模式启用跟踪,需要SMM代码才能启用它。 自然,他不知道该怎么做。
    我们制作了一个补丁程序,并将其放入SMM中(为此必须升级UEFI),并且使用现有工具(WinIPT)我们能够记录代码在SMM中的执行方式。
  4. 现在有如此众多的技术,以至于不可能连续采用并尝试所有东西。 您总是需要一种激励或任务,使您看到新的事物。
    然后自然而然地出现了一个愿望:“我可以将这项技术用于我的任务吗?使用它会更容易/更有效吗?”
    因此,我对自己的主题感到满意。
    但是,值得将该项目至少带给原始的模糊测试者。 这是我在没有外部刺激的情况下无法尝试的事情之一。
  5. 无可奉告

哈巴罗夫·奥列格


  1. 我认为,在俄罗斯,在专业活动中使用逆向工程的公司很少,而使用逆向工程来发现漏洞而不用于病毒分析的公司则更少,数字安全和积极技术公司也更少。
  2. 如果您想成为转销商,而不是抽象的“信息安全专家”,实习将帮助您制定去向的指南。 我还记得那些相对简单的关于渗透测试的讲座和那些来自反向机构的沉重负担的讲座。
  3. 我的任务是完善Pigaios逆向工程工具。 通过比较,它的目标是在静态编译的二进制文件中找到开源库函数。 但是,我没有处理比较机制本身,而是对功能的这一部分进行了改进,该部分从源中提取了结构,类型,关联等的定义。 结果,我完成了这些元素的解析器,并增加了对使用make构建的项目的支持。 我决定不将这些改进集成到Pigaios中,而是创建一个单独的工具,因为相比于深入研究Pigaios代码,将其单独分解更容易。
  4. 我不能说我喜欢这项任务,但是它有助于增进对C代码的理解,并且由于有了这项任务,我了解到您可以在不了解编译器工程理论的情况下解析C代码,而只需使用libclang。 因此,我不太可能修改我的乐器。 如果有人愿意,我会尽量干净利落地写评论,并随处留下评论。
    多亏了反向者的演讲,我才意识到我想做的事,即动态二进制分析(模糊化,仪器化)。
  5. 如果将来我能够在Digital Security找到一份工作,我会感到很高兴,因为他们领域有很多专业人员。

链接到项目: https : //github.com/Barkhat26/decl-exporter


Zabelina玛格丽塔


  1. 我以前曾在另一家公司做过信息安全服务的实习生。 在那里,我不得不处理更多有关Web安全性的问题。 但是在CTF团队中,我总是解决反向任务,常常出于兴趣,我读到二进制攻击。 看到反向器是如何工作的,以及如何应对这些工作,对我来说变得很有趣。 另外,从内部查看DSEC也很有趣。
  2. 实习很好。 最重要的是,我喜欢这些讲座。 因为 几乎在您忙于项目的所有时间,都有机会分心并解决小任务,这使您耳目一新。 另外,我在巩固旧知识的地方学到了很多新东西。
    期望/现实相当巧合。
  3. 我处理过Clang Static Analyzer的检查器实现。 任务不是火箭,而是我可以申请论文的成就。 首先,我必须熟悉该工具,了解矿渣库的功能,并学习如何收集简单的测试检查程序。 进一步决定,我将采用整数溢出检测器的检查器的实现。 这种检查器的想法已在潜在的clang检查器列表中指出,我认为这很有用并且很受用。 我选择了AST分析和演员表验证的方法。 但是,这种解决方案仅确定潜在的溢出。 为了进行准确的验证,您可以使用污点分析和SMT求解器。 在lib中,没有现成的用于处理taint的工具,还有其他研究人员的开发,我以此为基础。 不幸的是,我一个月没能完成任务,但作为论文的一部分,我将完成该项目。
  4. 您将意识到以后将在实际工作中应用和有用的想法已经激发了对该项目的兴趣。 我想重写污点检查器,以便以后不仅可以在我的项目中使用它。
  5. DSEC团队非常出色,所有专家都很出色。 我会上班。 但是我不想再去实习,我认为导师很失望。 鉴于我们只有一个月,在正确的时间,我没有收到导师的反馈。 尽管我可以从经验丰富的导师那里得到答案,但我还是花了很多时间进行自我挖掘。 就算没有辅导,为什么我需要实习,我也可以在家中完成自己的项目。

链接到项目: https : //github.com/dR3m/IntOverflow-CSA-plugin


桑金·尼基塔(Sankin Nikita)


  1. Digital Security吸引了项目主题和以前实习参与者的反馈,以及许多员工撰写的有关Habré的文章。 总的来说,我从哈布雷(Habré)上的帖子中也了解了实习情况。 还有一种改变情况的愿望,在另一个城市完成了实习,并尝试了我主要工作中没有做过的项目。
  2. 实习没有按我预期的那样进行,主要是因为公寓租金未成功,这使我无法专注于项目并按时完成所有工作。 另外,起初令人尴尬的是,任务更多是关于编写代码而不是研究,但是这可能是期望与其他个人因素不匹配的问题
  3. 我们需要基于现有的Chipsec解决方案实施UEFI固件漏洞测试框架。 问题是很难维护chipsec代码,因此您必须在python 3.x中漂亮地重写所有内容,并可能添加一些新功能。
  4. 在任务中,对我而言,有趣的不是写代码,而是研究必须使用的技术。 我想完成项目直到HAL(硬件抽象层)阶段,并更详细地研究硬件设备及其接口的操作。 不幸的是,第2段中提到的原因阻止了这种情况,但是我计划在实习后继续该项目。
  5. 我准备返回实习岗位,以完成并展示当前项目,或者提出一个有趣的想法。 我肯定会认为该公司是在圣彼得堡开业的第一家公司,但是目前我不需要。

柯马罗夫·尼基塔(Komarov Nikita)


  1. 我一直关注Digital Security一段时间,从我第一次听说Zerozeros的那一刻开始,我认为只有一家非常出色的公司才能做到这一点。 并没有马上开始,但是注意到正在实习,但是起初我不能参加。 同年,我不经意间看到,在中心的广告海报上,是一个我不认识的朋友到达那儿,认为这是最终参加实习的好兆头。
  2. 事实证明,这确实很有趣,最重要的是,时间总是充满了一些东西。 我当然记得Wavebox的报告和服务。 实际上,我没想到会有那么多事情,每天晚上除了主要项目外,还有其他事情要做,这很好地稀释了气氛并承担了许多任务。
  3. 作为实习的一部分,我的任务是编写uefi安全测试框架。 这个话题很有趣,特别是考虑到这样一个事实,在普通活动的框架中,我还没有深入到这一抽象层次。
  4. 这些任务当然很有趣,很可能是因为我不得不学习很多新事物,或者早已被我遗忘为不必要的旧事物。 不幸的是,有些事情没有成功,但是现在有动力继续在该项目上工作一年。
  5. 我希望明年访问实习。 非常感谢

乌瓦洛夫·基里尔



  1. 我在Habré上阅读了该公司的博客。 因此,第一个选择是您可以从内部感觉到球体
  2. 我喜欢实习。 我非常喜欢这里的气氛。 我以前从未参与过安全性。 因此,我真的很想“用手”触摸一切。
  3. 参与了对微控制器上第三方渠道的攻击。 实施加密算法,能量分析和密钥获取。
  4. 任务非常接近我的兴趣,因此我很高兴地处理了这个话题。
  5. 多亏了实习,我知道该在哪里发展,所以我绝对准备好返回公司了:)

最后的话


在暑期课程中,也有不可抗力的情况,没有人可以安全,但是所有学生对此都以理解的方式做出了反应(对此,他们表示感谢),我们以铅笔形式考虑了这一点,以便将来将其最小化。


等待明年Summ3r 0f h4ck 2020的发布!


PS稍后,在许多人的项目中,我们将发表他们单独的技术文章。

Source: https://habr.com/ru/post/zh-CN466465/


All Articles