风之栖息地

一个双非安全菜鸡的秋招总结

字数统计: 5.3k阅读时长: 18 min
2021/12/08 Share

前言

师兄们曾在牛客上总结了自己的秋招,在反复阅读的过程中深受鼓舞,所以在我的秋招基本告一段落之后也是选择记录下来,为社区贡献一点微薄之力。

同时,网上的安全相关面经特别稀少,想要找人交流又无从下手,很多时候只能依靠师兄师姐学长学姐们提供的信息。希望借此机会与安全圈的师傅们一起愉快交流。

求学经历

回顾这一段经历,想起一句话:上帝为你关上一扇门的同时,也会为你打开一扇窗。

早在大三的时候就对这里有所了解,不过当时是在另外一个实验室中,最初的感受是这里环境的高大上,有厉害的学长和畅聊技术的良好氛围。然而世事难料,当时考研遇到了名额缩减,不是20%,30%这种程度的缩招,是直接没了80%+。被这种情况吓到的我赶紧联系了现在的实验室,在发送意向邮件之后,意外被实验室三巨头+某钦定继承人四人环绕提前进行了一次小面试,面试之后心中顿时踏实了不少。在复试过后不久,确认了拟录取通过,心中的一块石头终于落地,我还开心了好几天,但这种快乐并没有持续多久。

从大四毕业来到这里之后,除开研一短暂的快乐就是各种杂活,有跟着师兄做电网协议的文档,做工控的外包项目,也有被叫去写书,去某部队做测试等。有上面的这些事情之外,还有各种杂七杂八的文档,最要命的是文档还会反复修改,导致最后变成同样的内容一直改格式,一会儿是这种排版,一会儿还要换成另外一种,最后又tm换回去;另外一个问题是这里管理混乱,每个事情都是临时通知,快要到ddl才会通知你去做,全然不管你那个时间段有没有空。诸多琐事混杂在一起,自己也抑郁过一段时间,好在研二时接触到C师兄的项目,给我指明了一条道路,这算是在某实验室中少数能学到东西的项目了,也因为接手这个项目让我的秋招简历更加丰富。所以在遇到让你苦恼的环境时,也要积极的去寻找机会。

就算身处绝境,面对残酷的现实,也能够坦然接受,并且还能鼓起勇气,与之顽强斗争,这就是黄金精神

方向选择

由于我的实验室是做物联网安全方向的,在做的几个项目也都是和这个有所联系,同时也是我个人十分感兴趣的方向。其次,物联网安全是信息安全领域中的偏门方向,竞争不会特别激烈,比较适合我这种中途换方向的人。但这个方向也有一点问题,那就是岗位特别少,本身信息安全就是互联网中岗位较少的一类了,物联网安全又是信息安全中的小方向,那自然能选择的岗位就更少了。

结合自身实际情况之后,毅然选择物联网安全方向作为我的秋招方向。

面试准备

结合秋招的面试,总结出面试需要准备五个方面的内容,这些内容同样适用于其他的信息安全方向。

  1. 安全相关的项目
  2. 挖掘/分析过的漏洞
  3. 参加过的安全类比赛
  4. 安全相关的知识
  5. 其他计算机基础

其中前三个部分,尽量有要有自己的亮点,三个中有一个比较出色就能拿到大多数公司的offer;有两个很出色基本上能收割所有公司的安全岗offer,且有一部分sp;三个都十分优秀,你就是大佬,sp和ssp拿到手软。

项目

安全相关的项目大致分成两种不同的类型:

  • 攻击相关项目(漏洞挖掘、漏洞验证、漏洞利用等)
  • 防御相关项目(安全加固、攻击识别、后门检测等)

项目中要有特色、有亮点的地方,比如你做的东西和行业中其他的工具对比有什么优势,解决了什么问题等。在项目深挖的阶段中,肯定也会问你在项目中遇到的难点,最后如何解决的,项目还存在什么改进空间和改进方向,以及为什么不采用其他思路等等。

对于项目的细节一定要知根知底,面试的过程中随时可能会问道一些实现的思路和细节,所以在面试之前一定要把之前做过的东西再过一遍。在讲项目的时候可以先粗略的讲,如果面试官有意向继续深入交流再详细说说。

漏洞

在安全类的面试中经常会问道你挖掘过/分析过什么漏洞,我并不是这方面的大神,常常只能回答一下曾经复现过的一些CVE和pwn2own上的一些漏洞。在挖掘真实目标上,只挖过一些路由器设备,这些设备整体思路比较简单,一般是攻击面分析,找到关键网络服务进行分析,研究对应服务的二进制程序;其次是web接口上的功能点问题,有可能导致xss和命令注入等问题。

比赛

安全类的比赛通常有四种:

  • CTF(解题、攻防、战争分享【互相出题来做】)
  • 渗透同一套环境,各个队伍环境是隔离的
  • RealWorld比赛
  • CGC类的机器人攻防赛

