egan

12 posts
Tấn công web căn bản: Footprinting and Reconnaissance P.1
Suy nghĩ như một hacker

Tuyên bố từ chối trách nhiệm
Đây không phải là hướng dẫn để bạn đi phá hoại các website khác, đây là bài viết giúp bạn hiểu rằng, hacker ngoài kia suy nghĩ như thế nào nếu như họ tấn công vào website bạn. Từ suy nghĩ đó, bạn sẽ có được những phương án ngăn chặn, phòng thủ hiệu quả nhất, hoặc ít nhất là bạn biết được website của mình đang gặp những lỗ hỏng bảo mật nào để sửa chữa kịp thời.
Tôi sẽ rất vui nếu như bạn phát hiện lỗ hỏng và báo cho chủ website để họ vá lỗi, đừng tư lợi cá nhân, giúp người khác cũng như là giúp cho chính bản thân mình.
Tôi sẽ không chịu trách nhiệm nếu như bạn đọc xong bài viết của tôi rồi đi phá hoại người khác, hãy tuân thủ luật pháp.

Before mở bài
Trong bài viết này tui có dùng tiếng Anh tiếng Việt lộn xộn, một số chỗ tui sẽ giữ nguyên tiếng Anh để các bạn có thể có được keyword mà search Google tìm hiểu sâu hơn. Một số bạn không quen với cách viết này sẽ có thể không thích.

Mở bài
Cô giáo nói, viết văn phải có mở bài, nếu mà không có cô sẽ trừ điểm
Xã hội phát triển, con người ngày càng có nhiều cơ hội để tiếp cận với thế giới internet, mỗi người ai cũng sở hữu ít nhất 1 chiếc điện thoại thông minh trong túi quần. 3G/4G/5G đã về tới vùng bản, tới từng ngõ từng ngách, ra tận đến đảo xa, trên núi thì cũng có nếu xài internet vệ tinh của Elon Musk. Kèm theo đó là sự bùng nổ của các ứng dụng di động, ứng dụng không di động, ứng dụng kém sự di động hay game và cả website.
Người tốt trên đời này có rất nhiều, kẻ xấu cũng không ít, nhưng không phải là không có. Internet là một sân chơi rộng lớn cho toàn thế giới cũng như những cá nhân ẩn mình đằng sau màn hình máy tính. Dữ liệu của bạn có thể sẽ được vận chuyển vòng quanh trái đất vượt qua vài ngàn kilometer để đến với người bên cạnh bạn hoặc chỉ vài mét bằng bluetooth để những tấm hình được gởi qua lại giữa 2 chiếc điện thoại kế bên nhau, dữ liệu được sử dụng hàng loạt phương thức mã hóa và giải mã trước khi đó đến nơi cần đến, hay chỉ đơn giản là một chuỗi ký tự được gởi thông qua SMS.
Ứng dụng kém bảo mật thì có nhiều, nhưng ứng dụng bảo mật thì cũng không phải là không có, dự án nào có tiền nhiều thì tuyển các đội bảo mật về làm việc cho mình, còn tiền ít thì outsource ra bên ngoài để xử lý, ngoài ra có những dự án có tiền rất nhiều nhưng không quan tâm đến sự bảo mật thì tạo ra ứng dụng cũng kém bảo mật, dễ bị tấn công.
Nghề tấn công mạng đã có từ rất lâu, kể từ khi internet ra đời, có người tạo ra, thì cũng có người phá hoại, nếu bạn là lập trình viên được dạy ở trường lớp để tạo ra những ứng dụng tối ưu về hiệu suất, chạy nhanh nhất có thể, nhiều tính năng nhất có thể, thì có những nơi khác, hoặc ở một ngôi trường khác họ được dạy rằng làm thế nào để có thể tấn công vào hệ thống một cách hiệu quả nhất, lấy được những thông tin quan trọng nhất, hoặc phá hoại đến mức không thể khôi phục mà không để lại bất kỳ dấu vết nào.
Đã hết phần mở bài, nếu thấy hay thì Like và Share rồi đọc tiếp phần thân bài.

