BKAV đã bị hack như thế nào?

BKAV lại bị hack, hacker nói sẽ live stream, nhưng, móng tay nhọn gặp da mặt dày, BKAV đã "xịt nước" tắt hết máy chủ! Sợ té đái là có thiệt nha bà con ơi.


Để đền bù cho đông đảo người hâm mộ, trong đó có tôi, hacker công bố hai video mô tả quá trình hack vào BKAV.

Trong video thứ nhất (thanks chunxong for the shoutout to this blog!), chunxong tìm thấy một máy chủ của BKAV ở địa chỉ https://118.70.155.198:8008. Máy chủ này giờ đã chết. Thật tội nghiệp, không biết ăn phải quả "thủy lôi" của vị lãnh đạo thiện chiến nào.

Trong video, có lẽ quay ngày 7/8/2021, máy chủ này chạy một sản phẩm security do BKAV tự chế có cái tên rất kêu BKAV IPS Firewall. Máy chủ yêu cầu phải đăng nhập và a-lê-hấp hacker nhập ' or 1=1-- và vô được luôn!

Cập nhật: chỗ này chưa chính xác lắm. chunxong nói rằng đoạn code đăng nhập mặc dù có lỗi SQL Injection, nhưng trước đó còn có một đoạn kiểm tra mật khẩu phải đúng như regular expression như sau:

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,}$)

Tức là mật khẩu phải dài ít nhất 8 ký tự và chứa một chữ cái thường, một chữ cái in, một chữ số và một ký tự đặc biệt trong chuỗi !@#$%^&*. Nếu chỉ đơn thuần nhập vào ' or 1=1-- sẽ không đủ điều kiện. Trong video, chunxong nhập vào 123456a@A' or 1=1--. Tôi không biết tại sao chunxong biết quy định của mật khẩu và sử dụng chuỗi 123456a@A. Chú ý là 123456a@A không phải là mật khẩu của account admin, như có người nói trong phần comment. Thật sự chỉ cần A!' or 1=1-- là có thể bypass được cái regular expression check.

$ python
> import re
> re_p = re.compile("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,}$)")
> p = "A!' or 1=1--"
> re_p.match(p)
<_sre.SRE_Match object at 0x109377b28>

Hacker không tin vào mắt mình, phải liên tục coi ngày, để chắc chắn rằng anh/chị ấy đã không bị cuốn vào cỗ máy thời gian kéo về năm 1999! Tại sao lại là năm 1999, tôi xin kể một chút về lịch sử. Làm nghề  nào cũng vậy, cần hiểu lịch sử để biết mình đang ở đâu trong dòng chảy tri thức nhân loại.

Hè năm 2002, vừa thi đại học xong tôi với đám bạn mướn một chiếc xe xuống Vũng Tàu tắm biển. Tôi còn nhớ như in chuyến đi đó, một phần vì trước khi đi tôi in ra một số bài về SQL Injection để đọc. Lúc đó kỹ thuật này còn rất mới mẻ và thật sự sau khi đi Vũng Tàu về thì không có chỗ nào mà tôi không hack được bằng SQL Injection.

Người phát hiện ra kỹ thuật SQL Injection là một hacker có biệt danh rất dễ thương Rain Forest Puppy tức rfp. Đúng ngày Noel 1998, rfp viết một bài mang tên "NT Web Technology Vulnerabilities" đăng trên tạp chí Phrack số 8. Nói thêm về Phrack, Phrack đã luôn và sẽ mãi là một trong những tạp chí đầu đàn về hacking, người còn sót lại chút tự trọng và vài gram hiểu biết không ai dám mở miệng so sánh Phrack với thể loại tạp chí phải trả tiền để đăng bài.

Bài của rfp trên Phrack là bài đầu tiên trong lịch sử nhắc đến SQL Injection, nhưng bài để lại ấn tượng sâu đậm nhất trong tôi là "How I hacked PacketStorm Forums" rfp viết vào tháng 2 năm 2000. Sau này tôi viết nhiều bài "Tôi đã hack XYZ như thế nào" cũng là vì muốn tri ân rfp.

Sau những đóng góp đột phá của rfp thì SQL Injection bắt đầu được chú ý và trở thành một trong những kỹ thuật hacking chính cho đến tận ngày nay. Xem thêm David Litchfield bàn về lịch sử SQL Injection ở đây.

Ở Việt Nam, lúc đó tôi và đa số bạn bè cũng chỉ dừng lại ở mức thực hành, không có đóng góp gì vào kỹ thuật này. Hacker Việt duy nhất có đóng góp là Đại "vicky" Tuấn của nhóm Vicky khét tiếng ở Đà Nẵng. Nghe nói bây giờ vẫn còn một thành viên Vicky đang ngày đêm inject tiền để "chốt đơn" các hacker mới lớn.