大多数人都是打CTF,但随着CTF越来越正规,整体难度直线上升,需要选手有快速学习和快速信息检索的能力,平时的知识积累也同样重要,奈何自己太菜平时练题也少,CTF没有什么成绩(哭唧唧)。如果想在竞赛中获得一定的名次,建议先从小比赛开始入手,这样会有一定的成就感,大型的比赛例如TCTF这种,可以尽力去做等赛后去复现其中的题目。

其他几种类型比赛,渗透的类型适合专门做web和内网的同学去参加,CGC类比赛通常是实验室组团参加(没实验室支持,单靠个人很难有好的名次),RealWorld就留给大佬们去秀了,各大安全公司还有各高校研究机构的大佬们的舞台。

安全知识

安全方向多种多样,每一种方向所需要准备的东西都不尽相同,这里只列举物联网安全和软件安全方向要准备的内容。

二进制类的安全

工具

IDA、GDB、Ghidra等,最好了解IDA和GDB的基本原理,比如IDA是递归下降分析算法,GDB是线性扫描分析。GDB的调试原理,attach原理等。要掌握一定程度的IDA和GDB脚本,能编写小脚本辅助分析。

漏洞分析

学习漏洞分析文章并复现历史漏洞,可以让你学习到漏洞的发现,调试到最后利用整个流程。操作一遍下来能学到很多文章里没有的细节点,而且能加深你学到的内容。面试的时候也有很大概率会问你分析过什么样的漏洞,以及如何分析的。

漏洞挖掘

在我们拿到目标设备或软件时,如何分析它的攻击面,又有哪些容易攻击的点。换句话说,就是要知道我们的目标能提供哪些功能,而这些功能又存在着哪些隐患。只有了解目标,才能更好的去挖掘目标中的漏洞。这些可以参考目标的历史漏洞,从中能知晓目标哪个模块容易出现问题。

漏洞利用

比较基础的漏洞利用包括Linux平台下的用户态栈溢出,格式化字符串,堆相关的漏洞利用。在IoT里面还需要掌握其他架构的利用(ARM、MIPS等),但总体上的思路和x86是类似的。其次,最好有对真实设备或程序的漏洞利用经验,与CTF不同真实环境下的漏洞利用往往有其他的干扰因素,比如某些路由器的web服务有动态认证,还需要绕过认证才能触发漏洞。

除了IoT,还有其他的热门目标,各种浏览器,各种文件解析器(word、excel、ppt、pdf阅读器、图片查看软件等),各种内核等等。(希望以后我也能挖这些 5555)

防御机制及其绕过

熟悉各种防御机制,包括:堆栈不可执行(NX)、地址随机化(ASLR)、栈cookie(canary)等。知道这些机制的作用和原理,能限制哪些攻击,又有什么绕过的方法,还能怎么改进防御。

web类的安全

由于物联网的特点,里面还是有部分web安全的内容需要掌握学习。

web漏洞利用

SQL注入的几种基本类型都要了解掌握,有输出的,有报错的,没有输出盲注的,能够二次注入的,带外传输数据等等。存在危险字符过滤的情况怎么进行绕过,有一些基本的替换思路。除了基本的select注入的情况,还有其他几类,insert/update注入,order by注入等。

XSS三种类型,反射,存储,dom全看一遍了解掌握基本的一些情况即可,物联网设备中的XSS都是一些很简单的情况。

web漏洞防御

针对SQL注入的防御,通常看场景,一般用黑名单,预编译,转义特殊字符等方法。针对XSS攻击的防御也同样要看场景,有用纯前端渲染,转义HTML,开启csp保护等等。

IoT特色

参考OWASP TOP10

  1. 弱密码或者硬编码密码
  2. 不安全的网络服务
  3. 不安全的系统接口
  4. 缺少安全的升级机制(对固件没有check,缺少对回滚的保护。。。)
  5. 使用不安全的/过期的组件
  6. 不充分的隐私保护
  7. 不安全的数据传输和存储
  8. 缺少设备管理
  9. 不安全的默认设置
  10. 缺少物理加固

https://wiki.owasp.org/index.php/OWASP_Internet_of_Things_Project

IoT相关工具使用

烧录夹,编程器,热风枪,电洛铁,万用表等工具。烧录夹有些时候能直接读取到flash芯片中的固件数据,在获取不到的情况下可以用热风枪把芯片拆下来放进编程器中读取。电洛铁把拆下来的芯片再次焊接回去,推荐使用恒温电洛铁,那种便捷性的用着不方便。万用表可以确定板子上的串口位置,方便我们后续的调试或者dump固件。