Thân bài
Tấn công một website, một ứng dụng, hay một game cũng giống như cách bạn tán một cô gái, việc đầu tiên nhất cần phải làm đó chính là thu thập thông tin về mục tiêu càng nhiều càng tốt. Thu thập thông tin thì có 2 dạng: chủ động và bị động. Việc thu thập thông tin sẽ giúp ta hiểu sâu hơn về mục tiêu mà chúng ta sẽ tấn công, sẽ tránh mất thời gian vào những việc không cần thiết sau này. Ví dụ như bạn đang yêu thầm một cô gái học chung lớp tiếng Anh vào ban đêm, thì việc đầu tiên nhất bạn cần làm là phải xác định được, bạn đó tên gì, đang đi làm hay đi học, nếu đi làm thì phải tìm hiểu xem công ty cô ấy đang làm là gì, tiếp theo cần phải tìm hiểu xem Facebook, Zalo cô ấy, sau khi có được Facebook, thì đừng vội vàng mà kết bạn, phải tìm hiểu xem bạn bè, gia đình cô ấy như thế nào, cô ấy có thích sống ảo không, cuối tuần có hay ra cafe không và một điểm rất quan trọng: cô ta có chồng hay có bồ chưa, các loại vệ tinh xung quanh cô ấy là ai… Nói chung, càng nhiều thông tin càng tốt, nhưng vẫn phải kết hợp nhuần nhuyễn giữa chủ động và bị động, lúc nào bí quá thì hỏi, nhưng phải hiểu rằng, đối phương sẽ cảnh giác nếu như mình hỏi quá nhiều.
Nói dài cũng được, nhưng ngắn gọn và chuyên ngành thì là “Footprinting and Reconnaissance” đây là thuật ngữ chuyên ngành, nhớ nhiêu là được rồi, lấy giấy bút ra ghi lại, sau này search Google để tìm hiểu sâu hơn.
Để thu thập thông tin của một website thì có hàng loạt thứ mà chúng ta cần tìm hiểu, cần biết. Trong quá trình thu thập thông tin có thể giúp ta tìm được một số lỗ hỏng bảo mật mà chúng ta có thể tấn công ngay lập tức.
Không trình bài dài dòng nữa, chúng ta sẽ tiến hành thử tấn công một website: https://writetf.com/ (Đây là website của tôi, nếu trong quá trình bạn tấn công, có phát hiện ra bất kỳ lỗ hỏng nào thì hãy giúp tôi bằng cách gởi thông tin về email: security@writetf.com)

Các thông tin chúng ta sẽ thu thập là:

- Domains: chính là tên miền website bạn cần tấn công, trong trường hợp này là: https://writetf.com/ Từ đây chúng ta có thể biết được website đang sử dụng HTTPS (port 443, bạn nào không hiểu port là gì thì có thể bỏ qua phần này, mình sẽ quay lại sau). Xíu nữa mình sẽ check SSL và TSL sau. Thử lên Domain check xem các tên miền .net .org .info .vn các kiểu có register chưa, nếu chưa thì mình có thể đăng ký trước, tận dụng để sau này bí quá thì phishing cũng được.
Subdomains: lúc này thì xài một số tools trên mạng như https://pentest-tools.com/information-gathering/find-subdomains-of-domain để có thể tìm được các thông tin liên quan đến subdomain. Nếu may mắn thì mình có thể tìm ra được các trang web liên quan đến admin kiểu như: https://admin.writetf.com hoặc đại loại như https://dashboard.writetf.com https://manage.writetf.com Hoặc những thông tin liên quan đến API như là https://api.writetf.com … Cố gắng thu thập càng nhiều càng tốt. https://crt.sh/ cũng là cái tên không thể không nhắc đến để có thể kiểm tra các subdomains của trang web. Hacker chuyên nghiệp thì họ có cả bộ Dictionary để Brute Force check cho nhanh, nhưng với cách này thì các bạn phải lưu ý rằng, dữ liệu duyệt web của bạn, bao gồm cả IP của bạn và User Agent sẽ bị Web Server lưu lại trong phần Log. Nếu bạn gặp 1 ông quản trị có tâm thì rất có thể ổng sẽ Block IP của bạn, bật tường lửa các kiểu lên, “bức dây động rừng” là không nên, cứ bình tĩnh mà check tiếp một số phương án khác.