vicky phát hiện ra một kỹ thuật universal SQL Injection thông qua hàm convert. Thay vì phải union các kiểu mới đọc được dữ liệu, sử dụng kỹ thuật của vicky chỉ cần một query duy nhất là có thể đọc được dữ liệu ở cell bất kỳ. Nếu tôi nhớ không lầm thì vicky sử dụng kỹ thuật này để hack VNExpress. Đó là lần đầu tiên VNExpress bị hack.

Thế thì chúng ta đã hiểu tại sao chunxong lại nói về năm 1999. chunxong còn công bố toàn bộ mã nguồn của BIF, trời ơi, chỗ nào cũng có SQL Injection. Nói cho công bằng thì SQL Injection vẫn còn rất phổ biến, nhưng bị lỗ hổng sơ đẳng và ở khắp mọi nơi như BKAV thì không phải là sai sót nữa, mà là thiếu kiến thức cơ bản. Có ai ngờ rằng đằng sau lớp da mặt dày cộm láng cóng là những sản phẩm bị kẹt lại ở thế kỷ trước.

chunxong nói đây là cách họ có được foothold trong mạng BKAV. Anh/chị ấy chưa giải thích làm cách nào để từ đây chui sâu vào trong, hack được VALA, JIRA và Bluezone, nhưng hứa sẽ công bố thêm video nữa. Trong lúc chờ đợi thì chunxong công bố thêm một video quay ngày 8/8/2020 chứa chat logs của lãnh đạo BKAV.

Ngoài những thông tin tôi đã phân tích, một chi tiết thú vị là BKAV có làm việc với Tổng cục 5, Bộ Công An. Trước khi bị giải thể, Tổng cục 5 là cơ quan tình báo, có bằng chứng cho thấy họ hack để theo dõi giới hoạt động chính trị, người bất đồng chính kiến. Họ nằm trong danh sách khách hàng bị lộ của Hacking Team. Nếu có nhà báo nào muốn điều tra về việc này (tôi không rõ Việt Nam có còn nhà báo điều tra nào không, hay là tuyệt con mẹ nó chủng hết rồi), nên nghiên cứu đống email của Hacking Team bị Wikileaks công bố năm 2015.

Việc BKAV hợp tác với giới tình báo Việt Nam không mới, đã được Lulzsec phanh phui từ cả chục năm trước. Vấn đề là Tổng cục 5 đã bị giải thể từ năm 2018 còn đám lãnh đạo thì hoặc là đang ngồi tù hoặc là đang chờ ngày ra tòa. Gần đây nhất Nguyễn Duy Linh, cựu tổng cục phó, con của Nguyễn Văn Hưởng, mới bị bắt. Tất cả nhờ vào công của anh VũAL. 

Thế thì BKAV làm gì với Tổng cục 5 vào năm 2021? Dự án cũ? Giúp đối thủ của Mr.Linh theo dõi ông ấy? Hay giúp Mr.Linh theo dõi đám điều tra viên? Chỉ có chunxong mới có thể giúp chúng ta trả lời những câu hỏi này.

Nước nhà đang tràn ngập đau thương vì COVID, bao nhiêu cái dở cái xấu trồi lên cùng một lúc. Biết thì đã quá muộn, bao nhiêu đồng bào đã chết. Tôi hi vọng cú hack của chunxong sẽ mở đầu cho phong trào hacktivism với những hacker yêu tự do và sự thật, hack để đưa ra ánh sáng bao nhiêu gian dối lọc lừa ở quê nhà. Hacking is power!

Comments

walter said…
Link mega.nz trong bài http://www.anti-bkav.com/mon-qua-so-3.html, hình như có vấn đề gì anh ạ. Thấy windows security báo có virus.
someone said…
Hack để lòi ra những cái xấu này là điều rất tốt, để mn nhìn nhận và thay đổi. Cơ mà em thấy mọi thứ ko nên đi quá giới hạn. Ví dụ như đi quá sâu vào các bí mật của nhà nước như quốc phòng,... thì lại đẩy VN vào thế yếu trên bàn đàm phán với qg thù địch khác
babyaudiobook said…
@someone: bạn sai rồi. Thực tế là hack những cái đó để họ hiểu là họ còn sơ sót trong bảo mật. Chứ cứ cùng nhau tung tin lạc hg dư luận thì chỉ chết mình. Bọn qg kiểu gì chả hack đc nên chỉ bí mật vs dân thôi còn chúng lạ quái gì :)))
Luong Son said…
This comment has been removed by the author.
Phan Dung said…
Anh Thái đã bỏ quốc tịch VN chưa?