固件提取方法

  1. 官网下载
  2. 找客服社工
  3. 升级时抓包,看下载链接
  4. 用烧录夹直接读flash芯片,有一定概率能读出来
  5. 拆flash芯片,在编程器中读
  6. 找板子上的调试接口,连上去之后dump内存
  7. 在网上商店有一定概率能购买到

通用基础知识

擅长的编程语言

面试中有可能会问及擅长的编程语言,我觉得程序员至少要熟悉两门语言,一个编译语言+一个脚本语言,我选择的是C+Python的组合。这个时候面试官会问这些语言相关的问题,比如C语言中static会用在哪里,Python中的内存管理机制。

编程能力

安全类的岗位现在普遍不再需要考算法题,但仍然有一部分公司会考察,比如:字节、华为、vivo。所以刷一刷基础和中等难度的算法题还是很有必要的。我是用的codetop平台来刷一些热门算法题,再学习labuladong的算法小抄来加深对算法的理解。编程语言选择自己最熟悉的即可,没必要强迫自己选Java。

面经汇总

在秋招中一共投了14家,其中9家给了offer(ps. 本来深信服也有的,但是我忘记参加hr面了,23333),最后6家sp,3家白菜。

绿盟

1面 25min

  1. 项目1中的协议分析,协议逆向问题
  2. 工控中的fuzz攻击面
  3. 项目中的ida脚本的使用
  4. 印象最深的复现漏洞
  5. MIPS架构中的流水线处理(一般来说会先执行赋值操作再进行跳转)
  6. 获取国外信息的来源 (Twitter+玄武的整合数据等)
  7. 会有针对文章复现漏洞吗?
  8. 反问?

介绍了一下绿盟这边IoT主要做的事情,听了之后以下几点吧。然后他们居然还有专门打比赛的人。。。我觉得还是研究真实设备好。

2面 20min

全程在问项目的相关问题,但也没有问的特别细致。。。感觉是个领导。然后问了我对绿盟怎么看?对格物实验室怎么看?

360

1面 30min

  1. IoT设备的攻击面与攻击思路
  2. 最近有关注什么议题——Nas设备的攻击思路
  3. 二进制里面栈溢出的利用,有没有利用的可能
  4. 二进制中的堆利用方法
  5. 怎么利用堆泄露信息(在tcahce中用cmalloc的方法就不会有初始化)
  6. 问能不能实习
  7. 问了一些web方面的漏洞利用,比如变量覆盖
  8. 本科时候做web安全相关的内容,php版本的变化
  9. 一些本科时候做的事情,做了怎么样的web题目

2面 15min

直接就是hr面了。。。。也不知道是什么情况。。政企安全,最后我想问是哪个实验室,也没正面回答我。。。最后还是问了360的师傅才知道是vulcan。

奇安信

1面 30min

  1. 间接跳转怎么恢复的?(如果是回调的方法怎么处理?)
  2. 如果是遇到复杂的数据结构该如何处理?
  3. ARM架构的栈溢出漏洞利用和MIPS的区别?(我回答的是叶函数的区别)
  4. 复现过的漏洞讲一个
  5. 如果给一个高难度目标设备,怎么去分析?(学习历史漏洞,归纳出容易出现问题的部分重点关注)
  6. 反问

给了我的一些非常实用的建议,中间老板还来干扰我。。。幸好面试官人不错。

2面 20min

  1. 固件分析项目中的效果如何?
  2. 介绍实验室情况

似乎是一个领导,没怎么问问题就这样了。。。只稍微了解了下情况,居然问了我导师是谁?霍玮还真有名。

主要目标是有商业宣传效果的大漏洞。通常是人工审计的方法,windows和linux都有,开源的也有,cisco和华为,也有公司的产品。主要根据个人的方向来决定。

hr面 15min

  1. 为什么选择北京?是否家里有亲戚在这里
  2. 未来的职业发展方向
  3. 其他公司的投递情况,这个hr很了解信工所呀,知道有很多师兄都去了华为 23333
  4. 问了点项目中的基本情况
  5. 预期薪资

hr姐姐的电脑摄像头有问题,导致没办法用牛客网的链接,哈哈哈,可惜看不到样子了。总体感觉还是很满意的。9月中旬会给意向书。

深信服

1面 45min

  1. 项目介绍
  2. 挑战应答过程的细节点
  3. 固件分析二进制的背景,最后完成的效果
  4. 路由器固件漏洞分析调试问题,如何追踪路径,以及确定触发这个漏洞点
  5. 密码学中的DES和AES的区别?AES的密钥长度和DES?四种块加密方式的区别 ?哪种最常用?

问的好细。。。而且问到了我写上去的密码学相关的内容。。。。我应该再复习复习的。比如 密钥的长度问题。。。

