Phân tích BKAV bị hack

Chào các bạn, dạo này vụ BKAV bị hack đang sốt xình xịch trên các diễn đàn và các mặt báo. Mới đây nhất, hacker đã tung một đoạn video mô tả về cách hack của mình vào server của BKAV. Tạm bỏ qua việc này có thật hay không thì tôi thấy trong video có rất nhiều thứ đáng để chúng ta học hỏi. Tất nhiên không phải học theo để hack một server nào đó mà là để chúng ta có thêm kiến thức, gia cố server, củng cố lại dịch vụ bên trọng để tránh có thể xảy ra những sự cố như này.

Trước khi vào bài, tôi muốn nói tôi chỉ là một coder bình thường không phải chuyên viên Security (tôi sẽ gọi là secu cho gọn) hay hacker cao siêu nào cả. Vậy nên bài viết có thể thiếu sót, nếu có, mong các bạn comment và chỉ ra để tôi có thêm kiến thức, cám ơn các bạn.


SQL Injection

Ok cái này ai cũng biết. Nhưng khá hài hước là cách hack này đúng kiểu SGK, quá dễ! Anh hacker kia chỉ cần input đúng đoạn password trong SGK ra: abc or 1=1-- -. Và bang! Tôi nghĩ anh hacker kia hẳn rất ngạc nhiên và phải xoa mắt vài lần vì tưởng là đang mơ, sao dễ như ăn kẹo thế này?

Nói một cách công bằng thì SQL Injection luôn là một lỗ hổng tiềm tàng có thể xảy ra với bất kì hệ thống nào, nhưng hãy nhìn đoạn injection kia xem? Quá cơ bản. Một công ty bảo mật mà secu cho server mình như thế này (và chắc là không có pentest cho nó nên mới vầy) thì không thể chấp nhận được.

Bài học:

  • Để ý những điều cơ bản nhất. Chính những điều cơ bản nhất là nền tảng cho những thứ lớn lao, bạn không nên bỏ qua nó.
  • Cần pentest server khi public ra bên ngoài
  • Cần sử dụng tool để rà xoát xem server có sử dụng phần mềm bên thứ 3 nào bị outdate, bị lỗ hổng bảo mật không? Nếu có hãy cập nhật ngay lên bản mới nhất secu hơn và ổn định nhất có thế. Tool thì có thể tham khảo blackduck

Đặt username là admin

Như các bạn thấy, người administrator của server này để username của mình là admin, yeah tất nhiên rồi tại sao không? Tôi là administrator thì tôi đặt là admin thôi?

Không không! Username admin là một trong những username phổ biến nhất cái cuộc đời nay, và người ta sẽ nghĩ ngay ra cái tên này trong đầu khi muốn hack một hệ thông nào đó. Bạn có thấy trong video anh hacker kia đã chọn ngay cái username là admin không?

Bạn nên đặt username khác admin để tránh bị Brute-force attack , tránh bị đoán password và tránh bị dòm ngó. Tại sao bị dòm ngó? Ví dụ hack vô được một server nào đó chứa một list user, hắn sẽ cố gắng truy cập tiếp, vậy điều tiếp theo hắn làm là gì? Tìm kiếm user có quyền cao hoặc cao nhất? Ai có quyền cao hoặc cao nhất? Administrator chứ ai. Hắn sẽ kiếm ngay user nào có tên admin. Còn nếu bạn đặt là stupid_user hắn sẽ ít để ý tới hơn.

Tất nhiên việc đặt username khác admin không làm cho bạn vô địch, không làm cho hack bị vô hiệu, chỉ là làm cho hacker khó hack vô hệ thống của bạn hơn thôi cũng như cho bạn thêm thời gian vì hắn phải làm thêm các bước khác.

Bài học: không nên đặt username của administrator hay user có quyền hạn cao bằng admin hay là root,hay là super_user hay những cái tên tương tự.

Không nên có nút: show password

Như các bạn thấy trong clip, hacker dễ dàng biết được password hiện tại của admin bằng cách nhấn nút show password. Tôi không biết là bên BKAV tự code hay là xài phần mềm bên thứ ba nhưng việc này khá nguy hiểm. Ngoài server đã bị hack thì không nói, anh hacker kia có thể thử sử dụng user/password này để thử trên các dịch vụ khác, và nếu người system admin chỉ sử dụng 1 account cho toàn bộ services thì lại càng tệ hơn nữa. Cái server mà anh hacker này SQL Injection chỉ là VPN server, muốn lấy được code a này phải vô được hệ thống chứa mã nguồn của BKAV. Server chứa code có thể ở local hoặc sử dụng một dịch vụ khác, và việc dùng chính password này để thử trên dịch vụ đó là điều hoàn toàn có thể xảy ra.

Bài học:

  • Khi code một phần mềm không nên để nút show password một cách bừa bãi và tốt nhất là đừng code nút show password
  • Không nên sử dụng 1 username/password cho toàn bộ dịch vụ của tổ chức