Wednesday, December 10, 2014

Hack và xóa bỏ Shell cho Website

Hướng dẫn cách chống Hack và xóa bỏ Shell cho Website


Chào các bạn, bài viết này mình sẽ hướng dẫn kỹ thuật căn bản trong việc phát hiện và loại bỏ Shell, một dạng Code giống như công cụ hỗ trợ cho việc Hack Website của Hacker có khả năng can thiệp sâu vào máy chủ Server mà không cần sự cho phép hay đăng nhập.

Hướng dẫn cách chống Hack và xóa bỏ Shell cho Website


Một ngày, nếu Website của bạn bị Hack, sau đó bạn fix và bảo mật lại, nhưng nếu trên Host còn Shell do Hacker up thì bạn chắc chắn sẽ bị Hack tiếp, dù bảo mật đến mức nào.

Không nói tới các kỹ thuật Hack dựa vào lỗ hổng bảo mật cũng như cách vá, bài viết này chỉ hướng dẫn bạn loại bỏ Shell. Những kiến thức này không giúp bạn bảo mật Website hoàn toàn. Bạn cần đọc thêm nhiều tài liệu về các lỗ hổng, cách thức tấn công, cách phân quyền... Bài viết chỉ giúp bạn không chết một cách tức tưởi vì Shell.

Bài viết gồm 2 phần: loại bỏ Shell trong Code và loại bỏ Shell trong Database

1. Loại bỏ Shell trong Code.


Khi tấn công được vào Host của bạn, Hacker sẽ tìm cách upload Shell vào trong để tạo Backdoor quay lại tấn công sau. Cũng có thể bạn sử dụng Code được chia sẻ và trong Code đã ẩn giấu Shell sẵn mà bạn không biết. Khi đó thì site bạn có thể bị Hack bất cứ lúc nào.
Thông thường, Shell trong Code sẽ được up vào chỗ mà bạn ít khi để ý tới, với một cái tên nhìn qua dễ tưởng là thành phần trong Code.

A. Quét virus bằng công cụ trong Panel Hosting.


Các panel Hosting thường tích hợp công cụ quét virus (Shell cũng là virus) là ClamAV. Một số loại Shell thông thường có thể bị công cụ này phát hiện ra. Bạn tìm trong Panel Host chỗ có từ khóa virus, rất dễ làm.

B. Quét Shell bằng công cụ chuyên dụng.


Sử dụng công cụ trong file scanshell.rar‎, upload lên Host (ngang hàng index). Sau đó từ trình duyệt bạn gõ: http://sitecuaban/scanShell.php

Bấm nút tìm kiếm và chờ một chút, nó sẽ liệt kê cho bạn các file nghi ngờ trong danh sách màu đỏ. Lưu ý không phải file nào cũng là Shell.

Bạn kiểm tra từng file một. Thông thường với một Code VBB, nếu bạn thấy file lạ, không có trong bộ Code gốc thì dễ nó là Shell.

File có trong bộ Code gốc thì bạn edit nó, so sánh với file gốc xem có giống không, nếu không thì nó chính là Shell.

Những file mà trong nội dung không có gì ngoài những đoạn Code được mã hóa loằng ngoằng => Shell

Nếu một file bạn nghi ngờ, chẳng hạn nó nằm trong thư mục www/includes. Bạn thử chạy ngoài trình duyệt http://sitecuaban.com/includes/tenfile.php nếu là Shell nó sẽ lộ diện ngay ra một giao diện can thiệp file trên Host.

Cách xử lý: Xóa (sao lưu) toàn bộ file phát hiện là Shell.

2. Loại bỏ Shell include trong Database


Ngoài việc upload Shell bằng file php ngoài Code dễ bị phát hiện, Hacker còn có thể include Shell vào trong database, trong plugin của VBB. Cách này rất khó bị phát hiện. Để phát hiện và xóa Shell, bạn làm như sau:

Backup Database để tránh tình trạng lỗi có thể xảy ra.

Vào Admincp (Đối với VBB) chọn mục Plugins and Products >> Plugin Manager.

Nhìn cột Hook Location nếu có dòng "init_startup" thì đó là một con Shell, hãy Xóa bỏ nó

Vào phpMyAdmin. Vào Database của Website rồi Search

Gõ vào ô tìm kiếm từ khóa base64 và chọn Select All

Bấm Go để tìm kiếm

Kết quả ra một tràng dài, bạn chỉ chú ý vào những dòng có báo 1 matches trở lên. Những dòng đó bên phải sẽ có thêm chữ Browser và Delete