2面 25min

  1. 项目介绍
  2. 项目中遇到的难点,最后是怎么解决的?
  3. 跟踪过什么github项目吗?
  4. Python的class是由什么对象创建的
  5. Python的垃圾回收机制
  6. 第二个项目是有几个人做的?我做了哪个部分
  7. 漏洞缓解机制?以及如何突破它们?
  8. 复现的比较有意思的漏洞

感觉还算不错,应该是个领导。

加面 25min

  1. 项目介绍
  2. 复现的漏洞
  3. 挖掘过的漏洞
  4. base地点
  5. 职业方向
  6. 有没有搞过windows相关的程序
  7. 固件加密之后怎么破解

没想到还是加面了。。。有点神奇。。。不过最后的hr面忘记参加了,23333。

大疆

1面 30min

  1. 固件签名怎么做?
  2. 对称加密和非对称加密的区别
  3. 讲讲AES加密算法
  4. 问问项目实现细节
  5. 分析过哪些固件,说一说怎么分析,怎么找漏洞
  6. 工控协议认证中的缺陷问题

大疆这边的安全部主要做无人机和安全产品方面的工作,还有从底层芯片到上层应用的安全测试。

2面40min

  1. 简单项目介绍
  2. 最有成就感的项目,哪些工作比较有亮点
  3. 针对项目介绍一个例子
  4. 溢出漏洞怎么利用
  5. 对大疆无人机有什么了解?怎么攻击?怎么做漏洞挖掘
  6. hash计算为什么要加盐
  7. mac和签名的区别
  8. 防御这一块做了哪些事情
  9. 漏洞挖掘中的前沿技术,有哪些团队在做
  10. 最近网络安全发生的大事件或者突破性的技术
  11. 未来三年的职业规划

是个小领导,我问了关于物联网安全未来的发展问题,他讲了大疆在安全对抗中做出的成绩,比如在禁飞区的对抗上,摄像头的安全,与社区的破解对抗。

3面 25min

  1. 简单介绍自己研究的方向
  2. 对大疆的了解
  3. 平时的兴趣爱好
  4. 对哪些电子产品感兴趣,以及自己对电子产品的理解
  5. 对无人机如何做攻击
  6. 反问

hr面是一个中年老男人,头发稀疏。。。有点害怕,但人还是很和蔼,我能感觉到他通过面试记录知道我不太了解他们公司的产品,所以我着重的又去看了一遍他们的官网,没想到果然问了,2333。比较有意思的一点,我反问了为什么他们做安全的团队会在上海而不是在深圳的总部,原来是因为历史遗留的问题,导致上海的安全部门都在上海发展。

华为

1面 60min(主要是写题写了30min都没写出来。。。。)

  1. 项目介绍,以及项目中的细节点
  2. double free如何利用
  3. 内核层中进程间通信怎么实现的
  4. 内核中对打开文件在进程中如何共享
  5. 你最熟悉的语言是什么?对C++的掌握程度

考了一道前序遍历数的验证。。。他提示了半天,我差点就写出来了,最后他说什么引用计数。。。这说法太诱导性了。完全想偏。

2面 40min

  1. 项目介绍
  2. 堆溢出漏洞利用
  3. UAF漏洞利用
  4. 栈溢出漏洞利用
  5. IoT漏洞如何调试以及攻击面探测
  6. 动态分析了解的情况
  7. 静态分析了解的情况

考了一道括号匹配的题目,还好学长给我说过,要不然真的尴尬了。

3面 30min

  1. 询问学校的专业和技能掌握情况
  2. 未来的发展规划
  3. 针对ASLR如何绕过
  4. 针对PAC如何绕过
  5. 在CTF里面获得过最好的成绩是什么
  6. 老家在哪里?父母的工作情况
  7. 工作地点的选择,父母有没有反对
  8. 对华为的文化有什么了解?
  9. 科研中遇到的问题?最后怎么解决的?
  10. 对加班有什么看法?
  11. 除了安全,对其他方面还有什么研究
  12. 手上有哪些offer?华为给了你offer之后会怎么选择?如果华为的钱没那些公司高怎么办?
  13. 反问

这个主管人还很好,在最后还阶段介绍了华为的基本情况。

CATALOG
  1. 1. 前言
  2. 2. 求学经历
  3. 3. 方向选择
  4. 4. 面试准备
    1. 4.1. 项目
    2. 4.2. 漏洞
    3. 4.3. 比赛
    4. 4.4. 安全知识
      1. 4.4.1. 二进制类的安全
      2. 4.4.2. web类的安全
      3. 4.4.3. IoT特色
    5. 4.5. 通用基础知识
      1. 4.5.1. 擅长的编程语言
      2. 4.5.2. 编程能力
  5. 5. 面经汇总
    1. 5.1. 绿盟
    2. 5.2. 360
    3. 5.3. 奇安信
    4. 5.4. 深信服
    5. 5.5. 大疆
    6. 5.6. 华为