CTF Writeup TMCTF2017 » 履歴 » バージョン 1
kanata, 2025/04/13 15:14
| 1 | 1 | kanata | # CTF Writeup TMCTF2017 |
|---|---|---|---|
| 2 | |||
| 3 | {{toc}} |
||
| 4 | |||
| 5 | # 結果&感想 |
||
| 6 | |||
| 7 | Trend Micro CTF 2017 に、某チームで参加しました。 |
||
| 8 | 今年は善戦しましたよ!(国内10位以内)。二問解けました。 |
||
| 9 | 解けたけど、途中までチームの方が解いてくれたやつのオイシイ所だけ持っていった感じだったりします。 |
||
| 10 | |||
| 11 | という訳で、解ってる部分のwriteupです。 |
||
| 12 | |||
| 13 | Trend Micro CTF 2017 オンライン予選 ランキングページ |
||
| 14 | https://ctf.trendmicro.com/ranking.html |
||
| 15 | |||
| 16 | # Forensic 100 |
||
| 17 | |||
| 18 | pcapのファイルが渡されます。 |
||
| 19 | 早速Wiresharkで読んでみるとこんな感じ。 |
||
| 20 | |||
| 21 |  |
||
| 22 | |||
| 23 | DNS通信の羅列です。なんかメチャクチャなホスト名のAレコードを引っ張ってこようとしているように見えます。 |
||
| 24 | |||
| 25 | ## Malwareの通信を模している |
||
| 26 | |||
| 27 | どうやら、以下のマルウェアを模した通信のようです(チームの方が調査して教えてくれました) |
||
| 28 | |||
| 29 | 遠隔操作ウイルスの制御にDNSプロトコルを使用する事案への注意喚起 |
||
| 30 | https://www.lac.co.jp/lacwatch/alert/20160201_000310.html |
||
| 31 | |||
| 32 | {{rawhtml(<blockquote class="embedly-card"><h4><a href="https://www.lac.co.jp/lacwatch/alert/20160201_000310.html">遠隔操作ウイルスの制御にDNSプロトコルを使用する事案への注意喚起 | LAC WATCH | 株式会社ラック</a></h4><p>「遠隔操作ウイルスの制御にDNSプロトコルを使用する事案への注意喚起」のページです。ラックは、セキュリティ対策とシステム開発より培った技術と経験より、ITを活用する企業に対して技術情報の共有や、情報セキュリティやIT活用に対する提言などの有用な情報発信をします。</p></blockquote><script async src="//cdn.embedly.com/widgets/platform.js" charset="UTF-8"></script>)}} |
||
| 33 | |||
| 34 | > 余談ですが、一般的な企業の外部との通信環境として、DNSのログまで取らなかったり、DNS通信のためにファイアウォールのポートを開けてたりするので、通信の偽装方法としてはかなり賢いやり方かと思います。 |
||
| 35 | |||
| 36 | そして、そのチームの方が、そのメチャクチャなホスト名を抜き出してくれます。 |
||
| 37 | |||
| 38 | ``` |
||
| 39 | ASfsbGivEQsT2aQPHzaB |
||
| 40 | 5GBJZEAWX7WJASGCg5Br |
||
| 41 | 9TvJjPCj9kRW9fk5XU2b |
||
| 42 | rvAptS4tZnjLwCNsXn5N |
||
| 43 | 9jUqipSo5xgNR6EM3Zpw |
||
| 44 | 8kdhrsqDd3Gb5wSSPqKN |
||
| 45 | 8wkw5kPRgi5ihJnGYxid |
||
| 46 | p7vfcECXgiGtisBnZiD9 |
||
| 47 | C2kv3MzxMXGZiSgQpfmt |
||
| 48 | y3vYWgxkk9ygyqJcRDnD |
||
| 49 | PB2gk8K9SJFcKrPimJja |
||
| 50 | 9REhmzgECtjmEMYVz5QY |
||
| 51 | tsHgSBzRBT8FbQx3mvpX |
||
| 52 | jEkoi86dM8n9eQuZ38wj |
||
| 53 | 8Jvg2HSvjr8qyEtur3E5 |
||
| 54 | vPfFiANqqbY4J4jbCyNr |
||
| 55 | UrJLW8fGVvr9mdAyAqpJ |
||
| 56 | sk8h9X8t1LtyXV2cMoxa |
||
| 57 | j2ELd8EoY3aGDatsba5m |
||
| 58 | VkNwpptkVumdo8sxXoYS |
||
| 59 | ta6fKKAC3MXfLVvkHYSs |
||
| 60 | Gs9fnyXPMgitffJ49xt4 |
||
| 61 | oCxCHtyoWgytH6sudYPk |
||
| 62 | SypJUuCWfsS1R771e95R |
||
| 63 | eRvie3RgQjEwpVL4HsnC |
||
| 64 | EJeEEzPWVtJQpTcheGGB |
||
| 65 | sMzqMuR3y8eui2wU93H5 |
||
| 66 | ZeDVauv4qQYPWdpub8Ys |
||
| 67 | J9X3mQCZ7B4XsdyTUSyT |
||
| 68 | goeboTbqpATAnuCDRzYn |
||
| 69 | pd6sQ5PggQBdoUYjABcP |
||
| 70 | HgUp34UmzHSGaRScoHzF |
||
| 71 | T8W51c8iY3X6uNCxRwnZ |
||
| 72 | LCx2C4PBwZN24wKWFAoL |
||
| 73 | vSTGaeVcxBQ3UHo9xpY5 |
||
| 74 | HoHJaL1pPaxAhFhei73H |
||
| 75 | 5k5doyAoKhvTdvNehEhJ |
||
| 76 | ocCoxRZKbBQP8f7cZgTm |
||
| 77 | CuD1ekRNQ6o7ZysnuDwf |
||
| 78 | vvmotn9Wap7DeGZGnS94 |
||
| 79 | g7wUSB4B7VUcSEcT9G18 |
||
| 80 | yYuKh8fjBAw9fJrrgZmZ |
||
| 81 | 97FnKJWgXf9Ju9648DDB |
||
| 82 | gh534XrjqMLiBXFq2dnf |
||
| 83 | qmG845ndTuXSR1bMRpqp |
||
| 84 | jFeJN52D9KKKaYqTgoCq |
||
| 85 | o9Y1nt9pwahd3v1srMpj |
||
| 86 | VTPt46SH2RKU21ZfiqEN |
||
| 87 | of8hkgxxLTLtkWPRPJeB |
||
| 88 | 9WSVGzALTZ3L8QVsq1uX |
||
| 89 | HwUKYkmjbX71Phrzfnhz |
||
| 90 | V5ffFCtjiuF1D4gtMY1c |
||
| 91 | f9ieUzKWF7voscgM2zcV |
||
| 92 | oiDdYCfpKJGrkzpDZB1c |
||
| 93 | QTPDZYyLbzZ9hE2B1RAw |
||
| 94 | V7e4NGuG8TPQmaXvet3r |
||
| 95 | Ze3Q7zZhmcdXhwbd8Et7 |
||
| 96 | JZHcvidkLCb1JDrNe1dX |
||
| 97 | 6fjddFonVfoMWNcAHLH5 |
||
| 98 | BypDgNtAwK2JkABnkMAs |
||
| 99 | BQi16XaNToXzTC4Ug8UN |
||
| 100 | gyUfRjXrwzTYckVfE7Vo |
||
| 101 | e5kdwYLX4FQ12eQm3BbW |
||
| 102 | 76tkfsZUUAm3gHHk3roT |
||
| 103 | CiQ8kNejjitLaRVhfeuG |
||
| 104 | yfMkotR8TVmYPGqEmcS1 |
||
| 105 | qRMWJmigBwg7ZbG4hSDC |
||
| 106 | dSq83eKsFyig8A4EDsPF |
||
| 107 | XnGKAgUe1UYHvzahFBhn |
||
| 108 | eyhgmfdbheRAEAkMqVn5 |
||
| 109 | PBmEhv7bC4aNUZ465Hus |
||
| 110 | 2JpJF5L4tkfbJsAVmCrt |
||
| 111 | REhCuLhUqXqVmFBqknho |
||
| 112 | x2BfRQqAZMB6f4udU3Xo |
||
| 113 | U4qED1V5kEqA1qVGytjW |
||
| 114 | B2pQGbjuacAjf2C8n7QS |
||
| 115 | UTJhFsrmQp12sUE7WJ6w |
||
| 116 | tTg4bnjNDzyHbJSiVWhr |
||
| 117 | 2EuES8qZbVFP5478HpVh |
||
| 118 | 8dpCvz6DJJybAEfcsg76 |
||
| 119 | pGLBatEMvjiHTC5LhdAf |
||
| 120 | PbQiePVedCjEQL21Pn6i |
||
| 121 | GLTPZfWqHVz3ZtkR4iDF |
||
| 122 | Zyn3L5ZGWjCJ3JgzCTRm |
||
| 123 | YeuXfW2XcNMipgv4c97i |
||
| 124 | 8TAbL3m5rhV5ShtjBAqw |
||
| 125 | dfszh1erSpVDMuijNpo2 |
||
| 126 | sC6czF2fq6mGMKe8hwWo |
||
| 127 | BwVt7sRaAYtp94AEw5AJ |
||
| 128 | HUdvfRzsQ7XBMQBMDHbp |
||
| 129 | mCkWortnVk1krAVUK8Mf |
||
| 130 | GQezUgvSmX6pBgXDrGkx |
||
| 131 | yNmWpQg8DeF5saQApGKM |
||
| 132 | zshqTmGrrJm7s4TYajBs |
||
| 133 | RKatfjKBLgto6YHd548A |
||
| 134 | LADReAEmymFbDg31U6dJ |
||
| 135 | Pp1XbHujeMe3z2QQqmft |
||
| 136 | Az2LRpfjz6Rh64cVRK6D |
||
| 137 | adBBsL9quZoiZB339vLD |
||
| 138 | Mx4xRRaU7N5NxSnPz4Zj |
||
| 139 | uYm4V2uUoTmA4jaS7atS |
||
| 140 | zbEBujiVf2wTz18ymbPF |
||
| 141 | apXrc53WNL9iYa7nqHUA |
||
| 142 | gvn1Bx9L5hadd5A97ss2 |
||
| 143 | NhSPmwZGBu7rj2f43uwf |
||
| 144 | dGamzZpGxEascuGT48p9 |
||
| 145 | wgm49Ck6QovrCj7g3KAZ |
||
| 146 | XEopDkmeReSRNkEipH2U |
||
| 147 | 4V7Vim425LAJsghg1nqX |
||
| 148 | DRHx4QNAe9TKBiRYPw2w |
||
| 149 | PdPi9gWHPpnwHJyX896E |
||
| 150 | rCvXadRfQrEuushKthcn |
||
| 151 | vUyUXt8MZWcHLujDkKFq |
||
| 152 | hama3vxFTDH7N8QD5Kch |
||
| 153 | Nevv7KPDo95DagyyZHGy |
||
| 154 | LT7DKEusvJ8SZuodBEeW |
||
| 155 | wwJ1qfCMasEBBiPXov6h |
||
| 156 | UexhazHeJRTEVscjZ2bN |
||
| 157 | iScQs2YuqPnej26QShcr |
||
| 158 | wwyunJZu2S9yqo7i6Psf |
||
| 159 | pWXAmZcQ7Nba7QpAfaH4 |
||
| 160 | NuGnhzUb9KcVZmJkfRzg |
||
| 161 | D3egFR9C79gQYybVMpd6 |
||
| 162 | Kxz5xRzS4WAhLLdqwUFx |
||
| 163 | NBw3hUV7nMywSR6Cg2aj |
||
| 164 | nv61ZWVNgAofwXuthzfG |
||
| 165 | kAyae51WNWjtbtpCSEQL |
||
| 166 | PY1uTwWZ13bthQaoCeZ5 |
||
| 167 | 3nomwgWB4EBaimmu78qn |
||
| 168 | AquqjeCw73XK4UXGR61T |
||
| 169 | HLxgSiuGjRRcj6489cuW |
||
| 170 | fQ7gyU6ckPo6QL8cGPvH |
||
| 171 | j6CXJ4w8CakQMmwq7JGp |
||
| 172 | PToD826chKGtH5A2RKCk |
||
| 173 | Hc7NQA79MvHvXdtByDC4 |
||
| 174 | iPaivSRmLXZa5W8vr4F7 |
||
| 175 | JqbK8ghZcQJuSGWTaQwQ |
||
| 176 | jjABhkmWvDvs6HHyW3j8 |
||
| 177 | XK6cPijnTVvCgDN63Nrm |
||
| 178 | suNkMCnbkiWRZfgu8pqc |
||
| 179 | kVze5LxGnVWPmtmnVv4u |
||
| 180 | nssrKhd1SBPU17vps76M |
||
| 181 | iHontgDCbfxtp9BZFt8E |
||
| 182 | YtZMUghzzxQxTKFGGg9b |
||
| 183 | L6eRrrFfjYx15E4GtAmZ |
||
| 184 | 5wZA5oxE8atxtdaWc1qf |
||
| 185 | Q7wMMvzR8QHx5Xw7imGX |
||
| 186 | h4M58Kiknsw7urRDkitH |
||
| 187 | 2EAxKPLsbp4eAERFFNT3 |
||
| 188 | Vy6XdymAGGkok1KcM5EW |
||
| 189 | WSpdEjWJpdi36dYsXCTr |
||
| 190 | bLYqXuMFHViL5GP9HFJh |
||
| 191 | Mez6hsvcsscaLUUz3KhW |
||
| 192 | D9owzzczVAk8GzDkkrT1 |
||
| 193 | Sqxs6oG3Q6isAHUAVYUb |
||
| 194 | iRaqm3AjSazJf5BsA6Xx |
||
| 195 | xc9LV25nKvTKjK6Q4UEX |
||
| 196 | WvMnEM5iKTmwWsoHvGB4 |
||
| 197 | EnNNN34f9mfavgdTfG9W |
||
| 198 | ovwysP4AxHK4iHipuv5m |
||
| 199 | to1ugHG2vFgVafweSaFh |
||
| 200 | 63qhYqEc9HHmJaFRJ8bS |
||
| 201 | JBLBEi9LKmsDCufc6u6F |
||
| 202 | QCshYApRFKKGYWEgMaWA |
||
| 203 | BHSLEfwA8KrZyF2Whbyu |
||
| 204 | NiskF6RWVJMpBX2g7oqU |
||
| 205 | j3W73H4E5ybHUqQx5HeK |
||
| 206 | pPgDFSxRMtVCee8U5KmU |
||
| 207 | XDPDFHEY9ayoDGE3P6UM |
||
| 208 | Mu6u4GPwMxoT8r2hKrZi |
||
| 209 | gMvngG5ujwKm5FCX1DQN |
||
| 210 | PAdzTtQPMuVfNSq5YL8n |
||
| 211 | jRpT1UFDWFV6PQ616hX3 |
||
| 212 | 92iTiMQbNN41VgKE1Zp5 |
||
| 213 | 4qG3nYK6DJCG1yssE71H |
||
| 214 | xYudvTV2vRdx4kLQvMLc |
||
| 215 | 7UPfCfjswRxptxyffRcM |
||
| 216 | NV4fpnSXHKVKVNo7rnmb |
||
| 217 | ZjyAgQmNiA4tG2yaVLqK |
||
| 218 | Q6mdzH914mH7inV9keb4 |
||
| 219 | evbazKxFhumbhtKr4YAm |
||
| 220 | 7VqUxTiwGrqcsdg9XwHu |
||
| 221 | wZG69BmoRkhJhVFRkxe2 |
||
| 222 | qSQGrk6qGMP4MPKYZXzC |
||
| 223 | JEU14sq3rGEU23avuKUj |
||
| 224 | CPcEVcMboGvjH6N7TG8z |
||
| 225 | gQmnhrXaDQVqQ6dBiGwg |
||
| 226 | 3eESUiXFQxZLZFecXiu1 |
||
| 227 | gHG7p75QCedSV5EEwdpy |
||
| 228 | EL1rJWTji8WvAKDGpkqX |
||
| 229 | KDxJPQW78DmTtdVDNWgE |
||
| 230 | VqkBRKp4HiYcSV3WZ71v |
||
| 231 | pm6LzkEW7UyoQnF3AfcV |
||
| 232 | uFp4ogxeA9vPzZ3LoVFS |
||
| 233 | ts9CYgPxJW8i2KpUW1bP |
||
| 234 | itDsYqqr6tK3wvLW3CWd |
||
| 235 | zWrDWowzgSoFHZQ6EqiL |
||
| 236 | pfVbfuvj5FyURHsmDecG |
||
| 237 | FnnAdBFckx6hJeuagNNb |
||
| 238 | K4iyT9KfPDUPoGXprsGc |
||
| 239 | peVY9SRU3nMVjuFB22zi |
||
| 240 | qZxPwASjebDepePoe3Lb |
||
| 241 | TDwK8XFTx8JaKr5xXyGk |
||
| 242 | w7cqBCzvhVWQvkRjyWhF |
||
| 243 | YmfRc3S2814fatrghk9C |
||
| 244 | phAcHkLfNhvU9yUmsDmw |
||
| 245 | WpUXQH9ZnxUPRDVN3oEJ |
||
| 246 | hvG5ptZF9YJtSQdKATni |
||
| 247 | f7Ut2tis18xaKdiARRi2 |
||
| 248 | cQiD1GTtd7NFtq9TxNmL |
||
| 249 | 7C2vQNGneNpGJPWb9mZM |
||
| 250 | G3g4CCHaunsKyXExXL9y |
||
| 251 | EjBwHq6H9unt9wAiCGVH |
||
| 252 | 32mvVRZbLMF4CpWRiqW8 |
||
| 253 | nVqCx4PpCdopakRUqZfX |
||
| 254 | 2iEJ4UKtU4CEYUMH23sB |
||
| 255 | 2XSeveHgoNtTZvaziunD |
||
| 256 | XHMHSTJe3VKYRy4JQSs3 |
||
| 257 | W3xe3apFCkwS33mea2gf |
||
| 258 | giqwhGTifa2QAjgGsdae |
||
| 259 | 1RejMC5dqWjAMfXMmC6m |
||
| 260 | A3b5DEDZAP5XgJqi6vZM |
||
| 261 | Sho8CNWQAZ1xD2RKGyCr |
||
| 262 | 8gCx1zsfpuL5ffFmzC7K |
||
| 263 | rzZ9ZxoWRHrnWmS9E5rs |
||
| 264 | gtGRn5kMtVe8jnYXZeoV |
||
| 265 | xYt7uvFeLjXRfmaDXt7S |
||
| 266 | mD5pz9nNwXTqZ1WhUN74 |
||
| 267 | 3CFUCeMD2ZFpT68gme2T |
||
| 268 | iT17Fhwuh1EQekVwxDrQ |
||
| 269 | sTD2tRh3PHRatw49h9vi |
||
| 270 | 4FUyNnh3BJwuq9UykbJ7 |
||
| 271 | kq9faJQxuJiwxWRUBD9T |
||
| 272 | K9G9dBn1AhcDwogPyqU3 |
||
| 273 | rFneZ37FL56NvaPXgVLX |
||
| 274 | 7d2wY7JbrzuY3SHhjECW |
||
| 275 | yFWGBSpGurNmCUFf4a9b |
||
| 276 | LvH8xnKXyPpLjNyBcsPT |
||
| 277 | aXET3299mhHaXKTpBApD |
||
| 278 | bukmRnpMkwqUJyQAvhxq |
||
| 279 | iDRkrZTfKYws43sfzfab |
||
| 280 | xEEWL6uaSZLTjze8avxq |
||
| 281 | tDemvaPgjfMcfvqvjz66 |
||
| 282 | UAnraPLbymzo9PL5imY2 |
||
| 283 | 6LPinAGSJi6q3oSPAvYg |
||
| 284 | boMWbDWrNbsS56v64KBa |
||
| 285 | iLS28qQWdL5t3ADvL5eC |
||
| 286 | R1EDEDzx74zYL3WVNcJe |
||
| 287 | nBQFprxj7U4hzDm22edM |
||
| 288 | xLpR5daeYKmKtTcjEanU |
||
| 289 | Lv6obrrXW5JWbEoKn4qG |
||
| 290 | patrf76fKwKMZnvwxUhz |
||
| 291 | 3iSLkfZQLgQoJHWvzVCR |
||
| 292 | E7e7GmJwgLPri45ctU4W |
||
| 293 | NuN72W8UyWzGTK |
||
| 294 | ``` |
||
| 295 | |||
| 296 | ぱっと見、Base64っぽいので、デコードしてみますが、なんかよく解らないバイナリの値になりました。 |
||
| 297 | よく見るとBase64で使われるはずの +/ が見当たりません。なんの文字が使われているかちょっと確認してみましょう。 |
||
| 298 | シェル芸が光ります。 |
||
| 299 | |||
| 300 | ```bash |
||
| 301 | $ cat file5_dns.txt|grep -o .|sort|uniq|xargs|tr -d ' ' |
||
| 302 | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
||
| 303 | ``` |
||
| 304 | |||
| 305 | ## Base ? encoding |
||
| 306 | |||
| 307 | 数字・英大文字・英小文字・記号は無し |
||
| 308 | という事が解ります。 |
||
| 309 | |||
| 310 | Base64ではなくて、他のエンコーディング形式かもしれません。 |
||
| 311 | 予め、以下にまとめてあるので確認してみます。 |
||
| 312 | |||
| 313 | raintrees.net - CTF Crypto - Base N encoding |
||
| 314 | https://raintrees.net/projects/a-painter-and-a-black-cat/wiki/CTF_Crypto#Base-N-encoding |
||
| 315 | |||
| 316 | 以下、抜粋 |
||
| 317 | |||
| 318 | | 方式 | 使用される文字 | 参考 | |
||
| 319 | |--------|------------------------------------------------------|------| |
||
| 320 | | Base58 | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz | Bitcoinに利用 |
||
| 321 | | Base62 | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 | JavaScriptの難読化等 |
||
| 322 | |||
| 323 | この特徴に合致しそうなのが、Base58とBase62であることが解ります。なんというマニアックなエンコード方式w |
||
| 324 | |||
| 325 | 使われている文字をもう一度確認してみましょう。 |
||
| 326 | |||
| 327 | ``` |
||
| 328 | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
||
| 329 | ``` |
||
| 330 | |||
| 331 | 数字 0 英大文字 I O 英小文字 l が見当たりませんね。実はこれ、Base58の特徴と合致します。 |
||
| 332 | |||
| 333 | >Base58は、Bitcoinに利用されているエンコーディング方式で、数字として間違えやすい0OやIlを意図的に除外しているそうです(知らんけど) |
||
| 334 | |||
| 335 | ## Base58によるdecode |
||
| 336 | |||
| 337 | そんな訳でBase58でデコードしてみます。 |
||
| 338 | ググると以下が使えそうなことが解りました。 |
||
| 339 | |||
| 340 | https://asecuritysite.com/encryption/base58 |
||
| 341 | |||
| 342 | 後は、やるだけ。以下、ソルバ。 |
||
| 343 | |||
| 344 | ```python |
||
| 345 | import sys |
||
| 346 | |||
| 347 | val='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' |
||
| 348 | |||
| 349 | from hashlib import sha256 |
||
| 350 | |||
| 351 | # 58 character alphabet used |
||
| 352 | alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' |
||
| 353 | |||
| 354 | |||
| 355 | if bytes == str: # python2 |
||
| 356 | iseq = lambda s: map(ord, s) |
||
| 357 | bseq = lambda s: ''.join(map(chr, s)) |
||
| 358 | buffer = lambda s: s |
||
| 359 | |||
| 360 | def b58encode(v): |
||
| 361 | |||
| 362 | origlen = len(v) |
||
| 363 | v = v.lstrip(b'\0') |
||
| 364 | newlen = len(v) |
||
| 365 | |||
| 366 | p, acc = 1, 0 |
||
| 367 | for c in iseq(v[::-1]): |
||
| 368 | acc += p * c |
||
| 369 | p = p << 8 |
||
| 370 | |||
| 371 | result = '' |
||
| 372 | while acc > 0: |
||
| 373 | acc, mod = divmod(acc, 58) |
||
| 374 | result += alphabet[mod] |
||
| 375 | |||
| 376 | return (result + alphabet[0] * (origlen - newlen))[::-1] |
||
| 377 | |||
| 378 | |||
| 379 | def b58decode(v): |
||
| 380 | |||
| 381 | if not isinstance(v, str): |
||
| 382 | v = v.decode('ascii') |
||
| 383 | |||
| 384 | origlen = len(v) |
||
| 385 | v = v.lstrip(alphabet[0]) |
||
| 386 | newlen = len(v) |
||
| 387 | |||
| 388 | p, acc = 1, 0 |
||
| 389 | for c in v[::-1]: |
||
| 390 | acc += p * alphabet.index(c) |
||
| 391 | p *= 58 |
||
| 392 | |||
| 393 | result = [] |
||
| 394 | while acc > 0: |
||
| 395 | acc, mod = divmod(acc, 256) |
||
| 396 | result.append(mod) |
||
| 397 | |||
| 398 | return (bseq(result) + b'\0' * (origlen - newlen))[::-1] |
||
| 399 | |||
| 400 | print 'Input:\t',val |
||
| 401 | print 'Base58:\t',b58decode(val) |
||
| 402 | ``` |
||
| 403 | |||
| 404 | で、以下がフラグ |
||
| 405 | |||
| 406 | ``` |
||
| 407 | 出力結果、中略 |
||
| 408 | ・ |
||
| 409 | ・ |
||
| 410 | ・ |
||
| 411 | TMCTF{DNSTunnelExfil} |
||
| 412 | ``` |
||
| 413 | |||
| 414 | # Analysis-Defensive 200 |
||
| 415 | |||
| 416 | なんかzipファイルを渡され、中身はdataというバイナリファイルと、q.jpgというテキストファイルが入っています。 |
||
| 417 | |||
| 418 | q.jpg(中身はrubyのソースコードかな?) |
||
| 419 | |||
| 420 | ```ruby |
||
| 421 | function rc4 { |
||
| 422 | please implement it yourself. |
||
| 423 | } |
||
| 424 | |||
| 425 | function md5($txt){ |
||
| 426 | please implement it yourself. |
||
| 427 | } |
||
| 428 | |||
| 429 | function invoke-Encryption{ |
||
| 430 | $FileName = "ZGF0YQ==" |
||
| 431 | $FileBase64Data = ???????? |
||
| 432 | [Byte[]] $FileBinByte = [Byte[]][Convert]::FromBase64String($FileBase64Data) |
||
| 433 | [Byte[]] $FileNameByte = [Byte[]][Convert]::FromBase64String($FileName) |
||
| 434 | $enc = [System.Text.Encoding]::ASCII |
||
| 435 | $key = "Y2hjaGVz" |
||
| 436 | $key1 = [System.Convert]::FromBase64String($key) |
||
| 437 | $key1 = [System.Text.Encoding]::UTF8.GetString($key1) |
||
| 438 | $key1 = md5($key1) |
||
| 439 | $key1 = $key1.Substring(8,16) |
||
| 440 | [Byte[]]$key1 = $enc.GetBytes($key1) |
||
| 441 | [Byte[]]$key2 = [Byte[]][Convert]::FromBase64String($key) |
||
| 442 | $FileBinByte = $key2 + $FileBinByte |
||
| 443 | $FileBinByte = rc4 $FileBinByte $key1 |
||
| 444 | $tempFile=[System.Text.Encoding]::Default.GetString($FileNameByte); |
||
| 445 | if($tempFile.Length -ne 0){ |
||
| 446 | if($FileBinByte.Length -ne 0){ |
||
| 447 | if(Test-Path "$tempFile"){rm "$tempFile"} |
||
| 448 | $fs=New-Object System.IO.FileStream($tempFile,[System.IO.FileMode]::CreateNew) |
||
| 449 | $fs.Write($FileBinByte,0,$FileBinByte.Length) |
||
| 450 | $fs.Close() |
||
| 451 | } |
||
| 452 | |||
| 453 | } |
||
| 454 | } |
||
| 455 | invoke-Encryption |
||
| 456 | ``` |
||
| 457 | |||
| 458 | 実装してねという事かと思いますが、チームメイトのcatさんがやってくれました。 |
||
| 459 | ほんと天才やでぇ。 |
||
| 460 | |||
| 461 | で、中身はpcapファイルでした。 |
||
| 462 | |||
| 463 |  |
||
| 464 | |||
| 465 | 怪しげなcookieの値があるのが解ります。 |
||
| 466 | |||
| 467 | ``` |
||
| 468 | asdf=d01J5ln6eJxopAgX2SgmLRYGt5X70XRw4HL6sFoDbvWD5yQ%3D; |
||
| 469 | qwer=fJDeRjsja7z8wcPVLrZzm6jYl3UsvQC9AoduZgL24n1NYs8%3D; |
||
| 470 | zxcv=%2Fvox%2Bi3on9Iy1U%2B2itypfjagJ06762d9yfkxI%2FLgSq3a2PJXwdnQ8BhDI9ofW9HXXSQMaEXBkYdrun%2BF%2BxIi3a%2B3TvHY |
||
| 471 | ``` |
||
| 472 | |||
| 473 | ## cookieの値で通信内容を偽装するMalware |
||
| 474 | |||
| 475 | なんでしょうねコレ・・・。ふと、マルウェアの通信で使ってるんじゃないかと気づき(だって、DNSで偽装通信してるくらいだしね) |
||
| 476 | ちょっと調べてみました。 |
||
| 477 | |||
| 478 | ありました。 |
||
| 479 | |||
| 480 | Cookieヘッダーを用いてC&CサーバとやりとりするマルウエアChChes(2017-01-26) |
||
| 481 | https://www.jpcert.or.jp/magazine/acreport-ChChes.html |
||
| 482 | |||
| 483 | {{rawhtml(<blockquote class="embedly-card"><h4><a href="https://www.jpcert.or.jp/magazine/acreport-ChChes.html">Cookieヘッダーを用いてC&CサーバとやりとりするマルウエアChChes(2017-01-26)</a></h4><p>Cookieヘッダーを用いてC&CサーバとやりとりするマルウエアChChes(2017-01-26)</p></blockquote><script async src="//cdn.embedly.com/widgets/platform.js" charset="UTF-8"></script>)}} |
||
| 484 | |||
| 485 | >ちなみに、問題文には、 xiangqi とだけ書いてありました。xiangqi は「中国の将棋」の意味らしいです。ChChesと合致しますね。 |
||
| 486 | |||
| 487 | |||
| 488 | なんか、このページには、この怪しげなクッキーから通信内容を復号化するソースコードまで書かれています。 |
||
| 489 | |||
| 490 | ## ソルバ |
||
| 491 | |||
| 492 | 後は・・・やるだけ!ではないです。URLエンコーディングされている箇所があるので、そこだけ置換します。 |
||
| 493 | |||
| 494 | ``` |
||
| 495 | %3D → = |
||
| 496 | %2F → / |
||
| 497 | %2B → + |
||
| 498 | ``` |
||
| 499 | |||
| 500 | ```python |
||
| 501 | from Crypto.Cipher import ARC4 |
||
| 502 | import hashlib |
||
| 503 | |||
| 504 | cookie_data="asdf=d01J5ln6eJxopAgX2SgmLRYGt5X70XRw4HL6sFoDbvWD5yQ=;qwer=fJDeRjsja7z8wcPVLrZzm6jYl3UsvQC9AoduZgL24n1NYs8=;zxcv=/vox+i3on9Iy1U+2itypfjagJ06762d9yfkxI/LgSq3a2PJXwdnQ8BhDI9ofW9HXXSQMaEXBkYdrun+F+xIi3a+3TvHY" |
||
| 505 | data_list = cookie_data.split(';') |
||
| 506 | dec = [] |
||
| 507 | for i in range(len(data_list)): |
||
| 508 | tmp = data_list[i] |
||
| 509 | pos = tmp.find("=") |
||
| 510 | key = tmp[0:pos] |
||
| 511 | val = tmp[pos:] |
||
| 512 | md5 = hashlib.md5() |
||
| 513 | md5.update(key) |
||
| 514 | rc4key = md5.hexdigest()[8:24] |
||
| 515 | rc4 = ARC4.new(rc4key) |
||
| 516 | dec.append(rc4.decrypt(val.decode("base64"))[len(key):]) |
||
| 517 | print("[*] decoded: " + "".join(dec)) |
||
| 518 | ``` |
||
| 519 | |||
| 520 | 実行結果 |
||
| 521 | |||
| 522 | ``` |
||
| 523 | [*] decoded: AWIN7-PC*1234*TMCTF{e3526984696bc9f89ac88d4f72abe24}?361846839?C:\Users\win7\AppData\Local\Temp?1.7.3 (1024x768)*6.1.7601.17514 |
||
| 524 | ``` |