Nếu nó ở tab Plugin, bạn nên xóa dòng đó đi (bấm Delete) vì khả năng là Shell rất cao, mà xóa đi cũng không ảnh hưởng gì cả.

Nếu ở tab khác, bạn bấm Browser xem nội dung của nó. Ctrl F từ khóa "base64" tìm tới chỗ có để xem Code nó như thế nào. Nếu nó mã hóa lằng ngoằng thì khả năng là Shell => Xóa.

Nó mà ở tab Template thì cũng khả năng cao là Shell => Giao diện đã bị dính Shell. Tạm bỏ giao diện ấy đi.

Hi vọng bài viết sẽ giúp bạn loại bỏ Shell trong Website của mình. Với các Website khác không phải VBB thì cũng tương tự như vậy.

Thursday, November 17, 2011

Tấn công HTTP Session Sidejacking

Các công cụ sử dụng:

  • Trình duyệt: Firefox (bắt buộc)
  • Thực hiện ARP Poison Routing: Cain&Abel
  • Sniff dữ liệu và tái dựng TCP Stream: Wireshark
  • Cookie injection: Firefox và Add-on GreaseMonkey, Cookie Injector script (down file đính kèm)


Bạn phải tự tìm hiểu cách cài đặt các ứng dụng trên. Cách cài đặt add-on Grease Monkey và user script Cookie injector vui lòng xem phần phụ lục

Thực hiện:

Kết nối vào mạng Wifi

Bước 1: Bật Cain&Abel , vào menu configure chọn card mạng wireless của bạn (chọn cái nào hiện tại có địa chỉ IP) và cấu hình như hình dưới




Giữ nguyên các thiết lập, nhớ check vào box Don’t use Promiscuous mode. Nhờ thiết lập này mà việc thực hiện session Sidejacking có thể thực hiện được bằng hầu hết các card mạng trên thị trường. Click OK

Bước 2:




Chuyển đến tab Sniffer ( trong dãy các tab nằm phía trên ). Click bật biểu tượng Sniffer ( hình card mạng)
Nhấp phải ở vùng trắng trắng phía dưới chọn Scan MAC Address từ menu hiện ra. Chờ một chút cho Cain&Abel quét toàn bộ các máy tính hiện đang kết nối trong mạng Wifi
Bước 3:
Sau khi có danh sách các máy tính hiện đang kết nối trong mạng wifi, ta tiến tới thực hiện ARP Poison Routing.
Bạn chuyển qua tab APR ( nằm ở dãy tab phía dưới màn hình – biểu tượng màu vàng và đen )




Click vào dấu cộng “+” ( chỗ khoanh tròn trong hình ) để mở hộp cấu hình ARP Poison Routing như sau:




Việc ARP Poison Routing sẽ được thực hiện giữa máy tính bên trái“các” máy tính bên phải. Bên trái có thể là router như trường hợp địa chỉ 192.168.1.1 trong hình ( các router thường có địa chỉ là x.x.x.1 ).
Ở đây ta cần thực hiện việc sniff tất cả các gói tin ra ngoài internet (để truy cập các trang web), mà muốn ra ngoài internet thì các gói tin phải đi qua router, với logic này, ta sẽ xác định được là ta cần sniff đường truyền giữa router với tất cả các máy tính khác trong mạng. Do đó, ta sẽ chọn router ở phía bên trái, và tất cả các máy tính có trong mạng ở phía bên phải ( Shift-click hay Ctrl-click để chọn đều được ).
Xong xuôi, click OK

Bước 4:

Click chọn biểu tượng Start/Stop APR ( màu vàng và đen ) nằm ở trên bên trái của cửa sổ Cain&Abel ( chỗ khoanh tròn )




Sau khi click sẽ thấy các dòng idle trước các địa chỉ IP sẽ đổi thành Poisoning

Bước 5:

Hiện giờ ta đã thực hiện ARP Poison Routing thành công, vậy là ta có đủ điều kiện để Sniff dữ liệu trên toàn mạng wifi này rồi

Ta sẽ tiếp tục với công cụ thứ 2 là WireShark




Bạn vào menu Capture -> Option để bắt đầu cấu hình cho Wireshark




Phần cấu hình, bạn chú ý tới các mục sau

