尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

奇安信2019校招笔试题(三)深度复盘:从安全思维到实战分析

奇安信2019校招笔试题(三)深度复盘:从安全思维到实战分析 作为一个参加过2019年奇安信校招笔试的人回头再看这套题感触还是挺深的。当时我走出考场就觉得这笔试跟市面上常见的刷题题库完全不是一回事。它不太纠结你背了多少漏洞CVE编号而是更在意你有没有一套完整的安全分析思路。现在很多学弟学妹找我要经验我都会先把这套三拿出来讲——因为它是三套题里最综合、最贴近真实安全运营场景的一套。这套题的名字叫奇安信2019校招笔试题三是当年校招笔试的第三场面向的安全工程师、渗透测试工程师、安全运营工程师等岗位。无论是科班出身的网络空间安全专业学生还是自学转行、想进安全厂商的年轻人都会在这套题里找到一些值得琢磨的东西。我印象最深的是它把很多零散的知识点串成了一条完整的分析链路你光靠死记硬背是过不去的必须在理解原理的基础上做推理。这篇文章我不打算逐题报答案而是把整个试卷拆开按考点模块复盘讲清楚每类题目背后的考察意图和作答思路。你如果正在准备安全方向的技术笔试可以参考这个框架来查漏补缺如果你已经工作了也可以看看当年的考题思路和现在实际做安全运营的差距在哪里。1. 2019年校招笔试的整体印象这套三考了什么先说结论奇安信这套笔试题的第三场整体难度中等偏上但它的难不在于偏题怪题而在于信息量大、综合性极强。卷面大概分成了四个板块——网络基础、Web安全、密码学以及系统安全与应急响应最后的综合分析题还会把几个知识点揉在一起模拟一个真实的安全事件场景。当年我拿到卷子时第一感觉是怎么没有纯记忆题。很多公司笔试喜欢考某某端口对应什么服务、某漏洞披露年份这类题目但这套卷子从选择题开始就在给场景比如给你一段混合了HTTP请求和返回包的内容问你漏洞类型。也就是说差不多每个知识点都要在具体场景里应用一遍记性再好不理解原理也会卡壳。从考点分布来看网络基础部分约占25%Web安全占比最高接近40%密码学约占15%剩下的是系统安全和应急响应类。这其实也反映了奇安信作为老牌安全厂商的人才筛选逻辑——Web安全是当时攻防对抗的核心战场笔试压重比例在情理之中。另外2019年正是攻防演习快速普及的节点整套题里反复出现的如何在流量中找异常如何判断主机是否被入侵这类命题思路明显带着实战化选拔的痕迹。还有一点值得注意这套题是三意味着它前面还有两套。从第三套的难度和风格来看它更像是对前三轮知识点的总复习和拔高很多考点前两轮已经考过基础概念到第三轮就开始考综合运用。如果你想冲刺这种大厂安全岗笔试建议把多套卷子放在一起看不要只闷头刷单套。当时我身边不少同学就是这么干的——第一套过了基础关第二套练了手感和速度第三套才真正开始体会原来安全笔试是这么设计的。2. 网络基础题详解TCP、DNS与HTTP背后的安全思维2.1 三次握手与TCP状态机的隐藏考点网络基础部分有一道关于TCP三次握手的综合分析题让我比较难忘。表面上看它是一道很标准的流程题客户端发送SYN服务端回复SYNACK客户端再回ACK。但题目的第二问直接给了一个异常状态问如果客户端在第二次握手后就不回应了服务端会持续处于什么状态以及这个状态对安全有什么影响。这就是典型的从安全视角看网络的思路。正常的计算机专业考试问你三次握手的状态名、序号和确认号变化就结束了但这道题引导你往半连接队列SYN Flood攻击原理这些方向想。作答时需要写出服务端会进入SYN_RCVD状态并且会重传SYNACK如果一直得不到ACK连接就会停在半连接队列里大量这样的连接堆积会耗尽系统资源。这里我当时的作答思路是三步先答标准状态机再答异常引发的现象最后落到安全危害和缓解措施。这种现象—原因—影响—对策的答题结构在这套卷子里几乎通用后面Web安全和应急响应的大题也都是这个套路。如果你也想准备类似的笔试我建议复习TCP时不要只看三次握手的正常剧本最好连超时重传、半连接、端口扫描的常见特征一起看这才是安全岗要的深度。2.2 DNS解析过程不只是递归和迭代DNS这部分的考题也很有意思。选择题给了一个场景企业内网某台终端访问域名时出现间歇性失败排除了网关和防火墙问题问你最可能的原因是什么。选项里有本地DNS缓存污染、递归服务器故障、DNS over HTTPS未生效等。这道题考察的核心是DNS解析的完整链路同时也在考你有没有实际排障经验。正确的分析顺序应该是终端先查本地hosts文件和浏览器缓存再查系统DNS缓存然后才发起递归查询到配置的DNS服务器。间歇性失败通常指向缓存过期、TTL配置不一致或者上游递归服务器有节点异常而不是单纯的断网。我当时选了与缓存和TTL相关的选项后来对比网络抓包的结果发现判断方向是对的。安全岗学DNS比起网络工程师还得多想一层DNS是攻击面也是检测面。比如DNS隧道、域名恶意解析、DNS劫持这些概念在这套卷子的选择题里都有涉及。复习的时候不能只背递归查询和迭代查询的区别要顺带了解DNS报文结构、常用记录类型、缓存投毒的基本原理否则容易在偏安全视角的题目上丢分。2.3 HTTP状态码与请求走私的前奏HTTP在网络安全笔试里几乎是必考的。这套题对HTTP的考察不算难给了几个状态码让分析含义然后有一个关于请求方法的小题。不过细心看会发现它也埋了伏笔——有一道材料题给出了两个Content-Length不一致的HTTP请求问可能出现什么安全问题。这个点在当时看来可能偏前沿但放到现在就很好理解了——HTTP请求走私。CL.TE、TE.CL这类问题在2019年已经开始被安全研究者重视奇安信把这种思路放进校招题其实是想筛选出真正对协议层安全有敏感度的学生。你如果只停留在GET和POST的区别这个层面这道题基本拿不到分。我的建议是复习HTTP时至少要掌握三块常用的状态码及其语义尤其是301、302、403、404、500、请求方法的安全语义GET不应该改状态、PUT/DELETE的滥用风险、头部字段的解析歧义问题Content-Length和Transfer-Encoding的冲突。这三块不光是做笔试题有用面试聊到协议安全时也是高频话题。3. Web安全核心题SQL注入、XSS与CSRF的三层递进3.1 SQL注入从能不能注到怎么利用Web安全部分占分最高SQL注入自然是重头戏。这套卷子里的SQL注入没有考老掉牙的用单引号报错判断注入点而是给了一段完整的PHP代码和对应的数据库查询逻辑让你分析注入点可能存在的位置。我记得代码里有一个搜索功能把用户输入直接拼到了LIKE子句里且没有做参数化处理。题目第一问是判断注入点第二问是写出一种获取当前数据库名称的方式。这里除了基础的union select还需要知道MySQL的information_schema库以及group_concat函数的基本用法。作答时我刻意把步骤写完整注入点判断、字段数猜测、报错信息获取、union查询、读取元数据。每一步都尽量说明原理而不是只写一句存在SQL注入漏洞。这种大题的评分标准往往不是看你最终有没有拿到flag而是看你的利用思路是否闭环。哪怕你只知道原理但没写出完整payload只要把这个思路梳理清楚了也能拿到大部分步骤分。这一点对现在备考的人来说特别重要——不要只背payload模板要理解每个步骤在做什么。3.2 XSS反射型、存储型与DOM型的区分XSS考察题给了三个不同的场景一个是在URL参数里直接弹出alert一个是评论区的payload在刷新后仍然存在还有一个是前端JavaScript代码从location.hash取值后插入到innerHTML。题目让你判断分别属于哪种XSS类型并写出检测方法。这道题说难不难但区分度很好因为它考察的是你有没有真正理解XSS的触发位置和存储位置。反射型的核心是参数值直接出现在响应里存储型的核心是payload被持久化到服务端任何用户访问都会触发DOM型的核心是纯前端DOM操作导致的服务端响应里根本看不到payload。这三个特征如果混淆做题就会做错。我还记得卷子里有一小问问到HttpOnly能不能防御所有XSS答案是不能因为HttpOnly只限制document.cookie的读取对利用fetch发请求、键盘记录、页面篡改这类攻击路径并没有直接作用。这种题目看似在考单个知识点实际上是在考你对XSS危害链的整体理解。3.3 CSRFToken与SameSite的边界讨论CSRF在2019年的校招题库里不算少见但这套题的角度有点新意。题目描述了一个含转账功能的站点转账请求是GET方式且没有Token校验然后问你如果改成POST能不能解决CSRF以及加上Referer校验能不能彻底防住。这题的考点其实是你理解CSRF的本质吗。改成POST只是提高了攻击者构造请求的门槛但攻击者完全可以自己写一个表单用POST提交Referer校验也是个经典坑因为有些浏览器在某些场景下不会发送完整Referer甚至可能被绕过。真正的防线是CSRF Token、SameSite Cookie属性、以及关键操作的二次校验。我当时答卷的思路是先把CSRF的触发链路画出来用户已登录、会话未过期、目标站点无Token校验、攻击页面发起跨站请求。然后再对每个方案做评判。这种从链路视角切入的答题方式在做安全分析题时特别好用后面应急响应大题我也用了同样的框架。4. 密码学与认证体系不只是记住AES和RSA的区别4.1 哈希算法MD5为什么不该用于口令存储密码学板块的题量不大但每道题都在引导你去想这东西在实战中怎么用。第一道题给了三个哈希值分别是MD5、SHA-1和SHA-256对同一段数据计算的结果题目不会直接告诉你算法名而是给摘要长度和特征问你分别对应哪种算法以及哪些已经不适合用于口令存储。这道题对熟悉哈希长度的人基本是送分题——MD5是128位摘要、32位十六进制SHA-1是160位、40位SHA-256是256位、64位。但第二问更重要为什么MD5和SHA-1不再推荐用于口令存储答案不只是因为碰撞攻击更关键的在于它们速度太快、容易被暴力破解再加上彩虹表和字典攻击的配合弱口令几乎秒破。正确的口令存储方案是加盐慢哈希比如bcrypt、scrypt、PBKDF2。当年我看到这道题时还联想起一些行业里遗留的老系统仍然用MD5存口令这从笔试角度来说是个很好的延伸话题能在面试时主动聊出来会让面试官觉得你有真实项目感知而不只是会考试。4.2 对称加密与非对称加密用在哪里的问题对称加密与非对称加密那道题倒是很典型问AES和RSA各自的应用场景以及二者如何配合。但第二问有深度在HTTPS握手过程中ECDHE密钥交换和RSA密钥交换有什么区别为什么前向保密性更受重视说实话这道题对很多只背概念的人是个打击。因为能说出HTTPS用对称加密传输数据用非对称加密交换密钥只是第一层理解TLS握手里的临时密钥、会话密钥派生、前向保密才是安全岗需要达到的层次。关键是要回应CDHE在每次握手时都会生成临时密钥对即使服务端长期私钥泄露历史通信内容也无法被解密而RSA密钥交换如果服务端私钥泄露攻击者可以解出之前的预主密钥。复习密码学我的经验是不要死记算法的年份和密钥长度而是抓住这套机制解决什么问题、如果不这么做会怎样。TLS1.3放弃RSA密钥交换改为强制前向保密就是一个非常好的话题切入点既能当笔试题又能当面试聊天话题。4.3 数字签名与证书链信任模型的建立数字签名与证书链的题目主要给了数字签名用来保证什么的选项以及一道关于CA信任链的分析题。题干是一个浏览器访问站点时提示证书不受信任可能的原因有哪些让你判断哪些说法合理。这道题的考察点有两个层次。第一层是基础概念数字签名保证的是完整性和不可否认性不负责保密性。第二层是实际场景证书不受信任可能是证书由自建CA签发、证书链不完整、服务器没有正确配置中间证书也可能是系统根证书库过旧。如果只背证书就是加密的这种概念看到这道题就懵了。我当时扩展写了一段关于证书验证顺序的内容先验证证书有效期再验证签名链是否能追溯到受信任的根证书然后检查域名是否匹配最后再看是否被吊销。这样写自己心里也很踏实因为哪怕选项里有细微的干扰项我能按链条把每个环节对一遍不容易被带偏。5. 系统安全与日志分析题应急响应的实战推演5.1 Linux文件权限suid、属主与异常提权系统安全部分给我印象最深的一道题是关于Linux文件权限的。它给出了一个find / -perm -4000的排查背景问为什么安全人员要关注SUID文件。原因是SUID权限会让普通用户以文件属主身份执行程序如果某个SUID程序存在漏洞就可能被用来提权。这道题还有一个小的陷阱选项写的是SUID文件只能由root用户执行——这是错的。SUID的作用是改变执行时的有效用户ID并不是限制执行者身份。这就提醒我们准备安全笔试时不要按普通运维的思路去理解权限要按攻击者如何使用这个权限的思路去想。一个常见的排障技巧就是定期审计SUID文件的变动先通过find / -perm -4000 -type f建立基线再定期对比文件列表和哈希值出现新增项就重点排查。5.2 日志分析从/var/log/secure里揪出暴力破解日志分析题占比不高但方向很明确结合了日常安全运营的真实工作。题干描述某台Linux服务器的/var/log/secure日志里出现大量Failed password for root记录并且来自同一IP问你应该怎么处理。这题的精髓在于回答时不能只说封IP、改密码而是要分出紧急处置和根因分析两个阶段。紧急处置包括临时iptables或firewalld屏蔽来源IP、禁用root远程登录、检查是否已有其他入侵痕迹。根因分析则要回看日志时间线判断暴力破解是否成功过一次同时检查/var/log/wtmp和last命令输出确认有没有异常登录会话。如果你有实际运维经验还能补充一点不要只盯着SSH日志看看auth.log、shell history、计划任务、启动项有没有被改动。这套题虽然不会把每个文件都列出但你在答案里体现出这种多点排查的意识得分观感会明显好很多。5.3 Web服务器日志从访问日志还原攻击路径Web日志分析那道题给了一段Apache访问日志里面有大量包含union select、../etc/passwd、script的请求。题目问这次攻击最可能是哪种类型攻击者有没有成功以及你还需要结合什么证据来下结论。它实际上考的是从攻击者视角还原攻击链的能力而非单纯判断某条请求是不是恶意。作答时我按时间线把日志里的请求分成了几个阶段侦察阶段大量目录扫描、漏洞探测阶段SQL注入payload试探、利用阶段出现into outfile写文件的请求。然后我指出仅凭现在的Web日志只能证明攻击者发送了攻击请求不能证明请求是否真正到达了数据库层还需要数据库查询日志、应用报错日志和文件系统里有没有新增文件来印证。这种思路在笔试里非常加分因为它展现的不只是单项技能而是一套事件分析方法论。这类大题往往没有标准答案评卷人看的就是你有没有形成完整的分析闭环。6. 综合分析题模拟一次企业内网入侵事件的作答框架6.1 题干给的核心线索这套笔试题的最后是一道综合大题占分最高。题干大概描述了一个企业内网场景安全巡检发现某台Web服务器对外连接异常请求了一个外部域名且本地计划任务里多了一个脚本脚本内容会向远程IP发起连接。题目还附了这样几样信息一段Web访问日志的节选、一份系统计划任务列表、一个可疑脚本片段。它不直接告诉你这是中了什么马或者这是哪种攻击而是要求你作为安全工程师给出事件的分析思路和处置建议。这种出题风格其实就是在模拟真实的安全运营工作——你面对的不是一个被贴好标签的样本而是散落各处的线索需要你自己把它们串起来。6.2 我是怎么组织答案的我当时把答案拆成了四块事件定性、传播路径猜测、处置步骤、加固建议。事件定性方面我结合计划任务里的脚本和外部连接行为判断这是一条典型的命令控制回连特征。Web服务器作为入口点失陷后攻击者通过写计划任务实现持久化再主动回连外部C2地址。这个判断要说理充分不能一上来就说中了木马。传播路径方面我回看了Web访问日志找到了一条可疑的上传请求从时间线上看正好在计划任务脚本创建之前。我写的是初步判断攻击者通过Web应用漏洞上传了WebShell再用WebShell执行命令写入计划任务。用初步判断这样的措辞既表明你有推断能力又体现你理解证据链还不完整需要继续验证。处置步骤方面我写了先断开服务器外网连接或限制回连IP避免进一步数据外泄和横向扩散然后保留现场并镜像内存、复制日志再清除计划任务和WebShell排查是否有其他后门账号、SSH密钥、启动项最后对Web应用漏洞打补丁或加固配置。加固建议方面从Web应用层、主机层、网络层三个维度展开Web应用层做参数校验和上传文件类型白名单主机层禁用不必要的计划任务写权限、配置主机入侵检测、基线核查网络层限制服务器出方向白名单对异常域名和IP做可疑情报检测。这种结构的好处是每一块都是一个独立得分点哪怕你分析定性不够精确但处置流程和加固建议写到位了整道大题也不会太难看。现在回想我当时能在整套笔试里拿到不错的分数这道的框架功不可没。6.3 为什么说这题是在模拟真实安全运营你要把这题放在2019年的行业背景下看。那几年攻防演习越来越强调以战代练企业安全部门最缺的不是只会用扫描器的人而是拿到一个告警能做出判断、能按流程处置的人。奇安信把这种实战场景搬进笔试题某种程度上就是在筛选不需要太长时间培训、上手就能参与值班和应急响应的人。如果你平时完全没有接触过应急响应可能会觉得这道题信息量太大、不知道从哪下手。我建议在笔试前至少完整看一遍常见入侵事件的分析报告挂马、勒索、挖矿、数据窃取各看一两篇重点关注别人是怎么从一条告警或一段日志里抽丝剥茧的。看多了以后就算遇到没见过的场景也能按入口—执行—持久化—回连—横向—数据这个通用攻击链来组织思路。7. 备考奇安信笔试的一些复盘经验和常见误区7.1 别只刷题要建立场景—原理—对策的映射很多人准备安全笔试的误区是买一堆题库从头刷到尾混个眼熟。但奇安信这种偏实战风格的考卷靠刷题很难覆盖因为它的题目是场景化的同样的知识点换个壳你如果只背答案就会抓瞎。我更推荐用场景—原理—对策这个结构来复习。比如SQL注入你先想清楚它是什么场景用户输入拼进SQL语句再说清楚原理违反数据和代码分离原则最后想对策参数化查询、输入校验、最小权限数据库账号。这种三层映射一旦形成不管题目怎么换场景你都能从容应对。7.2 注意时间分配综合分析题一定要留足时间这套卷子的综合题比前面所有题都花时间因为它既要求分析又要求书写还要组织语言。建议拿到卷子先把所有题快速扫一遍给综合分析题预留至少30到40分钟。选择题和填空题遇到拿不准的先做个标记不要卡太久因为后面的大题才是拉开差距的地方。另外写分析题时一定要分条、分点尽量用第一第二第三的格式让阅卷人一眼看到你的思考层次。晦涩的叙述一大段哪怕内容对了也容易被忽略。分条写也是在强迫自己把思路理清楚。7.3 把自己当成安全运营工程师而不是考生最后一点是我后来入职后回忆这套题才想明白的。笔试的很多题表面是技术题实际是态度题和思维题。比如日志分析那道题如果只回答这是扫描攻击就没意思了再追问一句扫描之后呢有没有成功有没有其他痕迹——这个追问的过程才真正体现你跟普通人的区别。所以在准备时我推荐多问自己然后呢。看到一条攻击日志不要停在判断攻击类型要继续想它的来源、目标、影响面、处置方法。这套然后呢的思维习惯对笔试、面试和实际工作都特别有用。7.4 版本与工具意识做安全题要落地还有一点在校生容易忽略的是版本意识。比如提到MySQL注入你得知道自己说的是MySQL 5.x还是8.xinformation_schema在不同版本里访问权限是否一样提到Linux日志你最好知道systemd和SysV的服务管理方式不同对应的日志查询命令也不同。这套考题里没有直接要求你写某个版本的具体命令但你答题时表现出这种落地的版本意识会明显加强你的可信度。我当时备考时会在虚拟机快速搭一个LNMP环境把SQL注入和XSS的题目场景各复现一遍。复现的过程不只是验证答案更是帮我把书上那些概念变成了实实在在的操作动作。哪怕不全面这种手上过一遍的经验在笔试时碰到场景题会觉得特别有底气。回头来看这套奇安信2019校招笔试题三最让我收益的一点是它把安全这个领域那种既要懂原理又要有实战手感的特质体现得淋漓尽致。如果你正走在安全方向的求职路上与其满网找标准答案不如把精力花在建立自己的分析框架上。把这套题的思路吃透了后面不管遇到哪家安全厂商的笔试题你都大概知道该怎么下手。
返回列表