- IP addresses: Để biết được IP của một Website thì đơn giản chỉ cần sử dụng lệnh Ping là được, chỗ này cần Ping vài lần để check xem IP có khác nhau hay không, nếu khác nhau thì có thể đặt ra giả thuyết là sử dụng Load balancing hoặc DNS Proxy. Ping ra xong rồi, có IP rồi, thì copy cái IP đó dán lên Google search xem Web Server được đặt ở đâu, có sử dụng DNS proxy kiểu Cloudflare hay không. Trường hợp website chỉ có một IP, và IP đó là IP thật của website đó luôn thì chúng ta có thể tiến hành các bước tiếp theo để kiểm tra như là kiểm tra toàn bộ các port của website hiện tại đang open ra ngoài. Hoặc có thể dùng IP đó để dán lên trình duyệt và kiểm tra xem có truy cập được hay không, có dẫn đến trang quản lý gì không, nếu có thì rất có thể chúng ta đã có được một lỗ hỏng đầu tiên chính là Web server (thường là Nginx) đã bị cấu hình sai.

- Whois: Để check được Whois thì có thể dùng các trang web đại loại như https://lookup.icann.org/lookup Từ đây có thể có được một số thông tin như: ngày tạo, ngày cập nhật, ngày hết hạn của tên miền. Từ ngày hết hạn có thể biết được lúc nào tên miền sẽ hết hạn, nếu chủ website không gia hạn tự động thì mình có thể sử dụng một số công cụ đăng ký tên miền mà “chớp lấy thời cơ” để giành tên miền đó về tay mình. Ngoài ra có những thông tin rất quan trọng mà chúng ta không thể nào bỏ qua khi kiểm tra Whois chính là thông tin về họ tên, số điện thoại, địa chỉ, email của người quản trị tên miền, người lập trình viên của tên miền đó…. Vâng, đó chính là trường hợp may mắn nếu như website đó không sử dụng tính năng ẩn thông tin, bởi vì các nhà cung cấp dịch vụ hiện nay đã cung cấp tính năng ẩn thông tin này gần như là miễn phí.

- Web server operating systems: Website đang sử dụng hệ điều hành nào, Linux hay Windows, Linux thì dùng distribution gì Centos, Ubuntu hay Amazon Linux. Nếu được thì kiểm tra coi có xài K8S, Docker gì không.

- Server locations:
Ngày xưa thì các website đa số sử dụng Web Host các kiểu, giờ VPS kiểu như Digitalocean, Linode rẻ như cho rồi nên ai cũng sắm cho mình một con server xài cho tiện, khỏi chung chạ với ai, thích scale cở nào, install gì vào cũng được. Google và Amazon cũng đã phổ cập cloud tới tận vùng bản, vùng sâu vùng xa, Cloudflare cũng cung cấp DNS Proxy miễn phí. Nhưng đại khái là check xem website đang sử dụng nhà cung cấp dịch vụ nào, server đặt ở đâu.

- Organization information: Vô phần about us, thông tin công ty, thông tin thuế, thông tin tuyển dụng, Linkedin, Fanpage công ty là có được cơ số thông tin rồi, từ đây có thể suy ra được danh sách nhân viên, từ danh sách nhân viên lọc ra mấy ông nào có khả năng nắm giữ account admin, hay có quyền truy cập vào các trang quản trị,… Từ danh sách nhân sự cấp cao, chúng ta sẽ có những phương thức tấn công Social engineering cực kỳ hiệu quả cũng như Phishing. Ví dụ như chúng ta biết được một ông giám đốc nắm tài khoản Admin của trang quản trị, ông này thì kiến thức bảo mật không nhiều, chỉ thuần business, cuối tuần ổng hay ra quán cà phê gần nhà để làm việc, từ đây chúng ta có thể tiến hành các cuộc tấn công vào hệ thống mạng cà phê gần nhà ổng bằng cách Sniffing lắng nghe các gói tin truyền trong mạng, nếu hack được vào Wifi Router thì có thể Middleware, Ngoài ra có thể Social Engineering để có được các thông tin về tải khoản đăng nhập, SMS 2factor, VPN info. Ngoài ra nếu có được danh sách tài khoản bao gồm Email và Số Điện thoại của nhân viên thì chúng ta có thể thử nghiệm đăng nhập vào trang quản trị, nếu may mắn chúng ta sẽ có thể có được một chút gì đó hay ho.