Interface: chọn card wireless của bạn
Capture packet in promiscuous mode: uncheck nó để có thể capture với bất kì card mạng wifi thông thường nào
Capture filter: thiết đặt là tcp port http , để WireShark chỉ sniff các gói thuộc giao thức HTTP, các giao thức khác ( như FTP, DNS, ICMP … ) đều ko dc capture để tránh nhìn rối mắt
Enable network name resolution: check thiết lập này sẽ khiến WireShark sẽ phân giải các địa chỉ IP thành tên miền cụ thể giúp dễ nhìn hơn, bạn có thể uncheck để thấy sự khác biệt

Check vào các cấu hình khác giống như trong hình

Cấu hình xong click Start để bắt đầu Sniff packets, bạn sẽ thấy hàng loạt packet hiện ra ào ào.

Bước 6:

Bây giờ tới lúc quay trở lại với Cain&Abel. Lúc này bạn chuyển qua tab Password ở phần tab dưới , bạn sẽ thấy màn hình như vầy:




Hãy chú ý vào cột usernamepassword, nếu bạn gặp hên, thì có người dùng nào đó vô ý đăng nhập website trong khi bạn đang sniff thì user và pass của họ sẽ được Cain&Abel bắt lấy, thế nhưng nếu xui bạn không lấy được cái password nào hết thì vui lòng quay trở lại với chuyện Session Sidejacking của ta.

Bạn chú ý tiếp tới cột URL, danh sách này sẽ liên tục được cập nhật, mỗi khi người dùng trong mạng wifi truy cập một website nào đó, Cain&Abel sẽ ghi lại chi tiết: người dùng có IP nào truy cập website nào, URL là gì, địa chỉ IP của website, username & password (nếu có).

Bạn cứ liên tục theo dõi danh sách này, đến khi nào xuất hiện địa chỉ web bạn mong muốn. Ví dụ: http://www.facebook.com/xnohat

Ngay lập tức bạn hãy chuyển trở lại Wireshark, click nút stop trên thanh công cụ.

Bạn nhanh chóng ghi nhớ lại các thông tin sau:

  • IP của HTTP Server: đây chính là IP của facebook
  • IP của client: đây chính là IP của người dùng đang truy cập facebook


Bước 7:

Bây giờ sau khi click nút stop ta sẽ thấy hằng hà sa số các packet, biết lấy cái nào ra bây giờ ?

Lúc này bạn vui lòng chú ý vào khung có nhãn “Filter:” , đây là chỗ ta sẽ nhập lệnh lọc ra các packets liên quan tới việc truy cập facebook.

Câu hỏi bật ra trong đầu bạn: “Ta sẽ lọc theo tiêu chí nào” , “Ta sẽ lọc bằng cách nào”

Đầu tiên là tiêu chí lọc. Ta sẽ lọc ra các packet có xuất xứ từ IP của Facebook. Vậy IP của facebook là bao nhiều ? Đó chính là thông tin hồi nãy tôi yêu cầu bạn ghi nhớ ở bước 6

Hãy gõ vào khung filter dòng lệnh sau:

Ip.addr eq địa_chỉ_ip_của_HTTP_Server (vd: Ip.addr eq 69.171.228.13 )  


Rồi bấm apply, bạn sẽ thấy Wireshark sẽ lọc ra các gói tin có liên quan tới địa_chỉ_ip_của_HTTP_Server ( tức là gói tin đó được gửi từ hay gửi tới địa_chỉ_ip_của_HTTP_Server )

Câu lệnh trên có nghĩa là: Tìm cho tôi các gói tin có liên quan tới địa chỉ IP abcxyz ( chữ eq viết tắt của equal – nghĩa là bằng )

Thế nhưng cách lọc ở trên vẫn chưa kĩ, vì nhiều khi có nhiều ng dùng cùng vào facebook, vậy là Wireshark đều trả về kết quả hết, vì thế nên ta cần cụ thể cả client ( tức máy nào truy cập vào )

Hãy gõ vào khung filter dòng lệnh sau:

Ip.addr eq địa_chỉ_ip_của_HTTP_Server and Ip.addr eq địa_chỉ_ip_của_Client 


Xong bấm apply, kết quả sẽ như hình dưới




Lúc này bạn chọn một packet bất kỳ bắt nguồn từ facebook.com nhấp phải sẽ có menu như trên hình, bạn chọn lệnh Follow TCP Stream. Lệnh này sẽ giúp tái dựng lại luồng dữ liệu truy cập website của người dùng

Bước 8:

Lúc này luồng dữ liệu truy cập của người dùng sẽ hiện rõ mồn một trước mắt bạn, họ gửi dữ liệu gì đi, nhận về dữ liệu gì, tất cả hiện ra ở đây




