SVATTT2019
Team mình may mắn được tham gia vòng chung kết SVATTT 2019. Trước khi tham gia chung kết mình có nói với vài đứa trong team là hy vọng được giải nhì vì xác định không thể ăn được team justdoit rồi :))) Kết quả chung cuộc xếp hạng 3, may mà có 2 giải nhì nên team mình vẫn được giải nhì 😀
Toàn bộ tools team mình sử dụng được public tại https://github.com/khanhnt2/svtools ngoại trừ cái tự động submit flag và graylog server :v
Mình chơi chủ yếu là RE nhưng tấn công/phòng thủ không có RE nên mình đảm nhiểm vai trò phòng thủ. Và khi cuộc thi bắt đầu thì mình phạm phải một lỗi cực lớn đó chính là không biết sự xuất hiện của NAT trong iptables nên mình không thể nào bật được tool proxy của team để phòng thủ. Và phải đến hơn 2 - 3 tiếng sau, nhờ một thành viên trong team thì mình mới biết tới NAT và bắt đầu từ đó mình mới monitor được. Và chuỗi thời gian kinh hoàng bắt đầu từ đấy.
vuln_vm
Mới bật log lên xem thì thấy đã có đội exploit bài vuln_vm của team mình và đọc flag.
Nhưng tụi mình đã phòng thủ được bằng cách chuẩn bị trước rule kiểm tra gói tin từ server gửi chỉ cần có từ khóa SVATTT2019 hoặc base64 của nó là drop connection hết. Duy nhất chỉ có team justdoit là cắm được backdoor vào do tụi mình không filter lệnh wget gửi từ client vì sợ con bot kiểm tra service có gửi từ đó nên không dám filter, ai ngờ đến tầm 3h chiều thì bot bắt đầu đi kiểm tra service 🙂
Team mình cũng tính tới trường hợp service bị cắm backdoor thì team mình sẽ tự mở một port riêng rồi tự exploit service của mình để phòng thủ. Ai ngờ người tính không bằng trời tính, bằng một phép thuật nào đấy, team justdoit đã làm gì đó với service vuln_vm của team mình và một số team khác bị down. Backdoor của justdoit vẫn gửi flag đều đều mà service của team mình vẫn cứ down :(. Cho đến tận 5 rưỡi chiều, sau khi cuộc thi gần kết thúc thì log server của mình mới nhận được log từ vuln_vm 🙂 Thời gian trên log server của mình là UTC+0 nên cần cộng 7 tiếng nữa mới ra thời gian chính xác trong lúc thi.
ratio
Tại vì tool tụi mình có khả năng sửa nội dung gói tin của server lẫn client nên mình đã viết một plugin để sửa lại gói tin trả về của server thành {'a': 1234, 'b': 1234, 'c': 1234}
từ đó các đội tấn công không thể nào giải ra được flag. Nhưng khi con bot bắt đầu hoạt động thì nó lại đánh dấu service này là down. Mình không biết tại vì sao 🙁 Sau khi cuộc thi kết thúc mình mới nghĩ ra 1 cách patch cho bài này là import source code của bài này luôn, mã hóa flag fake rồi gửi về client, vì tool được viết bằng python và bài này cũng được viết bằng python.
HelloVietnam
Phòng thủ câu này khá dễ, chỉ cần filter có từ khóa SVATTT2019 rồi drop connection là được. Nhưng nếu trong gói request có trường Accept-Encoding: gzip, deflate
thì nội dung sẽ bị nén và khó tìm ra được chuỗi SVATTT2019, team mình cũng viết plugin xóa trường đó đi để đảm bảo nội dung trả về từ server luôn là plaintext. Khá tiếc một chút là câu này, Gia, một thành viên trong team mình làm được đầu tiên và đem đi tấn công, do không thêm trường gzip kia nên bị các team khác bắt được payload. Nhưng dù sao Gia cũng là nhân vật gánh team, đưa team từ vị trí 16 lên số 3 :))))))
Hai câu exploit còn lại
Cách phòng thủ vẫn giống như bài vuln_vm, ngoại trừ mình có thêm một cái rule kiểm tra từ khóa http:// 167.179.100.219
là server dùng để tải backdoor của team justdoit. Team justdoit lấy flag trong vô vọng :))) Team mình có thử lấy payload để replay attack nhưng không được. Team không có ai rành heap glibc cho lắm
Cuối cùng là cảm ơn các anh trong InsecLab đã dành thời gian để giúp bọn mình chơi thử tấn công/phòng thủ và anh Duy vì đã public tool https://github.com/l0stb1t/hylian_shield. Từ đó tụi mình tiết kiệm rất nhiều thời gian để viết lại một cái tương tự.
Chuyện bên lề
Trong thời gian rảnh rỗi ngồi nhìn service vuln_vm bị down thì tụi mình có xem thử backdoor của team justdoit làm gì. Thì đơn giải chỉ là tail
file flag và dùng curl
để gửi GET request. Một thành viên trong team mình đề xuất ddos cái server nhận flag tại nó nằm ngoài phạm vi của BTC. Cuối cùng là mình viết 1 script đơn giản gửi flag fake nhưng được một lúc thì bị justdoit phát hiện và response là "fu" :))))
Hình như team zeronight có sử dụng tool proxy hao hao team mình thì phải.