0
作者:螺螺
科普文,牛人请绕道,谢谢。
ms07029和ms08067这两个NB漏洞都使用ret-into-libc方法来绕过DEP数据执行保护,首先来科普下什么是ret-into- libc,一般的栈溢出控制eip后通过一些op code来跳到栈里执行shellcode,但是开启了数据执行保护的话,这种方法就不行了,那么我们只能控制eip往可以执行的地方跳,我们只能在可执 行的地方找到符合我们要求的指令,来帮我们干活,干完活后我们还需要收回控制权,那么在干活指令后必须有一个ret(n),这样我们才有可能继续控制流程 跳转到另一个地方去干下一个活,理论上,通过构造stack frame也能完成shellcode的功能。但是这只是理论上说,谁也不会傻到整个shellcode通过stack frame跳来跳去来实现,一般只是利用这个技巧去执行ZwSetInformationProcess函数来关闭DEP,然后ret(n)回去用普通的 办法执行shellcode。
科普完来到正题,以ms08067为例子,XP上可以通过上述方法来关闭DEP,但是SP2 CHS和SP3 CHS的跳转地址不一样,那么如何实现通用呢,仔细想想如果我们能利用ret-to-libc先跳到一个地址,假设这个地址在SP2系统上是 pop/pop/pop/.../ret,在SP3系统上是pop/pop/pop/pop/.../ret,只要SP2和SP3上pop的次数不一致导 致ret的时候esp不一致,那么就可以通过构造stack frame来分别跳转到各自系统的地址。有了这样一个大胆的假设后,我们需要小心的求证,随便一搜发现这样的地址很多,但是符合ms08067的具体情况 不异常的就难找了,尝试了多个地址后,功夫不负有心人,找到了一个符合要求且满足ms08067漏洞的特殊要求的地址,实现了SP2 CHS和SP3 CHS的Bypass DEP的Exp的通用,相关构造代码如下(XP其他语言版本可以用类似方法):
科普文,牛人请绕道,谢谢。
ms07029和ms08067这两个NB漏洞都使用ret-into-libc方法来绕过DEP数据执行保护,首先来科普下什么是ret-into- libc,一般的栈溢出控制eip后通过一些op code来跳到栈里执行shellcode,但是开启了数据执行保护的话,这种方法就不行了,那么我们只能控制eip往可以执行的地方跳,我们只能在可执 行的地方找到符合我们要求的指令,来帮我们干活,干完活后我们还需要收回控制权,那么在干活指令后必须有一个ret(n),这样我们才有可能继续控制流程 跳转到另一个地方去干下一个活,理论上,通过构造stack frame也能完成shellcode的功能。但是这只是理论上说,谁也不会傻到整个shellcode通过stack frame跳来跳去来实现,一般只是利用这个技巧去执行ZwSetInformationProcess函数来关闭DEP,然后ret(n)回去用普通的 办法执行shellcode。
科普完来到正题,以ms08067为例子,XP上可以通过上述方法来关闭DEP,但是SP2 CHS和SP3 CHS的跳转地址不一样,那么如何实现通用呢,仔细想想如果我们能利用ret-to-libc先跳到一个地址,假设这个地址在SP2系统上是 pop/pop/pop/.../ret,在SP3系统上是pop/pop/pop/pop/.../ret,只要SP2和SP3上pop的次数不一致导 致ret的时候esp不一致,那么就可以通过构造stack frame来分别跳转到各自系统的地址。有了这样一个大胆的假设后,我们需要小心的求证,随便一搜发现这样的地址很多,但是符合ms08067的具体情况 不异常的就难找了,尝试了多个地址后,功夫不负有心人,找到了一个符合要求且满足ms08067漏洞的特殊要求的地址,实现了SP2 CHS和SP3 CHS的Bypass DEP的Exp的通用,相关构造代码如下(XP其他语言版本可以用类似方法):
Author: wzt
EMail: wzt@xsec.org
Site: http://www.xsec.org & http://hi.baidu.com/wzt85
Date: 2008-6-13
一. 绪 论
二. X86的硬件寻址方法
三. 内核对页表的设置
四. 实例分析映射机制
一. 绪 论
我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址,操作系统中称为线性地址,或虚拟地址。虚拟地址有什么用?虚拟地址又是如何转换为物理内存地址的呢?本章将对此作一个简要阐述。
1.1 Linux内存寻址概述
现代意义上的操作系统都处于32位保护模式下。每个进程一般都能寻址4G的物理空间。但是我们的物理内存一般都是几百M,进程怎么能获得4G的物理空间呢?这就是使用了虚拟地址的好处,通常我们使用一种叫做虚拟内存的技术来实现,因为可以使用硬盘中的一部分来当作内存使用。例外一点现在操作系统都划分为系统空间和用户空间,使用虚拟地址可以很好的保护内核空间被用户空间破坏。
对于虚拟地址如何转为物理地址,这个转换过程有操作系统和CPU共同完成. 操作系统为CPU设置好页表。CPU通过MMU单元进行地址转换。
EMail: wzt@xsec.org
Site: http://www.xsec.org & http://hi.baidu.com/wzt85
Date: 2008-6-13
一. 绪 论
二. X86的硬件寻址方法
三. 内核对页表的设置
四. 实例分析映射机制
一. 绪 论
我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址,操作系统中称为线性地址,或虚拟地址。虚拟地址有什么用?虚拟地址又是如何转换为物理内存地址的呢?本章将对此作一个简要阐述。
1.1 Linux内存寻址概述
现代意义上的操作系统都处于32位保护模式下。每个进程一般都能寻址4G的物理空间。但是我们的物理内存一般都是几百M,进程怎么能获得4G的物理空间呢?这就是使用了虚拟地址的好处,通常我们使用一种叫做虚拟内存的技术来实现,因为可以使用硬盘中的一部分来当作内存使用。例外一点现在操作系统都划分为系统空间和用户空间,使用虚拟地址可以很好的保护内核空间被用户空间破坏。
对于虚拟地址如何转为物理地址,这个转换过程有操作系统和CPU共同完成. 操作系统为CPU设置好页表。CPU通过MMU单元进行地址转换。
公司禁用U盘和移动硬盘的原因多种多样,最响亮的原因就是防止员工带走机密资料,在这里我提供一种不用专业软件的小技巧给大家,因为你的老板永远相信“自己能解决的事,别花钱”。
方法一,BIOS设置法(快刀斩乱麻法)
进入BIOS设置,选择“Integrated Peripherals”选项,展开后将“USB 1.1 Controller”和“USB 2.0 Contr01ler”选项的属性设置为“Disableed”,即可禁用USB接口。最后别忘记给BIOS设置上一个密码,这样他人就无法通过修改注册表解“锁”上述设备了。
注意:这个方法是完全禁止了USB接口,也就是说各种USB接口的设备均不能用了,当然也包括了U盘和移动盘。由于此发过于霸道,请慎用。
方法二,禁止闪盘或移动硬盘的启动(适用于Windows XP/2000/2003)
打开注册表编辑器,依次展开如下分支[HKEY_LOCAL_MACHINE\SYSTEM\CurrentCntrolSet\Services\USBSTOR],在右侧的窗格中找到名为“Start”的DWORD值,双击,在弹出的编辑对话框中将其数值数据修改为十六位进制数值“4”。点“确定”按钮并关闭注册表编辑器,重新启动计算机,使设置生效。重启后,当有人将USB存储设备连接到计算机时,虽然USB设备上的指示灯在正常闪烁,但在资源管理器当中就是无法找到其盘符,因此也就无法使用USB设备了。
方法三,隐藏盘符和禁止查看(适用于Windows系统)
打开注册表编辑器,依次展开如下分支[HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Ploicies\Explorer],新建二进制值“NoDrives”,其缺省值均是00 00 00 00,表示不隐藏任何驱动器。键值由四个字节组成,每个字节的每一位(bit)对应从A:到Z:的一个盘,当相应位为1时,“我的电脑”中相应的驱动器就被隐藏了。第一个字节代表从A到H的8个盘,即01为A,02为B,04为C……依次类推,第二个字节代表I到P,第三个字节代表Q到X,第四个字节代表Y和Z。比如要关闭C盘,将键值改为04 00 00 00;要关闭D盘,则改为08 00 00 00,若要关闭C盘和D盘,则改为0C 00 00 00(C是十六进制,转成十进制就是12)。
方法一,BIOS设置法(快刀斩乱麻法)
进入BIOS设置,选择“Integrated Peripherals”选项,展开后将“USB 1.1 Controller”和“USB 2.0 Contr01ler”选项的属性设置为“Disableed”,即可禁用USB接口。最后别忘记给BIOS设置上一个密码,这样他人就无法通过修改注册表解“锁”上述设备了。
注意:这个方法是完全禁止了USB接口,也就是说各种USB接口的设备均不能用了,当然也包括了U盘和移动盘。由于此发过于霸道,请慎用。
方法二,禁止闪盘或移动硬盘的启动(适用于Windows XP/2000/2003)
打开注册表编辑器,依次展开如下分支[HKEY_LOCAL_MACHINE\SYSTEM\CurrentCntrolSet\Services\USBSTOR],在右侧的窗格中找到名为“Start”的DWORD值,双击,在弹出的编辑对话框中将其数值数据修改为十六位进制数值“4”。点“确定”按钮并关闭注册表编辑器,重新启动计算机,使设置生效。重启后,当有人将USB存储设备连接到计算机时,虽然USB设备上的指示灯在正常闪烁,但在资源管理器当中就是无法找到其盘符,因此也就无法使用USB设备了。
方法三,隐藏盘符和禁止查看(适用于Windows系统)
打开注册表编辑器,依次展开如下分支[HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Ploicies\Explorer],新建二进制值“NoDrives”,其缺省值均是00 00 00 00,表示不隐藏任何驱动器。键值由四个字节组成,每个字节的每一位(bit)对应从A:到Z:的一个盘,当相应位为1时,“我的电脑”中相应的驱动器就被隐藏了。第一个字节代表从A到H的8个盘,即01为A,02为B,04为C……依次类推,第二个字节代表I到P,第三个字节代表Q到X,第四个字节代表Y和Z。比如要关闭C盘,将键值改为04 00 00 00;要关闭D盘,则改为08 00 00 00,若要关闭C盘和D盘,则改为0C 00 00 00(C是十六进制,转成十进制就是12)。
前几日在漫天寻找DVD版本的叶问时ZRZ告诉我他最近看了部电影也不错,问了得知是“非诚勿扰”,看了下影片的介绍什么的貌似不像是我喜欢的动作片,本来不想看的,但想到是贺岁剧应该是比较搞笑的,再说ZRZ说好看应该也不错吧,于是顺便记录下来,某天无事下去时找到了叶问的DVD连接开始下,后来想到”非诚勿扰“顺便也找了,一起下了,看了的确不错撒,嘎嘎。
一、经典台词
1、旁白:我梦想有一天,有一样东西可以解决所有的分歧,大地鲜花盛开,孩子们重展笑颜。二十一世纪什么最贵?和谐……
2、范伟:你看看咱们说中文呢,还是说英文呢?
葛优:您定,哪个顺口您说哪个。
范伟:那还是说母语吧。Nice to Meet You…
3、葛优:你这不是捣乱吗?我登的是征婚广告。
冯远征:你的广告上没说男人免谈。
葛优:那不是废话吗?我又不是同性恋。难道你是……
冯远征:我是。你怎么知道你不是?我以前也以为我不是,后来才知道是不敢面对。
4、葛优:我怎么这么倒霉,凡是长得顺眼的,不是卖墓地,就是性冷淡,要不就心怀鬼胎,这心理健康历史清白的姑娘怎么就那么难找?
5、葛优:你不算顺眼的,你是仙女级的,人都说情人眼里出西施,你在仇人眼里都是西施。
6、葛优:你这么漂亮,吃了多可惜,不如留着生小熊吧!
7、牧师:我们的教堂太小了,装不下他那么大的罪恶,前面还有一个比较大的教堂。
8、心在你这里,身体开开小差。
9、没有性的爱情,那叫交情。
10、哥,皮肤真好,白!
一、经典台词
1、旁白:我梦想有一天,有一样东西可以解决所有的分歧,大地鲜花盛开,孩子们重展笑颜。二十一世纪什么最贵?和谐……
2、范伟:你看看咱们说中文呢,还是说英文呢?
葛优:您定,哪个顺口您说哪个。
范伟:那还是说母语吧。Nice to Meet You…
3、葛优:你这不是捣乱吗?我登的是征婚广告。
冯远征:你的广告上没说男人免谈。
葛优:那不是废话吗?我又不是同性恋。难道你是……
冯远征:我是。你怎么知道你不是?我以前也以为我不是,后来才知道是不敢面对。
4、葛优:我怎么这么倒霉,凡是长得顺眼的,不是卖墓地,就是性冷淡,要不就心怀鬼胎,这心理健康历史清白的姑娘怎么就那么难找?
5、葛优:你不算顺眼的,你是仙女级的,人都说情人眼里出西施,你在仇人眼里都是西施。
6、葛优:你这么漂亮,吃了多可惜,不如留着生小熊吧!
7、牧师:我们的教堂太小了,装不下他那么大的罪恶,前面还有一个比较大的教堂。
8、心在你这里,身体开开小差。
9、没有性的爱情,那叫交情。
10、哥,皮肤真好,白!
[数动连线]Windows系统集成了无数的工具,它们各司其职,满足用户不同的应用需求。这些工具“多才多艺”,如果你有足够的想象力并且善于挖掘,你会发现它们除了本行之外还可以帮我们杀毒。
一、任务管理器给病毒背后一刀
Windows任务管理器是大家对进程进行管理的主要工具,在它的“进程”选项卡中能查看当前系统进程信息。在默认设置下,一般只能看到映像名称、用户名、CPU占用、内存使用等几项,而更多如I/O读写、虚拟内存大小等信息却被隐藏了起来。可别小看了这些被隐藏的信息,当系统出现莫名其妙的故障时,没准就能从它们中间找出突破口。
1.查杀会自动消失的双进程木马
前段时间朋友的电脑中了某木马,通过任务管理器查出该木马进程为“system.exe”,终止它后再刷新,它又会复活。进入安全模式把C:\windows\system32\system.exe删除,重启后它又会重新加载,怎么也无法彻底清除它。从此现象来看,朋友中的应该是双进程木马。这种木马有监护进程,会定时进行扫描,一旦发现被监护的进程遭到查杀就会复活它。而且现在很多双进程木马互为监视,互相复活。因此查杀的关键是找到这“互相依靠”的两个木马文件。借助任务管理器的PID标识可以找到木马进程。
调出Windows任务管理器,首先在“查看→选择列”中勾选“PID(进程标识符)”,这样返回任务管理器窗口后可以看到每一个进程的PID标识。这样当我们终止一个进程,它再生后通过PID标识就可以找到再生它的父进程。启动命令提示符窗口,执行“taskkill /im system.exe /f”命令。刷新一下电脑后重新输入上述命令,可以看到这次终止的system.exe进程的PID为1536,它属于PID为676的某个进程。也就是说PID为1536的system.exe进程是由PID为676的进程创建的。返回任务管理器,通过查询进程PID得知它就是“internet.exe”进程。
找到了元凶就好办了,现在重新启动系统进入安全模式,使用搜索功能找到木马文件c:\windows\internet.exe ,然后将它们删除即可。前面无法删除system.exe,主要是由于没有找到internet.exe(且没有删除其启动键值),导致重新进入系统后internet.exe复活木马。
2.揪出狂写硬盘的P2P程序
一、任务管理器给病毒背后一刀
Windows任务管理器是大家对进程进行管理的主要工具,在它的“进程”选项卡中能查看当前系统进程信息。在默认设置下,一般只能看到映像名称、用户名、CPU占用、内存使用等几项,而更多如I/O读写、虚拟内存大小等信息却被隐藏了起来。可别小看了这些被隐藏的信息,当系统出现莫名其妙的故障时,没准就能从它们中间找出突破口。
1.查杀会自动消失的双进程木马
前段时间朋友的电脑中了某木马,通过任务管理器查出该木马进程为“system.exe”,终止它后再刷新,它又会复活。进入安全模式把C:\windows\system32\system.exe删除,重启后它又会重新加载,怎么也无法彻底清除它。从此现象来看,朋友中的应该是双进程木马。这种木马有监护进程,会定时进行扫描,一旦发现被监护的进程遭到查杀就会复活它。而且现在很多双进程木马互为监视,互相复活。因此查杀的关键是找到这“互相依靠”的两个木马文件。借助任务管理器的PID标识可以找到木马进程。
调出Windows任务管理器,首先在“查看→选择列”中勾选“PID(进程标识符)”,这样返回任务管理器窗口后可以看到每一个进程的PID标识。这样当我们终止一个进程,它再生后通过PID标识就可以找到再生它的父进程。启动命令提示符窗口,执行“taskkill /im system.exe /f”命令。刷新一下电脑后重新输入上述命令,可以看到这次终止的system.exe进程的PID为1536,它属于PID为676的某个进程。也就是说PID为1536的system.exe进程是由PID为676的进程创建的。返回任务管理器,通过查询进程PID得知它就是“internet.exe”进程。
找到了元凶就好办了,现在重新启动系统进入安全模式,使用搜索功能找到木马文件c:\windows\internet.exe ,然后将它们删除即可。前面无法删除system.exe,主要是由于没有找到internet.exe(且没有删除其启动键值),导致重新进入系统后internet.exe复活木马。
2.揪出狂写硬盘的P2P程序




2009/01/20
10:23
589






