前言
师兄们曾在牛客上总结了自己的秋招,在反复阅读的过程中深受鼓舞,所以在我的秋招基本告一段落之后也是选择记录下来,为社区贡献一点微薄之力。
同时,网上的安全相关面经特别稀少,想要找人交流又无从下手,很多时候只能依靠师兄师姐学长学姐们提供的信息。希望借此机会与安全圈的师傅们一起愉快交流。
求学经历
回顾这一段经历,想起一句话:上帝为你关上一扇门的同时,也会为你打开一扇窗。
早在大三的时候就对这里有所了解,不过当时是在另外一个实验室中,最初的感受是这里环境的高大上,有厉害的学长和畅聊技术的良好氛围。然而世事难料,当时考研遇到了名额缩减,不是20%,30%这种程度的缩招,是直接没了80%+。被这种情况吓到的我赶紧联系了现在的实验室,在发送意向邮件之后,意外被实验室三巨头+某钦定继承人四人环绕提前进行了一次小面试,面试之后心中顿时踏实了不少。在复试过后不久,确认了拟录取通过,心中的一块石头终于落地,我还开心了好几天,但这种快乐并没有持续多久。
从大四毕业来到这里之后,除开研一短暂的快乐就是各种杂活,有跟着师兄做电网协议的文档,做工控的外包项目,也有被叫去写书,去某部队做测试等。有上面的这些事情之外,还有各种杂七杂八的文档,最要命的是文档还会反复修改,导致最后变成同样的内容一直改格式,一会儿是这种排版,一会儿还要换成另外一种,最后又tm换回去;另外一个问题是这里管理混乱,每个事情都是临时通知,快要到ddl才会通知你去做,全然不管你那个时间段有没有空。诸多琐事混杂在一起,自己也抑郁过一段时间,好在研二时接触到C师兄的项目,给我指明了一条道路,这算是在某实验室中少数能学到东西的项目了,也因为接手这个项目让我的秋招简历更加丰富。所以在遇到让你苦恼的环境时,也要积极的去寻找机会。
就算身处绝境,面对残酷的现实,也能够坦然接受,并且还能鼓起勇气,与之顽强斗争,这就是黄金精神。
方向选择
由于我的实验室是做物联网安全方向的,在做的几个项目也都是和这个有所联系,同时也是我个人十分感兴趣的方向。其次,物联网安全是信息安全领域中的偏门方向,竞争不会特别激烈,比较适合我这种中途换方向的人。但这个方向也有一点问题,那就是岗位特别少,本身信息安全就是互联网中岗位较少的一类了,物联网安全又是信息安全中的小方向,那自然能选择的岗位就更少了。
结合自身实际情况之后,毅然选择物联网安全方向作为我的秋招方向。
面试准备
结合秋招的面试,总结出面试需要准备五个方面的内容,这些内容同样适用于其他的信息安全方向。
- 安全相关的项目
- 挖掘/分析过的漏洞
- 参加过的安全类比赛
- 安全相关的知识
- 其他计算机基础
其中前三个部分,尽量有要有自己的亮点,三个中有一个比较出色就能拿到大多数公司的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
- 弱密码或者硬编码密码
- 不安全的网络服务
- 不安全的系统接口
- 缺少安全的升级机制(对固件没有check,缺少对回滚的保护。。。)
- 使用不安全的/过期的组件
- 不充分的隐私保护
- 不安全的数据传输和存储
- 缺少设备管理
- 不安全的默认设置
- 缺少物理加固
https://wiki.owasp.org/index.php/OWASP_Internet_of_Things_Project
IoT相关工具使用
烧录夹,编程器,热风枪,电洛铁,万用表等工具。烧录夹有些时候能直接读取到flash芯片中的固件数据,在获取不到的情况下可以用热风枪把芯片拆下来放进编程器中读取。电洛铁把拆下来的芯片再次焊接回去,推荐使用恒温电洛铁,那种便捷性的用着不方便。万用表可以确定板子上的串口位置,方便我们后续的调试或者dump固件。
固件提取方法
- 官网下载
- 找客服社工
- 升级时抓包,看下载链接
- 用烧录夹直接读flash芯片,有一定概率能读出来
- 拆flash芯片,在编程器中读
- 找板子上的调试接口,连上去之后dump内存
- 在网上商店有一定概率能购买到
通用基础知识
擅长的编程语言
面试中有可能会问及擅长的编程语言,我觉得程序员至少要熟悉两门语言,一个编译语言+一个脚本语言,我选择的是C+Python的组合。这个时候面试官会问这些语言相关的问题,比如C语言中static会用在哪里,Python中的内存管理机制。
编程能力
安全类的岗位现在普遍不再需要考算法题,但仍然有一部分公司会考察,比如:字节、华为、vivo。所以刷一刷基础和中等难度的算法题还是很有必要的。我是用的codetop平台来刷一些热门算法题,再学习labuladong的算法小抄来加深对算法的理解。编程语言选择自己最熟悉的即可,没必要强迫自己选Java。
面经汇总
在秋招中一共投了14家,其中9家给了offer(ps. 本来深信服也有的,但是我忘记参加hr面了,23333),最后6家sp,3家白菜。
绿盟
1面 25min
- 项目1中的协议分析,协议逆向问题
- 工控中的fuzz攻击面
- 项目中的ida脚本的使用
- 印象最深的复现漏洞
- MIPS架构中的流水线处理(一般来说会先执行赋值操作再进行跳转)
- 获取国外信息的来源 (Twitter+玄武的整合数据等)
- 会有针对文章复现漏洞吗?
- 反问?
介绍了一下绿盟这边IoT主要做的事情,听了之后以下几点吧。然后他们居然还有专门打比赛的人。。。我觉得还是研究真实设备好。
2面 20min
全程在问项目的相关问题,但也没有问的特别细致。。。感觉是个领导。然后问了我对绿盟怎么看?对格物实验室怎么看?
360
1面 30min
- IoT设备的攻击面与攻击思路
- 最近有关注什么议题——Nas设备的攻击思路
- 二进制里面栈溢出的利用,有没有利用的可能
- 二进制中的堆利用方法
- 怎么利用堆泄露信息(在tcahce中用cmalloc的方法就不会有初始化)
- 问能不能实习
- 问了一些web方面的漏洞利用,比如变量覆盖
- 本科时候做web安全相关的内容,php版本的变化
- 一些本科时候做的事情,做了怎么样的web题目
2面 15min
直接就是hr面了。。。。也不知道是什么情况。。政企安全,最后我想问是哪个实验室,也没正面回答我。。。最后还是问了360的师傅才知道是vulcan。
奇安信
1面 30min
- 间接跳转怎么恢复的?(如果是回调的方法怎么处理?)
- 如果是遇到复杂的数据结构该如何处理?
- ARM架构的栈溢出漏洞利用和MIPS的区别?
- 复现过的漏洞讲一个
- 如果给一个高难度目标设备,怎么去分析?(学习历史漏洞,归纳出容易出现问题的部分重点关注)
- 反问
给了我的一些非常实用的建议,中间老板还来干扰我。。。幸好面试官人不错。
2面 20min
- 固件分析项目中的效果如何?
- 介绍实验室情况
似乎是一个领导,没怎么问问题就这样了。。。只稍微了解了下情况,居然问了我导师是谁?霍玮还真有名。
主要目标是有商业宣传效果的大漏洞。通常是人工审计的方法,windows和linux都有,开源的也有,cisco和华为,也有公司的产品。主要根据个人的方向来决定。
hr面 15min
- 为什么选择北京?是否家里有亲戚在这里
- 未来的职业发展方向
- 其他公司的投递情况,这个hr很了解信工所呀,知道有很多师兄都去了华为 23333
- 问了点项目中的基本情况
- 预期薪资
hr姐姐的电脑摄像头有问题,导致没办法用牛客网的链接,哈哈哈,可惜看不到样子了。总体感觉还是很满意的。9月中旬会给意向书。
深信服
1面 45min
- 项目介绍
- 挑战应答过程的细节点
- 固件分析二进制的背景,最后完成的效果
- 路由器固件漏洞分析调试问题,如何追踪路径,以及确定触发这个漏洞点
- 密码学中的DES和AES的区别?AES的密钥长度和DES?四种块加密方式的区别 ?哪种最常用?
问的好细。。。而且问到了我写上去的密码学相关的内容。。。。我应该再复习复习的。比如 密钥的长度问题。。。
2面 25min
- 项目介绍
- 项目中遇到的难点,最后是怎么解决的?
- 跟踪过什么github项目吗?
- Python的class是由什么对象创建的
- Python的垃圾回收机制
- 第二个项目是有几个人做的?我做了哪个部分
- 漏洞缓解机制?以及如何突破它们?
- 复现的比较有意思的漏洞
感觉还算不错,应该是个领导。
加面 25min
- 项目介绍
- 复现的漏洞
- 挖掘过的漏洞
- base地点
- 职业方向
- 有没有搞过windows相关的程序
- 固件加密之后怎么破解
没想到还是加面了。。。有点神奇。。。不过最后的hr面忘记参加了,23333。
大疆
1面 30min
- 固件签名怎么做?
- 对称加密和非对称加密的区别
- 讲讲AES加密算法
- 问问项目实现细节
- 分析过哪些固件,说一说怎么分析,怎么找漏洞
- 工控协议认证中的缺陷问题
大疆这边的安全部主要做无人机和安全产品方面的工作,还有从底层芯片到上层应用的安全测试。
2面40min
- 简单项目介绍
- 最有成就感的项目,哪些工作比较有亮点
- 针对项目介绍一个例子
- 溢出漏洞怎么利用
- 对大疆无人机有什么了解?怎么攻击?怎么做漏洞挖掘
- hash计算为什么要加盐
- mac和签名的区别
- 防御这一块做了哪些事情
- 漏洞挖掘中的前沿技术,有哪些团队在做
- 最近网络安全发生的大事件或者突破性的技术
- 未来三年的职业规划
是个小领导,我问了关于物联网安全未来的发展问题,他讲了大疆在安全对抗中做出的成绩,比如在禁飞区的对抗上,摄像头的安全,与社区的破解对抗。
3面 25min
- 简单介绍自己研究的方向
- 对大疆的了解
- 平时的兴趣爱好
- 对哪些电子产品感兴趣,以及自己对电子产品的理解
- 对无人机如何做攻击
- 反问
hr面是一个中年老男人,头发稀疏。。。有点害怕,但人还是很和蔼,我能感觉到他通过面试记录知道我不太了解他们公司的产品,所以我着重的又去看了一遍他们的官网,没想到果然问了,2333。比较有意思的一点,我反问了为什么他们做安全的团队会在上海而不是在深圳的总部,原来是因为历史遗留的问题,导致上海的安全部门都在上海发展。
华为
1面 60min(主要是写题写了30min都没写出来。。。。)
- 项目介绍,以及项目中的细节点
- double free如何利用
- 内核层中进程间通信怎么实现的
- 内核中对打开文件在进程中如何共享
- 你最熟悉的语言是什么?对C++的掌握程度
考了一道前序遍历数的验证。。。他提示了半天,我差点就写出来了,最后他说什么引用计数。。。这说法太诱导性了。完全想偏。
2面 40min
- 项目介绍
- 堆溢出漏洞利用
- UAF漏洞利用
- 栈溢出漏洞利用
- IoT漏洞如何调试以及攻击面探测
- 动态分析了解的情况
- 静态分析了解的情况
考了一道括号匹配的题目,还好学长给我说过,要不然真的尴尬了。
3面 30min
- 询问学校的专业和技能掌握情况
- 未来的发展规划
- 针对ASLR如何绕过
- 针对PAC如何绕过
- 在CTF里面获得过最好的成绩是什么
- 老家在哪里?父母的工作情况
- 工作地点的选择,父母有没有反对
- 对华为的文化有什么了解?
- 科研中遇到的问题?最后怎么解决的?
- 对加班有什么看法?
- 除了安全,对其他方面还有什么研究
- 手上有哪些offer?华为给了你offer之后会怎么选择?如果华为的钱没那些公司高怎么办?
- 反问
这个主管人还很好,在最后还阶段介绍了华为的基本情况。