内核级后门“DoublePulsar”分析报告
- 格式:pdf
- 大小:592.73 KB
- 文档页数:8
如何让后面DoublePulsar在Windows Embedded上
顺利运行?
作为“影子经纪人”从美国国家安全局(NSA)下辖方程式小组处窃取到的两款黑客工具之一,双脉冲星(DoublePulsar)后门程序能够在各类Windows 版本之上运行,但一直无法与Windows Embedded 嵌入式操作系统顺利对接。
近日,网名为Capt. Meelo 的安全研究人员发现,只要一行简单的代码就足以让这个后门在Windows Embedded 设备上正常运行。
后门DoublePulsar
DoublePulsar 后门程序2017年4月正式公布,在短时间内就波及25个国家及地区。
当时安恒研究院对全球开放SMB端口的主机进行探测分析发现,全球范围内检测发现被入侵植入DoublePulsar后门的主机94,613个,其中检测到美国被植入后门主机数量为58,072,占全球数量的61%,中国被植入后门主机数量为20,655,占全球数量的22%。
一、实验目的1. 了解后门通信的基本原理和常见方式。
2. 掌握使用网络抓包工具对后门通信过程进行分析的方法。
3. 培养网络安全意识和防御能力。
二、实验环境1. 操作系统:Windows 102. 网络抓包工具:Wireshark3. 后门软件:DinodasRAT Linux后门4. 服务器端:Linux虚拟机三、实验步骤1. 搭建实验环境(1)在Windows 10操作系统上安装Wireshark,用于抓取网络数据包。
(2)在虚拟机中安装Linux操作系统,作为DinodasRAT Linux后门的服务器端。
2. 部署DinodasRAT Linux后门(1)下载DinodasRAT Linux后门源码。
(2)在Linux虚拟机上编译并运行DinodasRAT Linux后门。
3. 模拟攻击场景(1)在Windows 10主机上运行DinodasRAT Linux后门的客户端程序。
(2)通过客户端程序连接到Linux虚拟机上的DinodasRAT Linux后门服务器。
4. 抓取后门通信数据包(1)在Wireshark中设置过滤器,筛选出与DinodasRAT Linux后门通信相关的数据包。
(2)分析抓取到的数据包,了解后门通信的过程和内容。
四、实验结果与分析1. 后门通信过程通过分析抓取到的数据包,我们可以看到DinodasRAT Linux后门通信过程如下:(1)客户端发送一个连接请求,包含客户端的IP地址和端口号。
(2)服务器端接收到连接请求后,生成一个随机端口号,并返回给客户端。
(3)客户端与服务器端建立连接,并开始进行通信。
(4)客户端向服务器端发送一个心跳包,用于保持连接。
(5)服务器端接收到心跳包后,返回一个响应包。
2. 后门通信内容通过分析数据包内容,我们可以了解到DinodasRAT Linux后门的功能如下:(1)文件传输:客户端可以向服务器端上传或下载文件。
(2)命令执行:客户端可以远程执行服务器端的命令。
深度学习中的后门攻击综述深度学习中的后门攻击综述近年来,深度学习技术以其强大的能力和广泛的应用领域引起了广泛关注。
然而,随着深度学习应用的普及,相关领域也出现了一些新的挑战和问题,其中之一就是深度学习模型面临的后门攻击问题。
本文将对深度学习中的后门攻击进行综述。
什么是后门攻击?后门攻击是指攻击者通过在系统中插入特定的触发条件或者数据输入,以实现系统的恶意控制或者泄露关键信息。
在深度学习中,后门攻击是指攻击者利用已训练好的深度学习模型,通过插入特定的触发条件或者模型参数,以使模型在特定输入条件下产生错误的结果。
后门攻击的分类根据攻击者的位置和攻击手段,后门攻击可以分为两类:物理后门和逻辑后门。
物理后门是指攻击者在硬件或者芯片设计阶段插入的后门,可以通过特定的硬件条件来触发。
逻辑后门是指攻击者通过操纵输入样本或者模型参数来实现的后门,可以通过特定的输入触发。
物理后门攻击物理后门攻击主要利用硬件或者芯片设计的漏洞,以实现对深度学习模型的控制。
典型的物理后门攻击是通过控制输入电流或者电压来触发的,因此需要对硬件进行修改或者特定的硬件环境条件。
例如,攻击者可以在芯片设计中插入特定的开关电路,当输入满足特定条件时,开关电路关闭或者打开,从而实现对模型的控制。
物理后门攻击需要攻击者在制造阶段就完成对芯片的植入,因此相对来说难度较大。
逻辑后门攻击逻辑后门攻击是指攻击者通过操纵输入样本或者模型参数来实现对深度学习模型的控制。
逻辑后门攻击的核心思想是在训练过程中插入特定的触发条件或者模型参数,以使模型在特定输入条件下产生错误的结果。
典型的逻辑后门攻击有以下几种形式。
1. 基于特定输入样本的后门攻击:攻击者通过在训练数据中插入特定的后门样本,使得模型在这些样本上产生错误的结果。
例如,在训练一个图片分类模型时,攻击者可以在训练集中插入带有特定的标签或者嵌入了特定信息的图片,以实现对模型的控制。
2. 基于特定模型参数的后门攻击:攻击者通过修改模型的权重或者参数,以实现对模型的控制。
___________________________收稿日期:2008-07-25 作者简介:李晨曦(1980-), 男, 西南民族大学管理学院教师.文章编号: 1003-2843(2008)05-1073-04Linux 内核级exploit 原理及应用李晨曦1, 周绍军2(西南民族大学管理学院, 四川成都 610041;2.四川水利职业技术学院, 四川都江堰 611830)摘要: 本文主要分析内核级exploit 和应用层的exploit 不同之处, 详细阐述了内核缓冲区溢出(kernel BOF )、内核格式化字符串漏洞(kernel format string vul )、内核整型溢出漏洞(kernel integer overflow)、内核kfree()参数腐败(kernel kfreeparameter corruption)、内核编程逻辑错误(kernel program logic error )的原理.关键词: 内核; 漏洞; 开发中图分类号: TP311 文献标识码: A1 引言应用层exploit 技术是内核级exploit 技术的基础. 首先需要了解linux 内核和x86的保护模式及中断函数的进入和返回过程, 在保护模式下INT 指令对不同优先级之间的控制转移, 从TSS (任务状态段)中获取高优先级的核心堆栈信息(SS 和ESP ), 把低优先级堆栈信息(SS 和ESP )保留到高优先级堆栈(即核心栈)中[1], 把EFLAGS, 外层CS, EIP 推入高优先级堆栈(核心栈)中, 通过IDT 加载CS, EIP (控制转移至中断处理函数), 在iret 返回时候假如NT=1的话, IRET 指令就反转CALL 或者INT 的操作, 这样引起一次任务切换. 这时候执行IRET 的指令代码, 更新之后放在任务状态段内[2-4]. 然后需要掌握核心堆栈指针ESP 和进程内核task 的关系, 每个进程在内核中有个内核堆栈, 共占2页, 也就是8192个字节, 在这堆栈底部, 是该进程的struct task_struct 结构. 所以在内核中使用current 就可以访问到该进程的struct task_struct. 接下来了解进程内核路径也是必要的, 一条内核控制路径由运行在内核态的指令序列组成, 这些指令处理一个中断或者一个异常. 当进程发出一个系统调用的请求时, 由应用态切换到内核态. 这样的内核控制路径被成为进程内核路径, 也叫进程上下文. 当CPU 执行一个与中断有关的内核控制路径的时候, 被成为中断上下文. 最后需要掌握CPU 的所处路径, CPU 路径包括处理硬件中断(此时不跟任何进程相关联)、处理软中断(softirqs), tasktets 和BH,不跟任何进程相关联、运行在内核空间(进程内核路径), 关联着一个进程、运行着用户空间的一个进程[1-6].2 两种技术异同点系统脆弱性: 内核级exploit 和应用层的exploit 有相同点, 应用层缺陷在内核层也是缺陷. 漏洞分类: 应用层漏洞与内核漏洞基本相同.内核级exploit 在Ring0, 应用层作用于Ring3. 可发挥的空间内核级expoit 相对应用层exploit (4G 内存空间)小很多. 内核级exploit 研究难度相当大, 同时可参考资料很少.3 内核级exploit 原理3.1内核缓冲区溢出首先找retloc 的地址, 该地址用于程序的流程, 就缓冲区溢出来说, 就说找到函数的返回地址. 写程序########2012-05-16########ker_bof用于测试, 主要函数如下:asmlinkage int test(unsigned int len,char * code) { char buf[256];memcpy(buf,code,len);};asmlinkage int new_function(unsigned int len, char * buf) { char * code = kmalloc(len, GFP_KERNEL);if (code ==NULL) goto out;if (copy_from_user(code, buf, len)) goto out; test(len,code);out:return 0;};int init_module(void) {old_function = sys_call_table[__NR_function]; sys_call_table[__NR_function] = new_function; printk("<1>kbof test loaded...\n"); return 0;}void cleanup_module(void) {sys_call_table[__NR_function] = old_function;printk("<1>kbof test unloaded...\n");}. 用溢出程序确定RETLOC的地址: static inline _syscall2(int, new_function, unsigned int ,len,char * ,code);int main(int argc,char **argv){ char code[1024]; unsigned int len; memset(code,'A',1024); len = 1024; new_function(len,code); system("/bin/sh");}运行ker_bof,发生了段错误, 虽然非法指令出现在内核中, 但引起该非法操作的路径是进程内核路径, 未发生系统崩溃. 溢出点分析使用objdump查看ker_bof汇编代码57push %edi;56 push %esi从上面可以看到: 可以覆盖到EIP, EBP. 却不能修改ESP. 调用函数new_function栈帧, 被调用函数栈帧ESI =-ebp+s+4, 找到retloc: code[256+8+4], 修改测试代码查看得到retloc地址正确.其次, 确定retaddr的地址, 知道保护模式下是开启了页表机制的, 一个地址要想能被访问到而不产生页错误的话, 那么需要由页表来映射该地址. 当由一个软中断陷入到内核中去的话, 原来应用层的页表映射是不会被清除的(其实内核自己也要使用那些页表来访问用户空间的数据, 还记得copy_from_user这些函数吧), 并且又加上了内核地址空间的映射. 所以, 可以用应用层的地址就可以了, 内核也可以正确寻址. 这样shellcode也就很容易得到了, shellcode的地址可以从应用层得到.Shellcode功能: 因为漏洞发生是在内核进程路径上, 所以能够利用ESP和当前TASK的关系, 来使自己的进程的UID变为0. 使得变成ROOT权限, 从而权限得到提升.内核态返回到应用态得到了控制权后, 运行SHELLCODE代码, 必须让中断调用返回, 这样系统才不至于崩溃掉.3.2内核格式化字符串漏洞首先看kernel的printf()系列函数是否支持%n. 不支持的情况下, 即使系统内核中存在这样的漏洞的话, 最多能使内核的信息泄露, 或者也许可以把内核弄崩溃掉. 不过也许在特定的条件下还是值得去研究的. 确定RETLOC的地址, 写ker_format测试程序, 其中snprintf(buffer,len,code)为字符串函数. 覆盖函数返回地址是一般应用层方法. 但是在kernel要想利用这种方法的有一定难度. 因为调试内核就比较困难, 无法预知内核中ESP 的值, 也就没法覆盖函数的返回地址, 所以需要寻找另外的RETLOC地址. 在head中找sys_call_table符号又是在/porc/ksyms的, 而且又是普通用户可读的, 所以就可以得到这个调用表的地址了[LCX@redhat73 alert7]$ cat /proc/ksyms |grep sys_call_table c02c209c sys_call_table_Rdfdb18bd找一个在系统调用表里不使用的系统调用, 选择241这个系统调用. 然后把sys_call_table+241*4的地址上填上SHELLCODE的地址. 最后内核态返回到应用态. 在这里考虑SHELLCODE地址过大的问题, 从mmap()系统调用void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);看, 再修改ld的连接脚本, 默认的连接脚本是把地址分配到0x08048000. 3.3内核整型溢出漏洞现在上面两种漏洞在内核中是很少见的. 整数溢出就是有符号数和无符号数的烂用, 导致可绕过一些检查. Kernel2.2和几个2.4.x版本的linux/kernel/sysctl.c: sysctl_string() 函数中就存在这样的错误. 同样构造ker_integer 测试程序. 唯一需要注意的技术细节在于当传个负数len进来的话, 就可以绕过if (len > 256) len = 256;的检查, 从而在strncpy_from_user的时候把它当成无符号处理的话, len的值就会变的很大. 其他基本同以上的技术处理相同.第5期 李晨曦等: Linux 内核级exploit 原理及应用3.4内核kfree()参数腐败内核中kfree()参数腐败应用,首先看kfree()函数中是如何用一个值得到另一个值, 变量之间的关系. static inline void __kmem_cache_free (kmem_cache_t *cachep, void* objp){#ifdef CONFIG_SMP ;cpucache_t *cc = cc_data(cachep);CHECK_PAGE(virt_to_page(objp)); if (cc) {int batchcount;if (cc->avail < cc->limit) {STATS_INC_FREEHIT(cachep);cc_entry(cc)[cc->avail++] = objp; return;}分析加粗程序代码, 假如现在kfree 的地址为addr,那么: temp1= mem_map+(((unsigned long)addr- PAGE_OFFSET)>> PAGE_SHIFT)c =((kmem_cache_t *)(temp1)->list.next);cc = c->cpudata[0];要确保(cc->avail < cc->limit)(((cpucache_t*) (cc))+1)[cc->avail++] = addr;来看看具体变量跟变量的数值关系c= mem_map+(((unsigned long)addr- PAGE_OFFSET)>> PAGE_SHIFT)cc=(c+116)要确保(cc)<(cc+4);(cc+8) = addr;从上面一些关系来看, C 的地址只能是mem_map---mem_map+0x3ffffc,也就是0x c032e2f0到0x C072E2EC 之间. 很显然, 这些地址都不是所能控制的. 既然C 是所控制不了的, 那么下面的几个变量(依靠C )更是控制不了的. 得出kfree()参数腐败在该原理分析下是不可用作攻击漏洞的.3.5内核编程逻辑错误内核代码相当的多, 出现问题是难免的. 将逻辑错误划分到内核编程逻辑错误也是勉强可以的. kernel 2.4.9之前的ptrace 系统调用的漏洞属于这个类型. BUGTRAQ ID 为6115的漏洞报告, kernel 2.4.x 都存在的问题. “Linux 内核不正确处理系统调用的TF 标记, 本地攻击者利用这个漏洞可以进行拒绝服务攻击. 如果系统调用TF 标记设置的情况下, 可导致内核停止响应, 攻击者利用这个漏洞通过执行调用了TF 标记系统调用的恶意应用程序, 可使Linux 内核挂起, 需要重新启动获得正常功能. ”『1』其实这是调用门处理代码处理不当导致的, linux 为了兼容, 保留了两个系统调用门. 一个lcall7,一个lcall27,在两个处理函数里处理EFLAGS 的NT 和TF 标志不当, 导致系统崩溃. 报告同时也给出了一个exploit#define MSUX "mov $0x100,%eax\npushl %eax\nmov $0x1,%eax\npopfl\nlcall $7,$0"在redhat 7.3 默认安装的系统上没有使系统挂起. 修改为如下代码, 测试程序, 系统立刻崩溃掉了. //int NT_MASK = 0x00004000;int main( void ){__asm__(" mov $0x00004000,%eax #设置NT 标志 pushl %eax popfl lcall $7,$0 "); return 1;}查看KERNEL 的SRC, 内核代码的处断门部分和处理调用门部分对EFLAGS 的处理基本相同, 但为什么单是利用调用门的时候才会使系统崩溃呢?这就需要对x86的保护模式有所了解. “一但特权级别及栈已被切换, 如果需要, 中断或异常处理的其余部分可继续进行. EFLAGS 寄存器压栈, 然后将EFLAGS 寄存器的NT 及TF 位置0. TF=0表示处理程序不允许单步执行. NT=0表示处理程序返回时, IRET 返回到同一任务而不是一个嵌套任务. 如果转移是通过一个中断门进行的, 则EFLAGS 中的IF 位也被置为0, 使得进入处理程序后, INTR 中被屏蔽, 如果转移是通过一个陷阱门进行的, 则IF 位保持不变” [1]而通过调用门进来的, EFLAGS 的NT, TF 都不会改变. 明白了这些, 只要在应用层为EFLAGS 设置NT 位为1, 那么又lcall 调用门进入的内核后NT 位还是为1, 所以当由内核返回到应用态执行IRET 指令时, 处理器会认为该任务是个嵌套任务, 所以将进行任务切换, 从当前TSS 中取出要返回到的任务. 而实际上根本就不是嵌套的任务, 所以将会系统崩溃. 上面报告上说的设置TF 为1, 从原理上也应该会使系统挂起. 4 总结与推论通过以上阐述了解内核级exploit 和应用层的exploit 不同之处, 内核缓冲区溢出(kernel BOF )、内核格式化字符串漏洞(kernel format string vul )、内核整型溢出漏洞(kernel integer overflow)、内核kfree()参数腐败(kernel kfree parameter corruption)、内核编程逻辑错误(kernel program logic error )的原理. 同时发现有部分漏洞应用的2012-05-16########################2012-05-16################2012-05-16########难度很大, 还有待继续研究. 特别是内核kfree()参数腐败的应用.参考文献:[1] 周明德. 保护方式下的80386及其编程[M], 北京: 电子工业出版社, 2005.[2] 李革梅. 嵌入式linux操作系统裁剪和定制研究[D]. 太原: 中北大学, 2005.[3] 薛筱宇. 基于linux内核的操作系统实验系统[D]. 成都: 西南交通大学, 2003.[4] 曹云鹏. 关于linux操作系统安全问题的研究[D]. 济南: 山东科技大学, 2005.[5] 牛玲. 基于linux内核的嵌入式USB接口的加密研究[D]. 成都: 成都理工大学, 2005.[6] 何昀峰. 一种通用的操作系统安全增强技术的设计与实现[D]. 北京: 中国科学院研究生院(软件研究所). 2005.The thoery and application of Linux kernel and its exploitationLI Chen-xi1, ZHOU Shao-jun2(1. Southwest University for Nationalities, Chengdu 610041, P.R.C. ;2. Sichuan Water V ocational and Technical College, Dujiangyan 611830, P.R.C.)Abstract: The disquisition analyses the difference between the kernel exploitation and application expoitation, expatiates the theory about kernel BOF, kernel format string vul, kernel integer overflow, kernel kfree parameter corruption, and kernel program logic error detailedly.Key words: kernel; hole; exploitation专 业 推 荐↓精 品 文 档。
linux后门原理Linux后门(Linux Backdoor)是指一种隐藏在Linux 系统中的门户程序,通过这个程序可以绕过Linux系统的安全机制,执行一些恶意操作。
一个Linux后门可以是任何一个可执行程序、脚本、二进制文件,也可以是一个带有恶意代码的库文件。
Linux后门一般是由黑客利用不安全的系统漏洞,通过特定的技术手段,在系统中安装的,在网络和系统管理员的监视下不易被发现。
黑客可以利用Linux后门来窃取敏感数据、操控系统、建立恶意后门等破坏系统安全的行为。
一、Linux后门的类型根据Linux系统的安全机制以及黑客的攻击方法,可以将Linux后门分为以下三种类型:1. 网络后门网络后门是通过网络攻击进入系统的一种黑客手段。
网络后门常常搭建在各种服务上,如WWW、FTP、SMTP、SSH 等,并且会在程序或参数配置没有任何改变的情况下安装。
网络后门能够在系统内部建立起一个接收指令的服务并将恶意指令封装在数据包中,在黑客远程控制下进行执行。
2. 文件后门文件后门通过硬件和软件漏洞的方式安装在各种文件和代码中,只要这些文件被执行,恶意代码就会被激活并开始工作。
文件后门隐藏在各种文件中,如二进制可执行文件、脚本文件、配置文件等,并通过内核模块的手段实现对系统的操控。
3. 密码后门密码后门是指通过未固化密码、机器改天极简密码、直接暴力破解密码等方式,进入系统并变更系统账号密码的一种黑客手段。
二、Linux后门原理及其危害Linux后门采用的底层原理都非常类似,一般包括以下几个步骤:1. 黑客通过各种方式控制管理员账号进入系统,根据自己的需求选择建立网络、文件或者密码后门。
2. 黑客在后门程序中嵌入恶意代码,并进行加密以免被检测。
3. 后门程序会创建网络服务,等待黑客远程发出指令,获取系统权限。
4. 恶意指令在后门程序的支持下,地道性地完成自己的任务。
Linux后门的危害主要体现在以下几个方面:1. 窃取敏感信息黑客可以利用Linux后门窃取系统的各种敏感数据,如密码、邮箱、财务等信息。
·RPS和RFS∙RPS 全称是Receive Packet Steering, 这是Google工程师Tom Herbert (therbert@ )提交的内核补丁, 在2.6.35进入Linux内核. 这个patch采用软件模拟的方式,实现了多队列网卡所提供的功能,分散了在多CPU系统上数据接收时的负载, 把软中断分到各个CPU处理,而不需要硬件支持,大大提高了网络性能。
∙RFS 全称是Receive Flow Steering, 这也是Tom提交的内核补丁,它是用来配合RPS补丁使用的,是RPS补丁的扩展补丁,它把接收的数据包送达应用所在的CPU上,提高cache的命中率。
∙这两个补丁往往都是一起设置,来达到最好的优化效果, 主要是针对单队列网卡多CPU环境(多队列多重中断的网卡也可以使用该补丁的功能,但多队列多重中断网卡有更好的选择:SMP IRQ affinity)原理RPS: RPS实现了数据流的hash归类,并把软中断的负载均衡分到各个cpu,实现了类似多队列网卡的功能。
由于RPS只是单纯的把同一流的数据包分发给同一个CPU核来处理了,但是有可能出现这样的情况,即给该数据流分发的CPU核和执行处理该数据流的应用程序的CPU核不是同一个:数据包均衡到不同的 cpu,这个时候如果应用程序所在的cpu和软中断处理的cpu不是同一个,此时对于cpu cache的影响会很大。
那么RFS补丁就是用来确保应用程序处理的cpu跟软中断处理的cpu是同一个,这样就充分利用cpu的cache。
∙应用RPS之前: 所有数据流被分到某个CPU, 多CPU没有被合理利用,造成瓶颈∙应用RPS之后: 同一流的数据包被分到同个CPU核来处理,但可能出现cpu cache 迁跃∙应用RPS+RFS之后: 同一流的数据包被分到应用所在的CPU核必要条件使用RPS和RFS功能,需要有大于等于2.6.35版本的Linux kernel. 如何判断内核版本:●$ uname –r● 2.6.38-2-686-bigmem对比测试●客户端: netperf●服务端: netserver●RPS cpu bitmap测试分类: 0(不开启rps功能), one cpu per queue(每队列绑定到1个CPU核上), all cpus per queue(每队列绑定到所有cpu核上), 不同分类的设置值如下1)0(不开启rps功能)2)one cpu per queue(每队列绑定到1个CPU核上)3)all cpus per queue(每队列绑定到所有cpu核上)测试方法: 每种测试类型执行3次,中间睡眠10秒, 每种测试类型分别执行100、500、1500个实例,每实例测试时间长度为60秒。
竭诚为您提供优质文档/双击可除网络后门实验报告篇一:网络后门实验报告篇一:网络后门实验报告网络后门实验报告班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求:1、了解网络后门的原理。
2、掌握几种后门工具的使用。
3、掌握冰河木马的使用。
实验内容与分析设计:1.远程启动telnet服务利用工具rtcs.vbe远程开启对方主机的telnet服务。
2.建立web服务和telnet服务利用工具软件wnc.exe在对方主机上开启web服务和telnet服务,其中web服务的端口是808,telnet服务的端口是707。
3.使用“冰河”进行远程控制“冰河”包含两个程序文件,一个是服务器端程序,另一个是客户端程序。
将服务器端程序在远程计算机上执行后,通过客户端来控制远程服务器。
写出使用“冰河”进行远程控制的具体步骤。
实验步骤与调试过程:1.远程启动telnet服务。
2.在运行窗口中输入tlntadmn.exe命令启动本地telnet服务。
3.在启动dos窗口中输入“4”启动本telnet服务。
利用工具rtcs.vbe远程开启对方主机的telnet服务。
使用命令是“cscriptrtcs.vbe172.168.174.129administration12345 6123”然后执行完成对反的主机的telnet服务就开启了。
4.在dos提示符下,登陆目标主机telnet服务,首先输入命令“telnet172.168.”,输入字符“y”,进入telnet 地登录界面,此时输入主机地用户名和密码。
如果用户名和密码没有错误将进入对方的主机命令行。
5.建立web服务和telnet服务6.利用工具软件wnc.exe在对方主机上开启web服务和telnet服务,其中web服务的端口是808,telnet服务的端口是707。
在对方主机命令行下执行一次wnc.exe即可。
执行完后,利用命令“netstat-an”来查看开启的808端口和707端口。
深度神经网络的后门攻击研究进展深度神经网络是一种强大的机器学习技术,在计算机视觉、自然语言处理等领域得到广泛应用。
然而,近年来,研究人员发现深度神经网络存在潜在的安全风险,即后门攻击。
本文将对深度神经网络后门攻击的研究进展进行综述,以便更好地了解并应对这一安全威胁。
一、深度神经网络简介深度神经网络是一种模拟人脑神经网络的计算模型。
它由多个神经网络层组成,每层包含多个神经元,通过学习数据集实现对复杂模式的识别和分类。
深度神经网络的训练过程依赖于大量的标记数据和优化算法,如梯度下降。
二、后门攻击的原理后门攻击是指攻击者在深度神经网络的训练过程中,通过精心设计的数据植入特定的后门模式。
当网络被输入含有后门模式的数据时,网络会做出特定的误判或行为,从而达到攻击者预期的目的。
传统的后门攻击方法主要有两种:硬件后门和软件后门。
硬件后门是通过修改神经网络硬件的设计和电路,实现对网络行为的控制。
软件后门则通过修改网络权重、植入隐藏层等方式,在训练过程中植入恶意行为。
三、深度神经网络后门攻击的实例1. 图像分类问题中的后门攻击研究人员发现,在图像分类问题中,黑盒模型的后门攻击非常具有挑战性。
通过改变输入图像的特定像素点或添加微小的噪声,可导致网络对特定类别的图像误判或增大对攻击者控制的图像分类准确率。
2. 自然语言处理中的后门攻击在自然语言处理领域,研究人员发现了一种针对机器翻译模型的后门攻击。
攻击者通过植入特定的后门单词或短语,可以使得翻译结果出现预期的偏差或误导性信息。
四、对策与防护措施针对深度神经网络的后门攻击,研究人员提出了一些对策和防护措施。
1. 检测和防范后门攻击通过监控神经网络的输入输出,可以检测网络是否受到后门攻击。
同时,设计鲁棒的网络结构和训练算法,可以增加网络的抵抗力。
2. 数据处理与安全训练对输入数据进行预处理和筛选,可以有效降低后门攻击的风险。
此外,增加安全训练样本和数据多样性,可以使网络更具健壮性。
后门病毒分析报告前言后门病毒是计算机系统中常见的安全威胁之一,它通过悄无声息地进入系统并在用户无感知的情况下控制、监视和操纵受感染的计算机。
本文将对后门病毒进行详细分析,以便更好地了解其行为和特征,并提供相应的防护措施。
1. 后门病毒的定义与分类后门病毒(Backdoor Virus)是指通过一些非法手段进入系统中的恶意程序,它允许攻击者在受感染的计算机上执行各种操作,而用户对此一无所知。
根据对操作系统的入侵方式和后门隐藏的技术手段,后门病毒可分为以下几种分类:1.1 远程控制后门远程控制后门是指攻击者通过远程方式获取对受感染计算机的控制权,从而进行各种恶意操作,如文件查看、删除、修改,系统命令执行等。
1.2 本地后门本地后门是指通过特定程序或漏洞感染计算机,并在计算机中生成隐藏的入口,使得攻击者可以直接访问受感染计算机的资源和数据,例如键盘记录、屏幕截图等。
1.3 水坑攻击后门水坑攻击后门是指攻击者通过在特定网站、论坛或社交媒体等网络平台上植入恶意代码,当用户访问被植入后门病毒的页面时,后门即可悄无声息地感染用户计算机。
2. 后门病毒的传播途径后门病毒主要通过以下途径进行传播:2.1 电子邮件附件攻击者通过电子邮件发送带有后门病毒的附件给用户,诱使用户点击并执行附件,从而使后门病毒感染用户计算机。
2.2 恶意软件下载攻击者通过在一些非官方或不受信任的网站上发布带有后门病毒的软件,用户在下载和安装这些软件时,就会将后门病毒带入自己的计算机。
2.3 操作系统漏洞攻击者通过对操作系统中已知或未知的漏洞进行利用,使得后门病毒能够成功渗透到目标计算机系统内。
3. 后门病毒的行为特征后门病毒的行为特征常常不易察觉,通常表现为以下几个方面:3.1 隐藏与伪装后门病毒常常采取隐蔽的方式隐藏自己,例如修改操作系统文件、隐藏进程、使用加密和解密技术等,以躲避安全软件的检测。
3.2 启动项修改后门病毒会修改系统的启动项,使得自己能够在开机时自动运行,并且通过监听网络端口等方式等待攻击者的远程控制。
首先我们要认识一下什么是后门程序?在网络上常见的对“后门”的解释,其实我们可以用很简单的一句话来概括它:后门就是留在计算机系统中,供某位特殊使用都通过某种特殊方式控制计算机系统的途径!!——很显然,掌握好后门技术是每个网络安全爱好者不可或缺的一项基本技能!它能让你牢牢抓住肉鸡,让它永远飞不出你的五指山!正因如此所以后门技术与反后门的检测技术也成为了黑客攻防战的焦点。
正所谓知己知彼,百战不殆。
要了解反后门技术那么我们就要更多的深入去学习与了解后门知识。
后门的分类后门可以按照很多方式来分类,标准不同自然分类就不同,为了便于大家理解,我们从技术方面来考虑后门程序的分类方法:前面讲了这么多理论知识是不是觉得有点头大了呢?下面我们来讲讲一些常见的后门工具吧1.网页后门此类后门程序一般都是服务器上正常的web服务来构造自己的连接方式,比如现在非常流行的ASP、cgi脚本后门等。
典型后门程序:海洋顶端,红粉佳人个人版,后来衍生出来很多版本的这类网页后门,编写语言asp,aspx,jsp,php的都有种类比较繁多。
2.线程插入后门利用系统自身的某个服务或者线程,将后门程序插入到其中,这种后门在运行时没有进程,所有网络操作均播入到其他应用程序的进程中完成。
典型后门程序:代表BITS,还有我在安全焦点上看到的xdoor(首款进程插入后门)也属于进程插入类后门。
3.扩展后门所谓的扩展后门,在普通意义上理解,可以看成是将非常多的功能集成到了后门里,让后门本身就可以实现很多功能,方便直接控制肉鸡或者服务器,这类的后门非常受初学者的喜爱,通常集成了文件上传/下载、系统用户检测、HTTP访问、终端安装、端口开放、启动/停止服务等功能,本身就是个小的工具包,功能强大。
典型后门程序:Wineggdroup shell4.C/S后门这个后门利用ICMP通道进行通信,所以不开任何端口,只是利用系统本身的ICMP包进行控制安装成系统服务后,开机自动运行,可以穿透很多防火墙——很明显可以看出它的最大特点:不开任何端口~只通过ICMP控制!和上面任何一款后门程序相比,它的控制方式是很特殊的,连80端口都不用开放,不得不佩服务程序编制都在这方面独特的思维角度和眼光.典型后门程序:ICMP Door5.root kit好多人有一个误解,他们认为rootkit是用作获得系统root访问权限的工具。
内核级后门“DoublePulsar”分析报告
在Shadow Brokers组织泄露的NSA方程式工具中,DoublePulsar是一个无文件型的内核后门程序。
值得注意的是,DoublePulsar同时使用了终端和网络的高级逃逸技术。
首先它是一个无文件型的内核级别后门,被控制端的主机防护软件通常无法有效检测;其次它与被控制端的通讯使用正常协议进行伪装(SMB或者RDP协议),可逃逸常见的网络防护产品。
具体地,某些漏洞工具(EternalBlue、EternalRomance等)攻击成功后会篡改srv.sys 中SrvTransaction2DispatchTable表的第14项指针,从而在srv.sys中安装一个后门。
而原始的SrvTransaction2DispatchTable表第14项指针指向的是SrvTransactionNotImplemented函数,在处理SMB协议的SMB_COM_TRANSACTION2消息时,会使用到该函数。
这样DoublePulsar就可以与被控制机器通过特定的
SMB_COM_TRANSACTION2消息建立隐蔽信道,并执行相应攻击操作。
技术分析
1.在后门被成功安装前,查看SrvTransaction2DispatchTable表,可以发现该表第14项指向的为SrvTransactionNotImplemented函数。
2.后门安装成功后,SrvTransaction2DispatchTable表中的第14项便被修改。
修改后的函数如下:
3.DoublePulsar主要有以下几个功能:
4.以上功能在代码中都对应不同的处理方法,主要处理流程如下:
(1)CheckFlag功能
函数开始的时候会检测不同的标志,该标识来自构造的SMB_COM_TRANSACTION2数据包中的Timeout字段。
计算flag的相关代码如下:
下图中的timeout值计算后则为指令0x23。
之后通过判断不同指令进入不同的处理流程:
(2)Ping功能
如果标志位为0x23,则进入Ping包的处理环节。
Ping包无特殊处理函数,直接返回成功。
(参考下面“对返回数据的处理”分析)
(3)RunShellcode与Rundll功能
如果标志位为0xc8,则进入执行shellcode的处理流程。
Doublepulsar工具的Rundll 与RunShellcode功能均走此分支,不同的是Rundll功能在发送具有加载动态库功能的shellcode的同时会附加一个dll文件。
在RunShellcode与Rundll功能中,首先会发送一个Ping包,用于检测后门是否存在。
如果存在,则继续发送后续数据。
后续数据中的SESSION_SETUP Parameters包含了shellcode的长度(使用密钥异或加密),当前数据包中包含数据大小(使用密钥异或加密),以及用来解密数据的密钥。
如下图,黄色部分计算后即为shellcode的长度(0x5ed26d41^0x5ed24a49=0x2708),绿色部分为当前数据包中包含数据大小(0x5ed25a49^0x5ed24a49=0x1000),解密密钥为0x5ed24a49。
SESSION_SETUP Data为加密后的shellcode。
相应代码处理流程如下:
a.解密获得shellcode大小,同时校验所传数据包中数据大小是否正确。
b.分配一段内存空间,将shellcode数据拷贝到缓冲区,通过密钥去解密shellcode,同时判断是否解密完所有数据,如果解密完成将调用shellcode去执行。