- Website Information:
Phần này nhiều bạn đang mong đợi, vì theo cách thức tấn công bình thường, các bạn sẽ suy nghĩ là tìm kiếm 1 lỗ hỏng bảo mật nào đó, hoặc bẻ khóa một mật khẩu, tấn công thì phải SQL Injection hay XSS, thay đổi nội dung trang chủ các thứ, thật ra các Framework, CMS giờ tụi nó fix cũng gần hết mấy cái lỗi trên rồi, trừ khi developer nào gà lắm thì mới dính thôi, nhưng chúng ta không thể bỏ qua được. Trong phần này chúng ta cần phải biết được Language, CMS hay Framework mà website đang sử dụng: NodeJS hay PHP hay .NET ? PHP thì dùng Framework nào? Laravel hay Symfony hay Yii? CMS thì dùng Wordpress hay Drupal…. Nói chung đào càng sâu càng tốt, có rất nhiều tools để check https://www.wappalyzer.com/ là một ví dụ. Nhiều khi một website nhưng dùng 2 3 loại công nghệ khác nhau, trang chủ thì dùng Wordpress, trang đăng nhập thì dùng Framework , đăng nhập vào xong thì dùng mô hình Client-Server dạng ReactJS call API. Đào sâu hơn nữa thì check xem database đang xài loại nào? MySQL hay MongoDB hay PostgreSQL hay lầy lội không có database mà xài CSV, JSON file text các kiểu. Tiếp theo thì check xem Framework hay CMS đang dùng version bao nhiêu, có Zero-Day Vulnerability nào không.
Ngoài ra còn một số thông tin nữa, tôi sẽ viết tiếp phần 2. Tạm thời nhuần nhuyễn bao nhiêu trước là được rồi.

Kết bài P.1
Footprinting and Reconnaissance vẫn còn nhiều thứ phải làm, tôi sẽ chia ra thành nhiều phần tiếp theo, các bạn Like Share nhiệt tình tôi sẽ có nhiều động lực hơn, viết nhanh hơn, chia sẻ nhiều cái hay ho hơn.
Phần này nếu các bạn làm kỹ xíu thì có thể sẽ phát hiện ra rất nhiều lỗ hỏng của một website, thật ra thì các website lớn vẫn gặp những lỗi căn bản thôi, Security Team cũng là một nhóm người, còn bot thì cũng do người làm ra, cho nên gặp lỗi là bình thường, ai cũng có mistake mà. Làm tốt các bước trên hạn chế để lộ thông tin là một việc làm hết sức cần thiết mà một developer nào cũng phải làm, bởi vì bạn sẽ ngăn chặn được các cuộc tấn công không có chủ đích (sinh viên mới ra trường chạy tool để quét, hacker dùng tool để scan nguyên một dãy IP).
Pen-test là một nghề trong tương lai, dữ liệu ngày càng nhiều và quan trọng thì ngoài việc lấy càng nhiều càng tốt, chúng ta đang dần có những suy nghĩ làm thế nào để bảo vệ dữ liệu đó bảo mật hết sức có thể.
Cám ơn bạn đã đọc đến đây, thấy tui viết sai chính tả thì inbox tui sửa nhe. ❤

Tấn công web căn bản: Footprinting and Reconnaissance P.1...

Be the first to comment.

:))) 

Be the first to comment.

Be the first to comment.

ga9xvn commented.
Thứ 6 rồi mọi người ơi Phận làm developer sáng ngậm đắng tối nuốt cay, cả tuần quần quật deploy production, fix bug, improve lum la 7 8h tối mới về tới nhà :'(