需要准备的几个方向
- 简历
- 自我介绍
- 计算机网络
- 操作系统(操作系统原理,Linux,Windows)
- 数据库
- 算法(Leetcode)
- 编程语言(Python,C++,go等)
- 安全知识(很多很杂,建议根据自己擅长的方向和所投递的岗位进行针对性学习)
安全岗职位要求
-
熟悉osquery等开源HIDS工具,阅读过工具部分源码或进行过二次开发
-
有过实战经验(包括src、众测、护网等)
-
了解Redis/docker/MySQL/Java框架等常见中间件高危漏洞原理
-
精通 PoC、Exp、规则、指纹等编写的能力
-
熟练掌握Cobalt Strike、Empire、Metasploit等后渗透工具的使用;
-
入侵检测
-
熟悉某一安全细分领域,如内网渗透、移动安全、恶意软件分析、CTF竞赛等
-
掌握白帽子攻击流程及常用白帽子工具,熟悉攻击技术,具有渗透常见服务器的经验
-
熟悉热门流行的攻击工具,能够灵活运用各类小工具,并能开发相关的小工具
-
熟悉web、内网、iot方面的渗透流程和攻击技术,有过渗透测试、攻击模拟经验
-
实践落地过完整SDL威胁建模方面的项目经验
-
有实际用过机器学习算法解决过实际问题的项目经验
-
有实践过云安全落地解决实际问题的项目经验
-
熟悉windows、Linux系统及常用命令,熟悉WEB服务器常见配置
-
了解Owasp Top10漏洞原理,具备渗透测试的实施和交付能力,熟悉渗透测试的步骤和方法
-
了解常见企业安全防御技术,有防护绕过实践经验
-
了解基本的Linux、Mysql、Redis、Nginx、DDOS等技术知识
-
参与各类CTF安全竞赛获奖者优先,参与各大SRC、众测平台并排名靠前者优先
-
网络安全法律
-
独立挖掘到 k8s、容器逃逸、虚拟机逃逸相关漏洞的研究者优先;
-
熟悉白盒审计,能对python、go、php代码进行审计;
-
快手招聘要求
-
1、熟练使用SQLmap、Burp Suite、Metasploit等常见安全测试工具,了解原理,熟悉代码并且对其进行过二次开发
-
2、在安全社区比较活跃,提交过高质量安全漏洞或者安全分析文章
-
3、开发社区活跃,有开源过安全相关代码
-
4、有互联网安全团队实习经验
-
-
字节招聘要求
-
linux环境开发能力
-
shell
-
有 Windows/Linux 客户端安全攻防的经验,或了解 Android/iOS 移动安全
-
对安全合规,安全管理有了解
-
数据分析,挖掘,机器学习
-
React/Vue前端
-
对 Web 安全、服务端安全、客户端安全、移动安全、无线安全、物联网安全等其中一项或几项有深入研究
-
面试技巧
面试的节奏最好把握在自己手里,我们不可能每个方面都会,让面试官随便问的话,很大概率要挂。可以在自我介绍的时候,将你的学习历程讲清楚,让面试官知道你会什么,接触过什么,让他知道你大概会的东西的方向。其次,基础要扎实,漏洞的原理、种类、防御方式、应用等都应该十分熟悉,而且最好准备一些比较深的内容,开始的时候不说,等他问了再说,效果更好。然后,就是项目的经验了,这种东西要你确实做过且了解很深的才行,不然很容易给面试官留下差印象。还有就是HR,技术面你可以和面试官扯蛋、闲聊、开些玩笑也无所谓,但HR最好就不要了,正经点,别什么真话都往外说,别给他理由把你pass了
CSDN大礼包:《面试题资源包》点击免费领取https://mp.weixin.qq.com/s/Twl2n5QmhrIgQZK877s64A
安全相关面试题
1. 简述一下目前主流编程语言的相关漏洞
答:这个题的相关思路就是聊一聊目前主流语言的漏洞,你可以从两个方面进行阐述:
Java 、Python、PHP(漏洞大户)的相关漏洞,其实也是那几个;
聊聊你知道的框架 - 比如Apache基金会框架、PHPAdmin、Python主流Web架构 - jinjia2、Django等;
**Python的漏洞:**
注入:Django 2022新的SQL注入漏洞,即使Django采用参数化查询和ORM的防范SQL注入也存在字典注入的方式,2022最新的CVE漏洞利用QuerySet.annotate()、aggregate()和extra()方法进行注入;
XML: XML的读取会造成DoS攻击;XXE 攻击的利用;
assert 语句: 不要使用 assert 语句来防止用户访问特定代码段。默认情况下,Python 以 debug 为 true 来执行脚本,但在真实环境中,通常使用优化运行,这将会跳过 assert 语句并直接转到安全代码,而不管用户是否是 is_admin 。
site-package: 伪造官方库进行代码注入和代码伪造;
**Java漏洞:**
Java最著名的就是反序列化漏洞,反序列化漏洞出现在WebLogic、JBoss等常见Web容器;
Structs2就是任意代码执行
Log4j2 也是很火的漏洞
Shiro 的身份验证绕过、远程代码执行;
**PHP漏洞:一抓一大把**
ThinlkPHP的远程代码执行
PHP的反序列化
ThinkPHP文件包含
PHP不安全函数: chroot、exec、一句话木马、proc_open等
2.如何发现目前在运行的相关系统正在遭受DDoS攻击?
答:问题背景:
首先现在大多数企业已经不自己购买抗DoS的相关防御设备了,或者只是简单部署DoS流量防御设备系统,因为如果企业遭受到DoS攻击指望那几台互联网出口的抗D设备已经无法满足需求,如果互联网出入口出现高峰流量就会直接将设备打挂,从而设备流量被绕过,还是无法做到流量清洗和DoS的相关防御;
本身这种攻击就没有有效的防御方法,最好的方法是在运营商上就做好流量清洗和流量黑洞,才能更有效的防范,因此最为省事和有效的办法是购买运营商的流量清洗服务;
CDN其实也是一个很有效的防范DoS攻击的途经,也是成本低廉的解决问题的方式;
**如何发现系统正在遭受攻击?**
首先,可以在现网中部署流量监视系统或者流量审计系统,从而对业务流量进行监视,进行业务正常流量和IP地址的追踪和观察,形成自身的业务流量安全相关模型,明确内网服务器或者自身应用系统对于服务流量的上限,设立相关的警戒阈值,超过该阈值需要考虑是否遭受DoS攻击;
利用分布式多核硬件技术,基于深度数据包检测技术(DPI)监测、分析网络流量数据,快速识别隐藏在背景流量中的攻击包,以实现精准的流量识别和清洗。恶意流量主要包括 DoS/DDoS 攻击、同步风暴(SYN Flood)、UDP 风暴(UDPFlood)、ICMP 风暴(ICMP Flood)、DNS 查询请求风暴(DNS Query Flood)、HTTP Get 风暴(HTTP Get Flood)、CC 攻击等网络攻击流量。
其次,Linux服务器对于CC攻击和DoS攻击有自身的日志记录,dmesg 和 message 日志都会有相关的Flood的日志记录,这个日志的记录是由于:
net.ipv4.tcp_max_syn_backlog 参数设置的,Linux也有其他参数来防止DoS攻击,主要思路是控制连接数;
net.ipv4.tcp_max_syn_backlog = 4096 ``#表示SYN队列的长度,加大队列长度可以容纳更多等待连接的网络连接数
net.ipv4.tcp_syncookies = 1 ``#表示开启SYN Cookies功能。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭,1表示打开;
net.ipv4.tcp_synack_retries = 2 ``#下面这两行表示定义SYN重试次数
net.ipv4.tcp_syn_retries = 2
#提高TCP连接能力
net.ipv4.tcp_rmem = 32768
net.ipv4.tcp_wmem = 32768
net.ipv4.tcp_sack = 0 ``#打开tcp_sack功能,1表示"关闭",0表示"打开"
**DDoS deflate** 也是一个控制 netstat 和 iptables 有效的工具,通过 netstat 监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP;
一些框架,例如Apache的Web框架就记录了:access log 来记录访问;
此外,可以检查Linux服务器的相关进程资源使用情况,通过 top命令查看监视系统进程的资源使用情况,对系统的资源使用进行监控,这里涉及到主机的监控的相关技术;或者通过 netstat 查看目前系统正在连接数;
**netstat -npt | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n**
也可以直接抓取网络流量进行分析,使用的相关工具有:tcpdump 和 tshark 可以抓取网络流量进行分析;
3. 简述TLS的加密过程(10分)
答:首先必须明确,TLS目前的版本已经从1.0到1.3版本,目前比较流行的版本是1.2,TLS的运作的OSI模型在传输层,SSL/TLS综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。
**握手协议;**
握手协议负责在客户端和服务器端商定密码算法和共享密钥,包括证书认证,是4个协议中最最复杂的部分。
**密码规格变更协议;**
密码规格变更协议负责向通信对象传达变更密码方式的信号
**警告协议;**
警告协议负责在发生错误的时候将错误传达给对方
**应用数据协议;**
应用数据协议负责将TLS承载的应用数据传达给通信对象的协议。
**TLS记录协议;**
TLS加密原理
- TCP建立了两端的连接;建立在TCP连接的基础上,TLS也是通过几次握手来保证应用层的数据安全传输;
- 要保证数据的安全,就要对两端的传输的报文进行加密,且要防止被中间人攻击所破解。
- TLS使用非对称加密的方式进行加密,当然这种加密的方式带来的问题就是:非常耗时,加密传输数据会影响效率,这一点非常关键;
- TLS的秘钥交换规则是:
> 服务端生成非对称秘钥对,私钥自己保存,将公钥明文传输给客户端;
> 客户端自己生成一个对称秘钥,再将对称秘钥通过公钥加密,通过加密后的秘钥传给服务端,服务端通过自己保存的私钥进行解密,获得客户端指定的对称秘钥;
> 当前,这种交换密钥的方式也有一个问题,就是明文传输的公钥可能存在被篡改的问题,这个时候必须引出数字证书和CA的概念;
- TLS的CA和数字证书(一定要回答这个方面的问题):
> 数字证书是一个包含了某个服务站点名字、公钥的文件,该文件由CA颁发,能够证明服务站点的真实性。
> 服务端自己向CA证书申请数字证书,而CA机构怎么获得相关信任呢?这个时候涉及到根证书机构,世界上的根证书机构只有几个,因此CA机构向根CA机构进行申请,整个CA的信任链也是一个逐级链式认证的过程,在这里不再进行详述。
- TLS使用的加密协议:
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256"
DHE-DSS-AES256-SHA256
TLS_DHE_DSS_AES_256_CBC_SHA256
最后详细的过程如下图:
1. 第一步: 客户端确定随机数,发送支持的密码算法放进到TLS协议中,供服务端进行选择;服务端存储客户端发送的随机数1;
2. 第二步:服务端确定与客户端的加密算法,并确定一个随机数2,以明文的方式发送给客户端,客户端保存随机数2;
3. 第三部:服务端发送数字证书(包括:公钥、签名、服务端主体信息)给服务端,此时服务器也确定了对应公钥的解密私钥;客户端收到后验证数字证书是否有效,并确定随机数3;
4. 第四步:客户端发送经过公钥加密的随机数3,服务端接收并使用保存的私钥进行解密;
5. 第五步:这下服务端和客户端都有了对称密钥生成的三个随机数:随机数1、随机数2、随机数3,使用DH(现在比较流行的是:ECDH算法)秘钥生成算法进行生成对称秘钥,使用对称秘钥进行加密数据进行传输;
4. 如何提升非对称加密的运行效率(10分)
答:
可以采用独立的硬件加密模块的方式进行,非对称对称加密使用的算法需要考虑大数乘法、大因数分解、大数模运算,在计算机中简单的是加法和减法,因此乘法本身就是有损耗;其次,算法对于秘钥的存储需要空间和算法的复杂度,也会影响非对称加密的运行效率;
使用量子计算和椭圆曲线算法来进行加密的方式,椭圆曲线算法涉及到几何学,因此比大数乘法、大因数分解、大数模运算的复杂度要较低;
5. 请简述什么是企业安全运营 / 在企业内部中如何推行安全运营建设(20分 + 20分)
答:
这个问题真的非常***钻,需要很强的体系知识以及在企业中的实践经历,甚至对于企业的体系和组织架构有一定的了解,因此是一个20分的大题;必须要对目前的知识进行拆分;
**什么是企业的安全运营,安全运营的概念:**
安全运营被定义为:以资产为核心、以安全事件管理为关键流程,采用安全域的划分思想,建立一套实时的资产风险模型,协助管理员进行事件分析、风险分析、预警管理和应急响应处理的集中安全管理系统;
安全运营以用户网络的最终安全为目的,实现运营过程上的统筹管理;
安全风险不仅仅指的是目前的互联网技术、计算机科学技术,而是将企业整个体系的安全囊括在安全运营建设上,包括:合规安全(监管机构、行业规范)、运营风险管理(在实际运营中的风所有险,例如金融行业的风险控制部门,涉及到业务、产品等);
安全运营本质上就是一个:以技术、流程和人有机结合的复杂系统过程,包含:
> 产品、服务、运维、研发等,已有安全工具、安全服务产出的数据进行有效分析,持续输出价值,解决安全风险
其模式:用“服务模式”开展合作,以“安全能力”进行赋能,以“安全数据”提供决策,以“运营能力”作为交付,以运营模式来发现问题、验证问题、分析问题、响应处理、解决问题并持续优化;
**企业安全运营存在的问题:**
。。。(由于篇幅原因,不做完整展示)
6. 简述如何增强企业的数据安全(20分)
(由于篇幅原因,不做完全展示)
**注:做这个List的目标不是很全,因为无论如何都不可能覆盖所有的面试问题,更多的还是希望由点达面,查漏补缺。**
这份完整版的面试题PDF已经上传,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】