$30 off During Our Annual Pro Sale. View Details »

HackmeCTF 平台背後的心酸血淚史

Inndy
September 29, 2018

HackmeCTF 平台背後的心酸血淚史

TDOH Conf 2018

Inndy

September 29, 2018
Tweet

More Decks by Inndy

Other Decks in Technology

Transcript

  1. HACKMECTF
    平台背後的⼼酸⾎淚史
    ⽤⾃⼰的實體機器架站真的不好玩

    View Slide

  2. HACKMECTF 平台背後的⼼酸⾎淚史
    # WHOAMI
    ▸ 我是 Inndy,也可以叫我⽊棍
    ▸ 講過 SITCON / HITCON / TDOH Conf
    ▸ ⾦盾獎 2016 1st / 2017 2nd
    ▸ ⼈⽣⽬標是成為興趣使然的 Security Master

    View Slide

  3. View Slide

  4. 平台介紹

    View Slide

  5. HACKMECTF 平台背後的⼼酸⾎淚史
    HACKMECTF
    ▸ 2016/6 上線,在⾼鐵上趕出來的 scoreboard。當時為了
    AIS3 計畫,來⾼雄分享經驗,幫忙打廣告。
    ▸ 跟⽼師要了 Lab ⼀台機器,就開始了這個平台

    View Slide

  6. ▸ 有各種類型的題⽬
    HACKMECTF 平台背後的⼼酸⾎淚史
    HACKMECTF

    View Slide

  7. ▸ 到⽬前為⽌有 1105 ⼈登⼊
    ▸ 8239 次有效的 submit
    ▸ 來⾃ 2361 不同的 IP
    ▸ All Kill 分數 9900
    ▸ 計分版系統收到了1499129 個 request
    HACKMECTF 平台背後的⼼酸⾎淚史
    HACKMECTF

    View Slide

  8. HACKMECTF 平台背後的⼼酸⾎淚史
    HACKMECTF
    ▸ 原本的硬碟是跟同學借⽤的 1TB DeadGate SeaGate
    ▸ ⽤了不知道幾年了,就在 2017/7/29,硬碟掛了... G___G
    ▸ 謝謝 OSS Lab 提供資料救援協助,VM image 沒有壞掉
    ▸ 2017/8/3 資料還原完成,換上 SSD,順便加了⼀條 DRAM

    View Slide

  9. HACKMECTF 平台背後的⼼酸⾎淚史
    HACKMECTF
    ▸ 前幾天學校⾼壓電設備維護,全校斷電
    ▸ 140.118.0.0/16 直接從網路上消失
    ▸ ntust.edu.tw DNS 也消失
    ▸ 我的機器就這樣跟著 offline T____T

    View Slide

  10. HACKMECTF 平台背後的⼼酸⾎淚史
    HACKMECTF
    ▸ ⾃⼰管理實體機器,放在 Lab 這件事情是很可怕的
    ▸ 因為各種天災⼈禍...

    View Slide

  11. 技術架構

    View Slide

  12. Host: Ubuntu 18.04
    qemu-kvm: Ubuntu 18.04
    nginx / php-fpm
    nginx (SSL/TLS)
    proxy_pass to VM
    xinetd as TCP proxy
    xinetd: docker exec
    docker: web docker: pwnable

    View Slide

  13. HACKMECTF 平台背後的⼼酸⾎淚史
    INFRASTRUCTURE
    ▸ ⼀開始 Host 是 Debian jessie,後來⽤ Ubuntu 16.04,現在
    已經升級 Ubuntu 18.04
    ▸ HackmeCTF 放在 qemu-kvm 內,OS ⽤ Ubuntu
    ▸ Host 的 nginx 負責 SSL/TLS,proxy_pass 給 VM
    ▸ Pwnable 之類,需要 TCP 直接連線的題⽬⽤ xinetd pass 給
    VM

    View Slide

  14. HACKMECTF 平台背後的⼼酸⾎淚史
    INFRASTRUCTURE
    ▸ 能夠 arbitrary code execution 的題⽬都關進 docker
    ▸ docker 不是設計來當作 sandbox 的,有機會被 break out
    ▸ 部分 web 也⼀起關進去,在裡⾯跑 nginx + php-fpm
    ▸ Pwn 的部分,把 docker network 關掉,⽤ xinetd + docker
    exec ⾛ stdio

    View Slide

  15. Q&A

    View Slide