Bạn hãy chú ý tới dòng Cookie:

Đây chính là nội dung cookies định danh của người dùng, thứ chúng ta đang săn tìm, có nó, ta sẽ có thể phục dựng session làm việc trên web của người dùng, và nghiễm nhiên trở thành người dùng. Hãy bôi đen nó như trong hình, nhấp phải và chọn copy

Bước 9: Phục dựng Session – Cookie injection

Đầu tiên, bạn bật Firefox lên và truy cập firefox.

Chú ý: Bạn cần phải logout ra khỏi tài khoản facebook hiện tại. Giao diện cần được thấy như sau




Lúc này thì việc ta cần làm là chèn các giá trị cookie đã lấy được ở bước 8 vào firefox (thuật ngữ gọi là cookie injection ). Có nhiều cách để làm việc này như dùng add-on cookie manager, Cookie + , Web developer toolbar, Firecookie … . Nhưng các công cụ trên đều chỉ cho phép chỉnh từng giá trị cookie một, ví dụ như trong hình dưới đây là công cụ FireCookie




Chỉnh từng cái như thế này thì quá lâu, đến lúc chỉnh xong thì thời hạn hiệu lực của cái mớ session cookie mà chúng ta mới lấy được ở bước 8 có khi cũng đã trôi qua từ đời tám hoánh nào rồi.
Do đó ta dùng add-on Grease Monkey, add-on này của firefox cho phép chạy các script nhỏ viết bằng javascript giúp ta thực hiện một số tác vụ tự động trong firefox, trong đó có việc chỉnh sửa cookie. Cái script dùng để làm công việc này được xnohat đính kèm theo bài viết này, bạn coi phần phụ lục để biết cách cài đặt add-on và script này.

--------------------------

Giải thích nhiều rồi, giờ là cách dùng, đơn giản thôi, click vào biểu tượng tam giác ngược màu đen cạnh hình mẹt con khỉ ( grease monkey ) để hiện ra cái menu, click chọn Enable và click chọn Cookie Injector. Hãy chắc chắn rằng biểu tượng mẹt con khỉ đang bật sáng ( tức là hiện rõ chứ không phải mờ mờ ), nếu không, bạn click vào nó một cái cho nó bật sáng

Bây giờ thì bấm tổ hợp phím Alt-C ( phím Alt và phím C đồng thời ), nó sẽ hiện ra cái khung nhỏ nhỏ như trong hình dưới (Wireshark Cookie Dump). Bạn paste cái chuỗi cookies đã copy ở bước 8 vào ô textbox của cái khung nhỏ nhỏ này rồi bấm Ok




Sau khi bấm Ok, quá trình inject cookie sẽ mất vài giây, khi script chạy xong thì nó sẽ hiện ra bảng thông báo như hình sau




Bước 10: Đặt con trỏ chuột vào thanh address bar và bấm enter để trang được load lại . Chú ý: bấm F5 đôi khi không hiệu quả vì vậy hãy làm như tôi nói

Xong, kết quả là bạn đã chiếm được phiên làm việc web này của người dùng, bây giờ bạn chính là người dùng !




Phụ lục: Cài đặt Grease Monkey và cài user script Cookie injector

1.Cài Grease Monkey
Bật Firefox, vào menu tool ( ai dùng FF5 trở lên mà không thấy cái thanh menu bar thì bấm phím Alt thì nó sẽ hiện ra ), vào tiếp mục Add-on




Bây giờ bạn gõ vào khung Search all add-on ( trên cùng bên phải ) nội dung: Grease Monkey như trong hình. Click nút install ở mục Greasemonkey được tìm thấy, đợi FF cài đặt addon rồi bấm Restart now để khởi động lại Firefox

2.Cài đặt user script Cookie Injector

Bạn đến thư mục đã tải về script Cookieinjector.user.js (trong file nén) mà xnohat đính kèm theo bài viết này. Giải nén lấy file Cookieinjector.user.js .Nắm và kéo thả file Cookieinjector.user.js vào cửa sổ Firefox như trong hình




Sẽ có một cửa sổ yêu cầu cài đặt hiện ra như dưới đây




Click nút install

Xong, bạn đã cài đặt thành công script cookieinjector. Bạn vào facebook.com rồi bấm Alt-C xem có hiện lên cửa sổ Wireshark Cookie Dump như trong hình là mọi thứ đã ổn, còn không thì vui lòng làm lại từ bước đầu




xnohat – HVA