2021年全国职业院校技能大赛(中职组) 网络安全竞赛试题 (10) (总分100分)
赛题说明 一、竞赛项目简介 “网络安全”竞赛共分A. 基础设施设置与安全加固;B. 网络安全事件响应、数字取证调查和应用安全;C. CTF夺旗-攻击;D. CTF夺旗-防御等四个模块。根据比赛实际情况,竞赛赛场实际使用赛题参数、表述及环境可能有适当修改,具体情况以实际比赛发放赛题为准。竞赛时间安排和分值权重见表1。 表1 竞赛时间安排与分值权重 模块编号 模块名称 竞赛时间 (小时) 权值 A 基础设施设置与安全加固 3 20% B 网络安全事件响应、数字取证调查和应用安全 40% C CTF夺旗-攻击 3 20% D CTF夺旗-防御 20% 总计 6 100%
二、竞赛注意事项 1.比赛期间禁止携带和使用移动存储设备、计算器、通信工具及参考资料。 2.请根据大赛所提供的比赛环境,检查所列的硬件设备、软件清单、材料清单是否齐全,计算机设备是否能正常使用。 3.在进行任何操作之前,请阅读每个部分的所有任务。各任务之间可能存在一定关联。 4.操作过程中需要及时按照答题要求保存相关结果。比赛结束后,所有设备保持运行状态,评判以最后提交的成果为最终依据。 5.比赛完成后,比赛设备、软件和赛题请保留在座位上,禁止将比赛所用的所有物品(包括试卷等)带离赛场。 6.禁止在提交资料上填写与竞赛无关的标记,如违反规定,可视为0分。
竞赛内容 模块A 基础设施设置与安全加固 (本模块20分) 一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用登录和密码策略、数据库安全策略、流量完整性保护策略、事件监控策略、防火墙策略等多种安全策略来提升服务器系统的网络安全防御能力。本模块要求对具体任务的操作截图并加以相应的文字说明,以word文档的形式书写,以PDF格式保存,以赛位号作为文件名. 二、服务器环境说明 IDS:入侵检测系统服务器(Snort),操作系统为Linux LOG:日志服务器(Splunk),操作系统为Linux Web:IIS服务器,操作系统为Windows data:数据库服务器(Mysql),操作系统为Linux
三、具体任务(每个任务得分以电子答题卡为准) A-1任务一登录安全加固 请对服务器Log、Web、Data 按要求进行相应的设置,提高服务器的安全性。 1.密码策略(Log,Web,Data) a. 最小密码长度不少于8个字符; b. 密码策略必须同时满足大小写字母、数字、特殊字符。 Web:本地安全策略(secpol.msc)>账户策略>密码策略
log:/etc/login.defs 设置密码最小长度 (linux可以任意密码)
设置密码复杂度和密码长度:/etc/pam.d/system-auth
data: 修改/etc/login.defs文件修改pass_min_len值为8.
修改/etc/pam.d/system-auth文件,在cracklib后面添加如图内容
- 登录策略(Log,Web,Data) a.在用户登录系统时,应该有“For authorized users only”提示信息; b.一分钟内仅允许5次登录失败的尝试,超过5次,登录帐号锁定1分钟; c.远程用户非活动会话连接超时应小于等于5分钟。 Windows:a.本地策略>安全选项
b. 本地安全策略(secpol.msc)>账户策略>账户锁定策略
c.gepdit.msc>计算机配置→管理模板→Windows组件→远程桌面会话主机→会话时间限制
log:a.修改/etc/motd For authorized users only 修改/etc/issue文件为For authorized users only 修改/etc/issue.net文件,修改ssh登陆前的提示信息。在/etc/ssh/sshd_config 的 banner信息,重启服务
b./etc/pam.d/login 在#%PAM-1.0 添加 auth required pam_tally2.so deny=5 unlock_time=60 even_deny_root root_unlock_time=60
c.修改/etc/ssh/sshd_config 将第一行0改为300
data:a.修改/etc/issue.net文件最后一行添加For authorized users only
b. data:修改/etc/pam.d/system-auth-ac文件,如图添加一行内容.
c. data: 修改sshd_config文件,将ClientAliveInterval注释删除,设置值为300
- 用户安全管理(Web) a.对服务器进行远程管理安全性SSL加固,防止敏感信息泄露被监听; win+r输入gpedit.msc->计算机配置->管理模板->Windows组件->远程桌面服务->远程桌面会话主机->安全,启用设置客户端连接加密级别、要求安全的RPC通信、远程(RDP)连接要求使用指定的安全层,设置设置客户端连接加密级别的加密级别为高级别、远程(RDP)连接要求使用指定的安全层的安全层为SSL(TLS 1.0)
b.查找并删除服务器中可能存在的帐号hacker; 首先打开注册表找到hklm/sam文件右键设置文件权限,将当前用户的所有权限打开.
重启注册表,打开sam文件夹下的所有文件 找到hacker黑客用户,删除该值和users中对应的值.
c.普通用户进行最小权限管理,对关闭系统仅限管理员帐号。 a. 打开iis管理器>ssl设置 b. net user hacker /del c. 打开iis管理器>编辑权限>安全
A-2任务二 数据库加固(Data)
-
以普通帐户MySql安全运行MySql,禁止MySql以管理员帐号权限运行; 配置my.cnf 修改user=mysql
-
删除默认数据库(test); drop database test
-
改变默认MySql管理员用户为:SuperRoot; update mysql.user set user=‘SuperRoot’ where user=‘root’;
-
使用MySql内置MD5加密函数加密用户user1的密码为(P@ssw0rd1!); update mysql.user set password=md5(P@ssw0rd1!) where user=”user1”;
-
赋予user1用户对数据库所有表只有select,insert,delete,update权限; grant select,insert,delete,update on . to ‘user1’@’localhost’;
-
对忘记mysql数据库SuperRoot管理员密码进行重置操作; 先修改/etc/my.cnf文件,在[mysqld]下方添加一行skip_grant_tables
然后保存退出,重启MySQL服务 7. 禁用LOCAL INFILE命令防止非授权用户访问本地文件; 查看是否开启,设置关闭访问本地文件
-
为防止数据库操作信息泄露,请禁止使用MySql命令行历史记录; rm -rf /root/.mysql_history ln -s /dev/null /root/.mysql.history
-
为了分析数据库运行过程中的一些异常活动,请开启MySql二进制日志。 修改/etc/my.cnf文件,在mysqld项下添加log-bin=mysql_log_bin重启数据库
查看是否开启
A-3任务三 Web安全加固(Web)
-
为了防止web中.mdb数据库文件非法下载,请对Web配置文件进行安全加固; 修改: C:WindowsSystem32inetsrvconfigapplicationHost.config文件 在requestFilering标签下添加
-
限制目录执行权限,对picture和upload目录设置执行权限为无; 打开网站根目录找到两个文件夹右键属性,设置权限将everyone权限所有权限移除.
-
开启IIS的日志审计记录(日志文件保存格式为W3C,只记录日期、时间、客户端IP地址、用户名、方法); 打开iis管理器,找到Default Web site>日志修改必要参数点击确定即可
-
为了减轻网站负载,设置网站最大并发连接数为1000;
Default Web Site 右键>管理网站>高级设置>设置最大并发连接数为1000
- 防止文件枚举漏洞枚举网络服务器根目录文件,禁止IIS短文件名泄露; 注册表修改 HKLMSYSTEMCurrentControlSetControlFileSystemNtfsDi sable8dot3NameCreation的值为1
- 关闭IIS的WebDAV功能增强网站的安全性。 管理工具>iis管理器>网站>找到webdav创作规则禁用
A-4任务四 流量完整性保护(Web,Data) 7. 对Web网站进行HTTP重定向HTTPS设置,仅使用HTTPS协议访问网站(Web)(注证书颁发给test.com 并通过https://www.test.com访问Web网站); 管理工具->IIS管理器->主机名(WIN-242GA01GJ9K)->服务器证书,创建证书申请,默认下一步,将证书申请保存至桌面
- 返回http://localhost/certsrv/ ->下载 CA 证书、证书链或 CRL -> 下载证书,保存到桌面
管理工具->证书颁发机构->挂起的证书,右键->所有属性->颁发证书.点击颁发的证书
右键打开刚刚颁发的证书,详细信息->复制到文件,默认下一步,保存到桌面(test.cer).
在IIS新建一个网站,物理路径在C盘新建一个目录http,按照下图信息填写
创建完后访问test.com,有可能会访问到互联网上的test.com,也就是这样 hosts文件路径C:WindowsSystem32driversetchosts,用记事本打开,在最后面添加一行IP test.com
然后访问你的网站,不出意外的话会提示以下错误。因为你的网站目录下网页文件,在你的网站目录下新建一个index.html,这时应该就能正常访问了。
再在IIS新建一个网站,物理路径在C盘新建一个目录https,或者复制http目录,配置按照下图信息填写
主机名无法输入,先不管。创建完后前往C:WindowsSystem32inetsrvconfig目录,修改applicationHost.config文件。Ctrl+F查找443,在:后添加test.com,保存修改,然后回到IIS管理器,重新启动https网站,可以看到有了主机名test.com,https://test.com 可以正常访问了
http重定向 找到htto网站的http重定向
重定向目标填写https://test.com/Q,重定向行为选择重定向到确切的目标,状态代码选择永久(301)
保存退出,重定向网站http。再访问https://test.com就会跳转到https://test.com 2.为了防止密码在登录或者传输信息中被窃取,仅使用证书登录SSH(Data)。 vim /etc/ssh/sshd_config #禁用root账户登录,非必要,但为了安全性,请配置 PermitRootLogin no
是否让 sshd 去检查用户家目录或相关档案的权限数据, 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入 StrictModes no
是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys
#有了证书登录了,就禁用密码登录吧,安全要紧 PasswordAuthentication no scp ~/.ssh/id_rsa.pub blue@<ssh_server_ip>:~ 在服务端执行命令 cat id_rsa.pub >> ~/.ssh/authorized_keys 如果有修改配置/etc/ssh/sshd_config,需要重启ssh服务器 /etc/init.d/ssh restart ssh -i /blue/.ssh/id_rsa blue@<ssh_server_ip> scp命令 scp -i /blue/.ssh/id_rsa filename blue@<ssh_server_ip>:/blue 每次敲命令,都要指定私钥,是一个很繁琐的事情,所以我们可以把私钥的路径加入ssh客户端的默认配置里 修改/etc/ssh/ssh_config #其实默认id_rsa就已经加入私钥的路径了,这里只是示例而已 IdentityFile ~/.ssh/id_rsa #如果有其他的私钥,还要再加入其他私钥的路径 IdentityFile ~/.ssh/blue_rsa
A-5任务五 事件监控(Web) 1.将Web服务器开启审核策略 登录事件 成功/失败; 特权使用 成功; 策略更改 成功/失败; 进程跟踪 成功/失败; Win+r输入secpol.msc>本地策略>审核策略
2.配置splunk接收Web服务器,安全日志,系统日志,CPU负载,内存,磁盘空间,网络状态。 A-6任务六 服务加固sshvsFTPd (Data) 1.修改ssh服务端口为2222; 2.ssh禁止ROOT用户远程登录; vim /etc/ssh/ssh_config>修改指定内容 >去掉注释>重启服务
3.vsFTPd禁止匿名用户上传; vim /etc/vsftpd/vsftpd_conw>修改指定内容 >去掉注释>重启服务
4.激活vsFTPd上传下载日志;
5.vsFTPd同一个IP只能连接两个;
6.vsFTPd将使客户端连接时的端口范围在50000和60000之间;
7.vsFTPd使本地用户登录活动范围限制在home目录。
A-7任务七 防火墙策略 所有服务器开启防火墙,为防止勒索病毒攻击对防火墙进行加固策略:
-
Windows系统禁用445端口; 在服务中关闭Server并且禁用.
-
Linux系统禁用23端口; iptables -A INPUT -p 23 -j DROP iptables -A OUTPUT -p 23 -j DROP /etc/init.d/iptables save
-
Linux系统禁止别人ping通; echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- Linux系统为确保安全禁止所有人连接ssh除了192.168.1.1这个ip。 修改sshd_config文件在文件结尾中添加AllowUsers 192.168.1.1
。 模块B 网络安全事件响应、数字取证调查和应用安全 (本模块40分,每个子任务4分) 一、项目和任务描述: 假定你是某网络安全技术支持团队成员,某企业的服务器系统被黑客攻击,你的团队前来帮助企业进行调查并追踪本次网络攻击的源头,分析黑客的攻击方式,发现系统漏洞,提交网络安全事件响应报告,修复系统漏洞,删除黑客在系统中创建的后门,并帮助系统恢复正常运行。 二、服务器环境参考(以实际赛题为准) 操作系统:Windows/Linux 三、PC机环境参考(以实际赛题为准) 物理机:Windows7或Windows10; 虚拟机1:Ubuntu Linux(用户名:root;密码:123456),安装工具集:Backtrack5,安装开发环境:Python3; 虚拟机2:Kali1.0(用户名:root;密码:123456); 虚拟机3:Kali2.0(用户名:root;密码:123456); 虚拟机4:WindowsXP(用户名:administrator;密码:123456)。 四、具体任务 任务说明:flag格式:flag{Xxxx123},括号中的内容作为flag值,提交Xxxx123即可
B-1任务一:Web安全渗透测试 任务环境说明: 服务器场景:server1 服务器场景用户名、密码:未知(关闭链接) 大题思路就是用nmap扫描开放了什么端口,想想有什么漏洞 可能是80 445 主要进入windows 系统里获取shell查看php文件 也可以通过网页注入,多去了解一下web存在什么漏洞比如sql等了解一下网站的目录结构,比如会产生什么特殊文件等。 1.通过URL访问http://靶机IP/1,对该页面进行渗透测试,将完成后返回的结果内容作为flag值提交; 2.通过URL访问http://靶机IP/2,对该页面进行渗透测试,将完成后返回的结果内容作为flag值提交; 3.通过URL访问http://靶机IP/3,对该页面进行渗透测试,将完成后返回的结果内容作为flag值提交; 4.通过URL访问http://靶机IP/4,对该页面进行渗透测试,将完成后返回的结果内容作为flag值提交; 5.通过URL访问http://靶机IP/5,对该页面进行渗透测试,将完成后返回的结果内容作为flag值提交。 B-2任务二:数据分析 *任务说明:仅能获取Server2的IP地址 1.使用Wireshark查看并分析Server2桌面下的capture.pcapng数据包文件,找出telnet服务器的用户名和密码,并将密码作为flag值提交; telnet contains “@” 2.使用Wireshark查看并分析Server2桌面下的capture.pcapng数据包文件,FTP服务器已经传输文件结束,将登陆服务器后的第一条指令作为flag值提交; ftp-data 3.使用Wireshark查看并分析Server2桌面下的capture.pcapng数据包文件,web服务器地址是192.168.181.250, 其使用的脚本语言为php,将服务器使用php的版本号作为flag值提交; 过滤http 然后查找192.168.181.250的包
4.使用Wireshark查看并分析Server2桌面下的capture.pcapng数据包文件,这些数据中有非常多的ICMP报文,其中有一个设备是路由器,IP地址为192.168.181.25,将路由器上主动发出的ping请求的数量作为flag值提交; 过滤ICMP 5.使用Wireshark查看并分析Server2桌面下的capture.pcapng数据包文件,这些数据中有ssh报文,由于ssh有加密功能,现需要将这些加密报文的算法分析出来,将ssh客户端支持的第一个算法的名称作为flag值提交。 RSA B-3任务三:数字取证 *任务说明:仅能获取Server3的IP地址 1.黑客是通过上传页面进行上传木马,将上传页面找到,上传页面文件名作为flag值提交; 在cmd net user 查看用户 注册表查看用户, HKEY_LOCAL_MACHINESAMSAM 2.找到对应的木马后门,将木马文件名作为flag值提交; 去网站文件夹找到上传页面即可 3.查看木马文件,将木马文件的登录密码进行提交; 去上传文件所在位置查找php木马即可 4.在任务计划中找到黑客所创建的任务计划(具有危险操作的任务计划),任务计划名为flag值提交;
5.找到任务计划所对应执行程序将分析代码将密码处作为flag值提交。 B-4任务四:内存取证 *任务说明:仅能获取Server4的IP地址 1.从内存中获取到用户admin的密码并且破解密码,以flag{admin,password}形式提交(密码为6位); volatility -f mem.dump --profile=Win7SP1x64 hashdump 2.获取当前系统ip地址及主机名,以flag{ip:主机名}形式提交; volatility -f mem.dump --profile=Win7SP1x64 connections 3.获取当前系统浏览器搜索过的关键词,作为flag提交; volatility -f mem.dump --profile=Win7SP1x64 iehistory 4.当前系统中存在挖矿进程,请获取指向的矿池地址,以flag{ip:端口}形式提交; volatility -f mem.dump --profile=Win7SP1x64 pslist 5.恶意进程在系统中注册了服务,请将服务名以flag{服务名}形式提交。 volatility -f mem.dump --profile=Win7SP1x64 pslist B-5任务五:Python代码分析 *任务说明:仅能获取Server5的IP地址,在Server5服务器桌面找到flag.py文件并完成以下任务。 1.完善文件flag.py文件,填写该文件当中空缺的flag1字符串,并将改字符串作为flag提交; 2.完善文件flag.py文件,填写该文件当中空缺的flag2字符串,并将改字符串作为flag提交; 3.完善文件flag.py文件,填写该文件当中空缺的flag3字符串,并将改字符串作为flag提交; 4.完善文件flag.py文件,填写该文件当中空缺的flag4字符串,并将改字符串作为flag提交; 5.将完善好的文件执行,将执行成功后的回显内容作为flag值提交。 B-6任务六:应急响应 *任务说明:仅能获取Server6的IP地址 1.黑客通过网络攻入本地服务器,在Web服务器的主页上外挂了一个木马链接,请你找到此链接并删除链接,将删除链接后的主页第一排标题栏显示的第三个单词,作为flag提交; 登陆到当前系统,找到位于网站的主目录中的主页面,然后修改index.html文件,找到木马连接进行删除然后查找第一排标题栏显示的第三个单词即可。 2.黑客攻入本地服务器的数据库服务器,并添加了除admin以外的具有一个管理员权限的超级用户,请你找到此用户并删除用户,将此用户的密码作为flag提交; 登陆本地管理员账号并修改密码,然后查找另一个管理员超级用户,输入select user,password from mysql.user;找到另一个管理员账号密码,由于是md5加密是不可逆,只能通过网站一部一部猜即可获得密码 3.黑客攻入本地服务器,在本地服务器建立了多个超级用户,请你删除除了Administrator用户以外的其他超级管理员用户,在命令行窗口输入net user,将Administrator右边第一个单词作为flag提交; 在CMD中net user 后使用命令 net user 其他管理员用户 /del 如果有隐藏管理员用户则 win+r输入regedit中查找HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames然后删除即可 4.黑客修改了服务器的启动内容,请你删除不必要的启动内容,打开任务管理器的“启动”标签栏,将名称列中所有的名称作为flag提交;(提交形式:名称1,名称2,名称3) 打开任务管理器,启动按照题目要求即可 5.黑客在服务器某处存放了一个木马程序,请你找到此木马程序并清除木马。打开任务管理器的“进程”标签栏,将应用名称中的第三个单词作为flag提交。 打开任务管理器按题目要求来 B-7任务七:Windows操作系统渗透测试 *任务说明:仅能获取Server7的IP地址 1.通过本地PC中渗透测试平台Kali对服务器场景Server7进行系统服务及版本扫描渗透测试,并将该操作显示结果中445端口对应的服务状态信息作为flag值提交; nmap -sV -n -p 445 ip 2.找到网络适配器信息,将首选DNS服务器地址作为flag值提交; nslookup ipconfig /all 3.找到桌面上111文件夹中后缀为.docx的文件,将文档内容作为flag值提交; 利用漏洞进入meterpreter的download命令 4.找到回收站内的文档,将文档内容作为flag值提交; dir /a 找到回收站目录然后把路径复制利用meterpreter的download命令 5.获取系统最高账户管理员的密码,将密码作为flag值提交。 load mimikatz wdigest hashdump 白银票据等 B-8任务八:Linux操作系统渗透测试 *任务说明:仅能获取Server8的IP地址 1.通过本地PC中渗透测试平台Kali对服务器场景Server8进行系统服务及版本扫描渗透测试,并将该操作显示结果中21端口对应的服务版本信息字符串作为flag值提交; nmap -sV -p 21 ip 2.找到/var/www目录中的图片文件,将文件名称作为flag值提交; 进入shell提权查看 3.找到/var/www目录中的图片文件,将图中的英文单词作为flag值提交; 进入shell chmod 777 赋权 查看 4.找到/home/guest目录中的txt文件,将文件内容作为flag值提交; cat /home/guest目录的文件 5.找到/root目录中的txt文件,将文件内容作为flag值提交。 cat /root 目录的文件 B-9任务九:缓冲区溢出渗透测试 *任务说明:仅能获取Server9的IP地址,Server9 FTP服务器用户名:admin,密码:123456 1.从靶机服务器场景FTP服务器中下载文件BO.py,编辑该Python程序文件,使该程序实现对Server9进行缓冲区溢出渗透测试的功能,填写该文件当中空缺的F1字符串,将该字符串作为flag值提交; 2.继续编辑命名为BO.py的Python程序文件,使该程序实现对Server9进行缓冲区溢出渗透测试的功能,填写该文件当中空缺的F2字符串,将该字符串作为flag值提交; 3.继续编辑命名为BO.py的Python程序文件,使该程序实现对Server9进行缓冲区溢出渗透测试的功能,填写该文件当中空缺的F3字符串,将该字符串作为flag值提交; 4.继续编辑命名为BO.py的Python程序文件,使该程序实现对Server9进行缓冲区溢出渗透测试的功能,填写该文件当中空缺的F4字符串,将该字符串作为flag值提交; 5.继续编辑命名为BO.py的Python程序文件,使该程序实现对Server9进行缓冲区溢出渗透测试的功能,成功渗透后找到Server9回收站内的文档,将文档内容作为flag值提交。 B-10任务十:远程代码执行渗透测试 *任务说明:仅能获取Server10的IP地址,Server10 FTP服务器用户名:admin,密码:123456 1.从靶机服务器场景FTP服务器中下载文件RCE.py,编辑该Python程序文件,使该程序实现对Server10进行远程代码执行渗透测试的功能,填写该文件当中空缺的F1字符串,将该字符串作为flag值提交; 2.继续编辑命名为RCE.py的Python程序文件,使该程序实现对Server10进行远程代码执行渗透测试的功能,填写该文件当中空缺的F2字符串,将该字符串作为flag值提交; 3.继续编辑命名为RCE.py的Python程序文件,使该程序实现对Server10进行远程代码执行渗透测试的功能,填写该文件当中空缺的F3字符串,将该字符串作为flag值提交; 4.继续编辑命名为RCE.py的Python程序文件,使该程序实现对Server10进行远程代码执行渗透测试的功能,填写该文件当中空缺的F4字符串,将该字符串作为flag值提交; 5.继续编辑命名为RCE.py的Python程序文件,使该程序实现对Server10进行远程代码执行测试的功能,成功渗透后找到Server10桌面上的文档,将文档内容作为flag值提交。