Profile như anh mà nói xấu cộng quân là dễ bị để ý lắm đó.
admin said…
đúng là phải hack từ những thằng quốc doanh sân sau như BKAV để lòi ra quan lại nhà sản đã rửa tiền qua các dự án công nghệ cấp nhà nước ( bluezone, các thứ mạng xã hội abc đã có và sau này nếu có ) và mưu đồ bẩn như thế nào, những dự án camera AI để huy động trái phiếu cũng là nhiều thứ cần phải phơi bày ra ánh sáng trước công chúng. Đúng là không thể tin được bất kỳ thằng quốc doanh nào cả, một ổ phỉ bên trong.
Hacking is the Power hahaha
Thai Duong said…
Luong Son: đúng là khó hơn ' or 1=1-- nhưng mà cũng không cần phải brute force mật khẩu đâu bạn. Tôi có cập nhật bài viết rồi đó.
Luong Son said…
This comment has been removed by the author.
STL - Sinh Tử Lệnh - Sờ Ti Lợn.. 😌
BabyV0X said…
Vụ TC5 trong video chat nếu tua chậm thì có đoạn nói đến, kiểu là ứng dụng Demo cho TC5
monkey said…
This comment has been removed by the author.
Teeh_Ex said…
Việc chunxong đưa ra 1 mật khẩu không phải là dạng ngẫu nhiên như 123456a@A có thể cho thấy chunxong có thể trước đây đã từng làm ở BKAV hoặc có bạn bè đã từng làm và chia sẻ thông tin này.

Qua đây cũng là bài họccảnh báo các công ty làm security. Đừng "lo" bảo vệ khách hàng quá mà quên mình lol.

Rất cảm ơn anh Thái đã chia sẻ.
Luong Son said…
This comment has been removed by the author.
Luong Son said…
This comment has been removed by the author.
Sang Ke said…
Với những gì mà chunxong đã làm, tôi phong cho anh ấy là hacker mũ trắng!
Leo said…
@Luong Son db của BKAV tưởng là MySQL chứ nhỉ? b xem tìm thấy là MSSQL ở đâu vậy?
Luong Son said…
This comment has been removed by the author.
Leo said…
@Luong Son theo như một số bài trên mạng thì DB của BKAV là MySQL( cái này mih cũng ko kiểm chứng dk) và câu Query được thực hiện dưới quyền root của MySQL( chứ ko pai của root của hdh) mà đã là quyền root thì sẽ có toàn bộ quyền trong MySQL thôi(đây là default,"Some accounts have the user name root. These are superuser accounts that have all privileges and can do anything" trích dẫn trang chủ MySQL). Còn nếu DB là MSSQL, và nếu câu query cũng chạy dưới quyền sa thì cũng tương tự như root của MySQL thôi, bất kể db nào trong csdl nó đều truy vấn dk hết. Mình nói thêm, chắc bạn nhầm 1 số chỗ, khi mà bạn sử dụng SQL server authent và nhập acc: sa như thế này: String dbURL = "jdbc:sqlserver://localhost\\sqlexpress";
String user = "sa";
String pass = "secret";
thì nó ko lq gì đến Windows authentication nhé, và một khi mih có thể thực hiện query dưới quyền root or admin( quyền cao nhất rồi) thì mih ko cần thiết tìm password của root hay sa làm gì nữa cả( sorry vì mih nói hơi rối!)
Luong Son said…
This comment has been removed by the author.
Luong Son said…
This comment has been removed by the author.
Luong Son said…
This comment has been removed by the author.
Leo said…
@Luong Son B
-CM1:"bạn đã viết ứng dụng web kết nối sql bao giờ chưa?..."
+ ý b là mih ko hiểu cách để tạo connect đến db?
+ b hỏi mih có biết MSSQL Win Authen... ko? Mình có hiểu user hdh, sql,... Mih biết hay ko thì có lq đến việc mà db của họ được run bởi root user của db sao? Mih sẽ coi như db của BKAV là MSSQL vậy theo bạn khi viết ứng dụng web connect đến db và sử dụng SQL Server authentication( ac là 'sa':'...') thì mọi query sẽ dk thực hiện dưới quyền của ai? sa,right?( mih cũng kb ns thế này b có hiểu ý mih ko, nhưng mih ko biết giải thích thế nào hơn, chỉ ns chung là db của họ mà chạy bởi root user thì Chunxong là gì trong db họ cũng dk)
-CM2: ns về lỗ hổng SQLi thì hacker có thể làm dk các việc thêm, sửa, xóa dữ liệu, đọc local file, write file to local, rce. Nhưng theo như mih tìm hiểu về bài tấn công của Chunxong thì hacker này ko tạo dk rce bằng SQLi thì chắc là cũng ko write file dk rồi, đọc file thì ko thấy ns đến
+ bạn ns chiếm quyền điểu khiển ứng dụng( b2 dẫn đến bước 3,4 khó hiểu là sao?) nếu chiếm dk quyền rồi thì cần gì pai làm mấy bước khác làm bước 3, 4 làm gì nữa?
+ và cũng theo tt mih tìm hiểu được( có thể sai) thì bằng 1 cách nào đó( ko pai SQLi) đã tạo được meterpreter reverse shell( cách nào thì chắc phải đợi puclic thì mới biết được)
-CM3: b bảo mih dùng 1 SQL User gì gì đấy để hack hệ thống họ xem? b đang nghĩ cái gì vậy? họ cho mih 1 acc db hiển nhiên họ đã pai restrict các lệnh độc hại rồi chứ?
- Mih cũng muốn hỏi b là vậy b đã bao h thực hiện dk RCE through sql injection chưa? vậy theo bạn có những lý do gì dẫn đến RCE này?
- Về việc mà sqli của BKAV này thì mih cũng ko còn lạ gì vì ở VN mih cũng còn đầy các trang web bị lỗi SQLi này, vấn đề là do các coder còn quá non tay( ns chung là kém vì SQLi này chẳng quá khó để khắc phục).
Luong Son said…
This comment has been removed by the author.
Leo said…
e có thắc mắc vs ad là tại sao chữ thái lại ko viết họa vậy ạ-_-
Luong Son said…
This comment has been removed by the author.
Leo said…
@Luong Son Okkk b
Thai Duong said…
Leo, Luong Son: tui thấy hai bác đều nói đúng, mà mỗi người nói một kiểu thôi, không có gì bất đồng với nhau cả.

