奇安信 渗透测试(攻防类)一面复盘
- 1.你是哪里人
- 2.你是做安全研发的,在qax这边除了这个红队的岗位还投递其他了吗
- 3.看你研发做的比较多,为什么投递这个岗位
- 4.给了一个具体的场景,问你做渗透测试的思路
- 5.后渗透有了解吗,比如内网这一块,还是上面的场景,对于后渗透你的思路讲讲
- 6.真实测试的时候发现内网没法连接外网怎么办
- 7.正向代理和反向代理说说
- 8.代理工具的一些原理了解过吗,比如frp工具的实现机制和原理
- 9.用过那些隧道代理工具
- 10.内网端口转发失败怎么办,反向shell带不出来
- 11.XSS的分类
- 12.XSS你怎么利用
- 13.对于XSS利用手段,除了你说的这些,还了解过其他的利用手段吗,比较新的有没有
- 14.免杀马做过没,讲讲原理
- 15.msf 或者 cs 生成的免杀马的体积一般都比较小,你有了解过这种免杀马的原理吗,包括怎么隐匿,怎么提权?
- 16.SQL注入的原理
- 17.SQL注入的攻击手段都有那些
- 18.SQL注入利用你用的那个工具
- 19.SQLMAP常见的命令
- 20.你的专业学了那些计算机基础课程,你学的怎么样
- 21.讲一下TCP三次握手
- 22.在绿盟已经离职了吗,什么时候离职的
- 23.看了你的博客,写了好多文章,但是关于研发的比较多,渗透这块比较少
- 24.Cobalt Strike工具你们团队是怎么利用的
- 25.Cobalt Strike怎么抓取windows系统的密码
- 26.看你之前主要做安全研发,一些基本的poc插件和python脚本可以写吗
- 27.总结
- 28.结果
1.你是哪里人
xxx
2.你是做安全研发的,在qax这边除了这个红队的岗位还投递其他了吗
没有投递,只投了这一个
3.看你研发做的比较多,为什么投递这个岗位
目前是想多了解一下攻防这一块
4.给了一个具体的场景,问你做渗透测试的思路
PS:这里面试官描述了大概两分钟,要仔细听这个场景的一些细节
根据这个场景回答渗透测试的基本流程即可
5.后渗透有了解吗,比如内网这一块,还是上面的场景,对于后渗透你的思路讲讲
- 横向移动:一旦获得了内网中的一个主机的访问权限,可以尝试横向移动,即在内网中寻找其他易受攻击的主机。这可以通过利用弱密码、共享凭据、漏洞利用等方法实现
- 提权:一旦进入了内网的主机。为了获取更高的权限和更广泛的访问范围,需要寻找操作系统、应用程序或服务的漏洞
- 密码破解:尝试使用弱密码攻击内网中的其他系统和服务。可以通过使用密码爆破工具(例如Hydra、John the Ripper)来尝试
- 信息收集: 进行内网的信息收集
内网主机的基本信息(版本,补丁等)
systeminfo 详细信息
net start 启动服务
tasklist 进程列表
网络信息
ipconfig /all 判断存在域,查看网关IP地址、DNS的ip地址、域名、本机是否和DNS服务器处于同一网段等信息
net view /domain 判断存在域
net time /domain 判断主域,通过查看时间返回计算机名称信息包含域信息
netstat -ano 当前网络端口开放
nslookup 域名 追踪来源地址用户信息(域用户信息,组信息等)
whoami /all 用户权限
net user /domain 获取域用户信息
net group /domain 获取域用户组信息
- 持久性访问:一旦获得了内网中的访问权限,为了确保后续访问,需要在受害主机上安装后门、持久性脚本或恶意软件
6.真实测试的时候发现内网没法连接外网怎么办
可以通过使用代理工具,在内网中建立一个通信隧道,将数据流量转发到外部网络,绕过这些访问限制
7.正向代理和反向代理说说
- 正向代理代表客户端发送请求,而反向代理代表服务器接收请求
- 正向代理转发客户端请求到目标服务器,而反向代理将请求转发到后端的多个目标服务器
- 正向代理隐藏客户端的身份,而反向代理隐藏服务器的身份
- 正向代理常用于翻墙等,而反向代理常用于负载均衡、缓存等服务器端的优化和安全策略
8.代理工具的一些原理了解过吗,比如frp工具的实现机制和原理
PS:这里回答的支支吾吾很不清晰,原因可能是对于内网代理这一块还是做的少,不太熟悉,之后要针对性的进阶一下内网这一块
内网渗透代理工具的原理是在目标内网中建立一个中间人代理服务器,使攻击者能够通过该代理服务器与内网中的目标主机进行通信。这样,攻击者可以在不直接与目标主机通信的情况下,对内网进行渗透和攻击
- 代理服务器设置:攻击者在目标内网中部署一个代理服务器,该服务器充当攻击者与目标网络之间的中间人。代理服务器监听指定的端口,并接收来自攻击者的请求
- 隧道建立:攻击者通过合法的网络通信协议(如HTTP、SOCKS等)与代理服务器进行通信,将自己的请求发送给代理服务器。代理服务器接收到请求后,会将请求转发到内网中的目标主机
- 转发与中继:代理服务器接收到来自目标主机的响应后,再将响应转发给攻击者。这样,攻击者就能够通过代理服务器与内网中的目标主机进行通信,实现数据的转发与中继
- 数据加密与解密:为了保护数据的安全性,代理工具通常会使用加密协议对通信数据进行加密
- 数据拦截与篡改:代理服务器可以拦截和检查通过它传递的数据流量。攻击者可以利用这一特性来监视和修改传输的数据,例如窃取用户凭据、篡改请求或响应内容等
9.用过那些隧道代理工具
frp nc lcx powercat(windows)
10.内网端口转发失败怎么办,反向shell带不出来
转发失败的原因:
(1)防火墙的策略 此端口不允许出网
(2)端口转发工具特征比较明显
(3)端口无法提供服务
(4)端口转发的ip 肉鸡无法访问
解决办法:
配置代理服务器:在内部网络中配置代理服务器,使得内部网络的流量可以通过代理服务器访问互联网或其他外部网络资源
配置VPN连接:在内部网络中配置VPN连接,使得内部网络的用户可以通过VPN连接到外部网络,从而访问外部网络资源
修改防火墙策略:修改防火墙的策略,允许内部网络的特定流量访问外部网络资源
说完之后面试官给做了很详细补充:
既然反向代理行不通,那就用正向代理,然后采用正向shell来连接
目标机器不出网,本机能出网,可通过本机当作跳板机将目标机器的正向shell带出来
原理图:
11.XSS的分类
反射、存储、DOM
12.XSS你怎么利用
- 弹窗欺骗:通过弹出恶意弹窗,骗取用户的信息,例如模拟登录页面来窃取用户的用户名和密码
- Cookie劫持:Cookie中一般加密保存了当前用户的登录凭证。可以通过xss获取用户的cookie
<script>alert(document.cookie)</script>
- 构造恶意的GET与POST请求:例如删除文章或商品,修改用户数据
- 网页篡改:攻击者可以修改网页内容,包括显示虚假信息、篡改页面布局、插入恶意链接等
- XSS钓鱼: 利用JavaScript在当前页面上“画出”一个伪造的登录框,当用户在登录框中输入用户名与密码后,其密码将被发送至黑客的服务器上
- 获取敏感数据:发送
xhr
请求获取数据,例如纯js请求获取token、获取当前页面源码
13.对于XSS利用手段,除了你说的这些,还了解过其他的利用手段吗,比较新的有没有
PS:当时没说全,一时想不起太多的利用方式了,之后面试官说利用的手段不够新颖,攻击的手法都比较老,建议我去了解一下最新的xss攻击手法
没有了 ┭┮﹏┭┮
14.免杀马做过没,讲讲原理
- 动态免杀方式:可以通过替换 api,重写 api,合理替换调用顺序,绕过调用源来免杀
- 静态免杀方式:替换特征码,替换资源, 修改入口点,(peid工具加壳)加壳
替换静态码方式:
- 加密:使用加密算法对静态码进行加密,然后在运行时进行解密。这样可以使静态码在恶意软件的运行时才被暴露,避免被杀软检测到。
- 压缩:使用压缩算法对静态码进行压缩,然后在运行时进行解压。这样可以使静态码变得更小,难以被杀软检测到。
- 混淆:对静态码进行重命名、随机化、替换等操作,使其难以被杀软识别出来。例如,可以将静态码拆分成多个部分,并在运行时动态组合起来。
- 动态生成:在运行时,动态生成恶意代码的一部分,使其无法在静态分析时被检测出来。这种方法需要恶意软件具备一定的代码生成能力
15.msf 或者 cs 生成的免杀马的体积一般都比较小,你有了解过这种免杀马的原理吗,包括怎么隐匿,怎么提权?
PS:没有了解过,还是太菜了┭┮﹏┭┮脚本小子没有前途
下面给出面试后总结的答案:
看过 MSF木马的源码,其采用大马传小马的方式,运行时首先将自己在内存中循环调用三次,也就是为什么会有spwan
这个值的原因。它代表将自己在内存中循环调用几次,随后在最后一次时与服务端建立连接,然后服务端将大马传回
16.SQL注入的原理
网站数据过滤不严格,过分信赖用户输入的数据, 没有过滤用户输入的恶意数据,无条件的把用户输入的数据当作SQL语句执行,因此导致sql注入漏洞产生
17.SQL注入的攻击手段都有那些
1-联合查询注入 union select
2-堆叠注入
3-报错注入 updatexml、floor、ExtractValue 其他的用的不多不用说
4-盲注
4.1-布尔盲注
特点:根据页面正确和错误的两种状态,来判断构造语句是否正确
常用函数:Ascii,length,count,substring
4.2-时间盲注
特点:适用于布尔型盲注失效后,时间型盲注页面没有明显的回显,只能根据页面刷新时间的长短来去判断构造语句是否正确
常用函数:sleep,if,benchmark(执行表达式count次)等
5-宽字节注入
利用条件:数据库采用gbk字符集,网站将引号转义为反斜杠加引号
原理:GBK双字节编码中用两个字节表示一个汉字,可以使用%df使闭合字符绕过反斜杠转义
18.SQL注入利用你用的那个工具
sqlmap
19.SQLMAP常见的命令
sqlmap -u "xxx" -- 设置目标的url
sqlmap -p "id" -- 对指定参数进行注入
sqlmap -r "aaa.txt" -- 用于post注入,将burp拦截的数据包右键保存为txt,随后用sqlmap加载
sqlmap --dbs -- 破解所有数据库(爆数据库)
sqlmap --tables -D aaa -- 破解aaa库下的所有表(爆表名)
sqlmap --columns -T aaa -- 破解aaa表下的所有字段名
sqlmap --dump -C name,password -- 获取字段中的内容 (爆字段)
sqlmap --current-db -- 当前数据库名 (爆数据库名)
sqlmap --current-user -- 当前数据库的用户名
sqlmap --os-dbms -- 爆数据库类型
sqlmap --batch -- 任何选项都选择默认
sqlmap --cookie "cookie值" -- cookie注入
sqlmap --level X -- 设置扫描等级,最高为X=5
sqlmap --risk X -- X取值0~3,risk越高就越慢,但是风险降低
sqlmap --os-shell -- 文件写入挂马 (挂马)
sqlmap --tamper ***.py -- 使用脚本,后面参数为tamper库中的py文件
20.你的专业学了那些计算机基础课程,你学的怎么样
压力题,四大件都学了,学的还可以
21.讲一下TCP三次握手
TCP 三次握手,其实就是 TCP 应用在发送数据前,通过 TCP 协议跟通信对方协商好连接信息,建立起 TCP 的连接关系
- 第一次握手:客户端发送 SYN 报文,并进入 SYN_SENT 状态,等待服务器的确认
- 第二次握手:服务器收到 SYN 报文,需要给客户端发送 ACK 确认报文,同时服务器也要向客户端发送一个SYN报文,所以也就是向客户端发送 SYN + ACK 报文,此时服务器进入 SYN_RCVD 状态
- 第三次握手:客户端收到 SYN + ACK 报文,向服务器发送确认包,客户端进入 established状态。待服务器收到客户端发送的ACK 包也会进入 established 状态,完成三次握手
22.在绿盟已经离职了吗,什么时候离职的
xxx
23.看了你的博客,写了好多文章,但是关于研发的比较多,渗透这块比较少
hahaha
24.Cobalt Strike工具你们团队是怎么利用的
Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作
使用时
- 需要先部署
teamserver
到linux服务器 - 使用客户端Cobalt Strike连接到
teamserver
,进行协同作战 - 在“
Cobalt Strike -> Listeners
”中创建一个监听器,这个监听器将用于与目标系统建立连接 - 生成payload,在肉鸡上执行,上线cs
25.Cobalt Strike怎么抓取windows系统的密码
没实操过,直接说应该有模块可以直接提取
面试后总结的答案:
- 抓取密码哈希:
右键被控主机——>Access——>Dump Hashes
,也可以直接输入:hashdump
- 利用mimikatz抓取明文密码:
右键被控主机——>Access——>Run Mimikatz
,也可以直接输入:logonpasswords
26.看你之前主要做安全研发,一些基本的poc插件和python脚本可以写吗
可以
27.总结
qax的面试官会详细和你说你的不足之处,也会说你的优点,团队主要是做打击国外apt组织的
不足:对于红队攻击的手法没有其他人掌握的多,建议看看攻防社区,了解一下最前沿的攻击手段
优点:代码能力不错,可以来我们团队做代码这一块的研究工作
28.结果
面试结束后直接通知一面过了,注意邮件等二面通知