扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
2、通过NetAddAltemateComputerName函数发起攻击 这个函数只在WindowsXP系统中的neta过32.dll中实现了,在Windows2000中没有实现这个函数,所以不能调用这个函数对Windows2000发起攻击,只能在WindowsXP平台下,对WindowsXP平台发起攻击。利用这个函数,只要能跟目标WindowsXP系统建立空会话就可以了。
当然,我们也可以通过嗅探NetAddAlternateComputerName函数所生成的数据包,分析数据包格式,自己重组这个RPC数据包,这样就可以在别的平台上对Windnows XP发起攻击了
3、字符转换
从前面的汇编代码分析中我们可以看到,攻击测试时发送的超长字符串会被转换成什么字符,直接取决于vsprintf函数的第二个参数(格式化串)。
1)NetpValidateName
调用NetpVaUdateName函数发送超长字符串到目标系统时,目标系统会两次调用vsprintf函数把这些字符串保存在堆栈中。
第一次的格式化串为:
NetpValidateName:checking to see if '%ws'is valid as type%d name
第二次的格式化串为:
NetpValidateName:,'%OWS',is not a validNetBIOS%sname:ox%1x
对于格式化串%ws。本质上它就是一个WideChar到MultiByte的转换过程,即是说把我们源字符串当作UNICODE串,然后把它转换成ANSI字符。在不同的平台下,对于%s格式,vsprintf的处理过程还有些差别,在下一部分我们再详细阐述。 虽然第一次和第二次的格式化串中都有%ws,但在第二次的格式化串中还有一个%s,所以,利用这个攻击测试时发送的超长字符串就不会被改变,即是说shellcode不会被转换成其他字符。
所以,利用NetAddAlternateComputerName函数来发起攻击是相对比较容易的!
2)NetAddAlternateComputerName
调用NetAddAltemateComDuterName函数发送超长字符串到目标系统时,目标系统只有一次调用vsprintf的处理。格式化串为
AlternateName=%ws
在Wide Char到MultiByte的转换过程中,假如转换后的MultiByte不是合法的字符(合不合法取决于系统默认的CODEPAGE),那么就会被截断或替换。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者