Leo: tui cũng nghĩ đến khả năng từ SQLi bằng cách read/write local files, nhưng muốn làm được thì cái MySQL daemon phải chạy dưới quyền OS root (lưu ý là khác với root@localhost trong MySQL nhé). Hiếm khi nào tui thấy người ta chạy MySQL dưới quyền root lắm.

chunxong nói rằng

>- Through SQLi, I know they run MySQL as 'root' user, but, no ways to RCE from there.

Nhưng tui không rõ 'root' này là OS root hay là DB root.
Luong Son said…
This comment has been removed by the author.
Manh Tuong said…
Việc biết được quy luật không khó thông qua brueforce là biết ngay, nhiều bạn nói phải làm ở đó thì hơi vô lý, cái đó hoàn toàn có thể bị bruteforce ra thôi.
Leo said…
@Thai Duong để read/write local files(MySQL) thì phải có các điều kiện là:
+ user trong MySQL ko bị disable quyền outfile(write file) và infile(read file)
+ user chạy MySQL daemon phải có quyền write đến cái directory mih muốn ghi. VD: thông thường MySQL daemon thường được chạy bởi mysql(MariaDB)/mysqld thì có thể write file đến thư mục /tmp, /var/lib/mysql,...( những thư mục mà mysql/mysqld có quyền write). Và MySQL daemon hoàn toản có thể chạy bởi other normal user cũng như root. Thế nên theo em ko nhất thiết MySQL daemon phải chạy dưới quyền root OS đâu ạ@@
---Đây chỉ là một ít kinh nghiệm và lập luận của em nếu có sai thì mong ai đọc được cmt này góp ý và bỏ qua cho, tk u!!!---
Thai Duong said…
Leo: bạn nói đúng. Sorry comment của tui chưa rõ lắm. Ý tui là khi MySQL chạy dưới quyền OS root thì mình sẽ có thể đọc và ghi file bất kỳ, do đó dễ chuyển SQLi thành RCE. Còn khi chạy dưới quyền chẳng hạn như mysql thì sẽ hạn chế hơn nhiều, khó chuyển từ SQLi sang RCE.
Thai Duong said…
Manh Tuong: yeah đồng ý. Mới đầu tôi cũng ngạc nhiên sao mà đoán được quy luật, sau đó nói chuyện với các bạn chuyên đi hack dạo thì mới biết sách vở đều nói nên kiểm thử SQLi với mật khẩu đúng chuẩn, do tôi lâu rồi không có làm SQLi nên không biết thôi.
Leo said…
@Thai Duong Vang@@
Hà. said…
Thread trên Raidforums bị xóa mất rồi anh Thái
Chun said…
Em hơi băn khoăn việc có nên mua phần mềm diệt virut để sử dụng PC tại nhà. Có lần tham gia buổi chia sẻ của anh về bảo mật thì thấy không cần thiết lắm vì không có ý nghĩa.
Ngay cả những phần mềm diệt virut cũng có lối. và cũng có thể bị tấn công.
Nhưng nếu mua để phòng tránh 1 số trường hợp mà click vào link lạ thì phần mềm diệt virut sẽ tự động phát hiện được không anh?
Anonymous said…
Zatuzik phải ko ta?