tag 标签: mtd

相关博文
  • 热度 7
    2022-11-17 14:41
    1323 次阅读|
    0 个评论
    ​ 尽管在网络安全方面的投资不断增加,但 网络犯罪仍在激增 。每天的攻击都会使医疗保健提供瘫痪,并扰乱金融/保险服务公司、制造公司、律师事务所和软件公司,以至于有关闭的风险。这在很大程度上是因为攻击一直在变化,而防御没有变化。如今的恶意软件越来越多地在内存中执行运行时攻击。 根据微软的数据,微软产品中70%的漏洞是 内存安全问题 。PurpleSec发现,2022年, 内存崩溃是最常见的零日攻击类型 ,占攻击的67.55%。对于依赖基于检测的解决方案来应对这些类型的攻击的防御者来说,这是一个大问题。 不久前,几乎所有的恶意软件都依赖于可执行文件。威胁参与者在受害者环境中的磁盘上安装了恶意软件。该恶意软件将通过函数调用、系统事件或消息与受感染的计算机交互或与命令和控制(C2)服务器通信。 ​ 编辑 传统网络安全在一定程度上运作良好 但是,无论是在服务器上还是在受攻击的终端上,该恶意软件都会留下其存在的证据。防御者可以依靠端点保护平台(EPP)、端点检测和响应(EDR/XDR)和防病毒(AV)等工具来发现恶意软件部署的迹象。发现这些攻击模式和特征是网络安全技术演变的目的——在威胁造成真正破坏之前检测和隔离威胁。 但随着攻击链现在进入内存,它们在要检测的特征或要分析的行为模式方面提供的东西很少。传统的恶意软件攻击并没有消失。只是更多的威胁在运行时以设备内存为目标,而传统的防御者对此的可见性有限。 内存中攻击可以安装有关联的文件,也可以没有关联的文件,并在最终用户启动和关闭应用程序之间的空间中工作。像Emotet、Jupyter、Cobalt Strike和供应链攻击这样的运行时攻击可以在受害者的环境中移动。 ​ 编辑 这些威胁通常不会在设备磁盘上留下可识别的印记。这些威胁的证据最终可能会在基于签名的解决方案上显示为警报。这包括安全信息和事件管理(SIEM)或安全协调、自动化和响应(SOAR)解决方案。但到那时,后卫们通常已经来不及做任何事情了。 隐蔽而强大的应用程序运行时攻击为勒索软件部署和数据外泄奠定了基础。 内存中的威胁无处不在 作为无文件恶意软件的一项功能,完整的内存中攻击链在2010年代中期开始出现。臭名昭著的 Angler漏洞工具包 以其独特的混淆而闻名,它授权网络犯罪分子每月收取费用来利用网络浏览器漏洞。 仅在2015年,网络犯罪分子就利用Angler从受害者那里窃取和勒索了 3400万美元 。 近年来,在内存方面的泄露激增。威胁参与者使用Cobalt Strike等工具从设备内存恶意加载通信信标。Cobalt Strike是一种合法的五层攻击解决方案。2019至2020年间,使用Cobalt Strike的网络攻击 增加了161% 。它通常被Conti使用,Conti是目前运营中最成功的勒索软件集团,在2021年获得了 1.8亿美元的收入 。 ​ 编辑 为了逃避传统的以签名和行为为重点的安全解决方案,威胁参与者现在创建针对运行时内存中的恶意软件,并劫持合法进程。Picus实验室的2021年红色报告将20多万个恶意软件文件映射到MITRE ATT&CK框架。 “他们发现,去年最流行的五种攻击方式中,有三种是在内存中发生的。” 内存泄露现在是攻击链的典型特征,就像2021年爱尔兰国家医疗服务体系被入侵之前那样。 无法在运行时扫描设备内存 在应用程序运行时期间,设备内存中发生的情况对防御者来说大多是不可见的。若要了解原因,请考虑解决方案如何在有人使用应用程序时尝试扫描应用程序。 解决方案必须 1) 在应用程序的生命周期内多次扫描设备内存,同时 2) 侦听正确的触发操作,以及 3) 查找恶意模式以捕获正在进行的攻击。做这三件事的最大障碍是规模。在典型应用程序的运行时环境中,可能有 4GB 的虚拟内存。不可能足够频繁地扫描如此大量的数据,至少不会减慢应用程序的速度,以至于无法使用。因此,内存扫描程序只能查看特定的内存区域、特定的时间线触发器和非常具体的参数——所有这些都假设内存状态是稳定和一致的。 ​ 编辑 在范围如此有限的情况下,在最好的情况下,专注于内存扫描的解决方案可能会占用3%到4%的应用程序内存。但威胁越来越多地使用多态来混淆他们的存在,甚至在内存中也是如此。这意味着在如此小的设备内存样本中捕获恶意活动将是奇迹。使这一问题雪上加霜的是,攻击现在绕过或篡改了大多数解决方案用来发现正在进行的攻击的挂钩。 毫不奇怪,远程访问特洛伊木马程序(RAT)、信息窃取程序和加载程序现在使用应用程序内存来隐藏更长时间。攻击者在网络中停留的平均时间约为11天。对于老鼠和信息窃取等高级威胁,这个数字更接近45天。 Windows和Linux应用程序都是目标 在内存中,泄露不是一种单一类型的威胁。相反,这是导致广泛后果的攻击链的一个特征。例如,勒索软件不一定与内存运行时攻击相关联。但要部署勒索软件,威胁参与者通常必须渗透网络并提升权限。这些过程往往在运行时在内存中发生。 ​ 编辑 网络安全的标准方法是检测正在进行的攻击或被破坏后的攻击。这使每种类型的组织和 IT 资产都面临“隐形”运行时攻击的风险。Morphisec的事件响应团队已经看到内存中入侵被用于从金融机构的服务器到医院的端点以及介于两者之间的所有情况。 这些威胁不仅针对 Windows 服务器和设备上的内存进程,它们还针对Linux。去年,由威胁行为者创建的恶意版本的Cobalt Strike专门用于Linux服务器。在金融等行业,Linux被用来为虚拟化平台和网络服务器提供动力,攻击激增。攻击通常会破坏内存中的业务关键型服务器,从而为信息盗窃和数据加密奠定基础。 防止内存中运行时攻击 内存中运行时攻击是一些最先进的破坏性攻击。他们不仅针对企业,现在还把整个政府都扣为人质。因此,防御者必须专注于在运行时阻止对应用程序内存的威胁。只专注于检测是不好的;内存中和无文件的恶意软件实际上是不可见的。传统的安全技术在受保护资产周围竖起一堵墙,并依赖于检测恶意活动,无法阻止多态和动态威胁。 ​ 编辑 相反,应通过安全层确保有效的深度防御,从而首先防止内存受损。这就是移动目标防御(MTD)技术的作用。 MTD 通过在运行时变形(随机化)应用程序内存、API 和其他操作系统资源,创建即使是高级威胁也无法穿透的动态攻击面。 实际上,它不断地移动房屋的门,同时将假门留在原处,从而捕获恶意软件以进行取证分析。即使威胁行为者能找到通往建筑物的门,当他们返回时,它也不会在那里。因此,他们不能在同一端点上重用攻击,更不用说在其他端点上了。 MTD 技术不是在攻击发生后检测到攻击,而是先发制人地阻止攻击,而无需签名或可识别的行为。 而且它不会影响系统性能、生成误报警报或需要增加员工人数才能运行。 扩展阅读 Morphisec(摩菲斯) Morphisec(摩菲斯)作为移动目标防御的领导者,已经证明了这项技术的威力。他们已经在5000多家企业部署了MTD驱动的漏洞预防解决方案,每天保护800多万个端点和服务器免受许多最先进的攻击。事实上,Morphisec(摩菲斯)目前每天阻止15,000至30,000次勒索软件、恶意软件和无文件攻击,这些攻击是NGAV、EDR解决方案和端点保护平台(EPP)未能检测和/或阻止的。(例如,Morphisec客户的成功案例,Gartner同行洞察力评论和PeerSpot评论)在其他NGAV和EDR解决方案无法阻止的情况下,在第零日就被阻止的此类攻击的例子包括但不限于: 勒索软件(例如,Conti、Darkside、Lockbit) 后门程序(例如,Cobalt Strike、其他内存信标) 供应链(例如,CCleaner、华硕、Kaseya payloads、iTunes) 恶意软件下载程序(例如,Emotet、QBot、Qakbot、Trickbot、IceDid) Morphisec(摩菲斯)为 关键应用程序 , windows和linux本地和云服务器提供解决方案 ,2MB大小快速部署。 免费的Guard Lite解决方案 ,将微软的Defener AV变成一个企业级的解决方案。让企业可以从单一地点控制所有终端。请联系我们免费获取! ​
  • 热度 23
    2012-10-18 14:46
    3750 次阅读|
    0 个评论
    Linux系统中/dev/mtd与/dev/mtdblock的区别 MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。我将CFI接口的MTD设备分为四层(从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。 MTD字符驱动程序允许直接访问flash器件,通常用来在flash上创建文件系统,也可以用来直接访问不频繁修改的数据。 MTD块设备驱动程序可以让flash器件伪装成块设备,实际上它通过把整块的erase block放到ram里面进行访问,然后再更新到flash,用户可以在这个块设备上创建通常的文件系统。   1. /dev/mtdN 是Linux 中的MTD架构中,系统自己实现的mtd分区所对应的字符设备(将mtd设备分成多个区,每个区就为一个字符设备),其里面添加了一些ioctl,支持很多命令,如MEMGETINFO,MEMERASE等。而mtd-util中的flash_eraseall等工具,就是以这些ioctl为基础而实现的工具,实现一些关于Flash的操作。比如,mtd 工具中的 flash_eraseall中的:   if (ioctl(fd, MEMGETINFO, meminfo) != 0) {    fprintf(stderr, "%s: %s: unable to get MTD device info\n", exe_name, mtd_device);    return 1; }   其中,MEMGETINFO,就是Linux MTD中的drivers/mtd/mtdchar.c中的:   static int mtd_ioctl(struct inode *inode, struct file *file,        u_int cmd, u_long arg) { 。。。。。 case MEMGETINFO:    info.type = mtd-type;    info.flags = mtd-flags;    info.size = mtd-size;    info.erasesize = mtd-erasesize;    info.writesize = mtd-writesize;    info.oobsize = mtd-oobsize;    /* The below fields are obsolete */    info.ecctype = -1;    info.eccsize = 0;    if (copy_to_user(argp, info, sizeof(struct mtd_info_user)))     return -EFAULT;    break; 。。。 }   而/dev/mtdblockN,是Nand Flash驱动中,驱动用add_mtd_partitions()添加MTD设备分区(其实就是将mtd设备进行不同的分区,当mtd设备还是一样的,所以mtdblock分区与mtd分区肯定是对应的),而生成的对应的块设备。   根据以上内容,也就更加明白,为什么不能用nandwrite,flash_eraseall,flash_erase等工具去对/dev/mtdblockN去操作了。因为/dev/mtdblock中不包含对应的ioctl,也就没有定义对应的命令,不支持你这么操作。   2. mtd char 设备的主设备号是90,而mtd block设备的主设备号是31: # ls /dev/mtd* -l  crw-r-----    1 root     root      90,   0 May 30 2007 /dev/mtd0 crw-r-----    1 root     root      90,   2 May 30 2007 /dev/mtd1 crw-r-----    1 root     root      90,   4 Jul 17 2009 /dev/mtd2 crw-r-----    1 root     root      90,   6 May 30 2007 /dev/mtd3 crwxrwxrwx    1 root     root      90,   8 May 30 2007 /dev/mtd4 crwxrwxrwx    1 root     root      90, 10 May 30 2007 /dev/mtd5 crwxrwxrwx    1 root     root      90, 12 May 30 2007 /dev/mtd6 crwxrwxrwx    1 root     root      90, 14 May 30 2007 /dev/mtd7 crwxrwxrwx    1 root     root      90, 16 May 30 2007 /dev/mtd8 crwxrwxrwx    1 root     root      90, 18 May 30 2007 /dev/mtd9 # ls /dev/mtdblock* -l brw-r-----    1 root     root      31,   0 May 30 2007 /dev/mtdblock0 brw-r-----    1 root     root      31,   1 May 30 2007 /dev/mtdblock1 brw-r-----    1 root     root      31,   2 May 30 2007 /dev/mtdblock2 brw-r-----    1 root     root      31,   3 May 30 2007 /dev/mtdblock3 brwxrwxrwx    1 root     root      31,   4 May 30 2007 /dev/mtdblock4 brwxrwxrwx    1 root     root      31,   5 May 30 2007 /dev/mtdblock5 brwxrwxrwx    1 root     root      31,   6 May 30 2007 /dev/mtdblock6 brwxrwxrwx    1 root     root      31,   7 May 30 2007 /dev/mtdblock7 brwxrwxrwx    1 root     root      31,   8 May 30 2007 /dev/mtdblock8 brwxrwxrwx    1 root     root      31,   9 May 30 2007 /dev/mtdblock9 此设备号,定义在/include/linux/mtd/mtd.h中 : #define MTD_CHAR_MAJOR   90 #define MTD_BLOCK_MAJOR 31   3. 其中,mtd的块设备的大小,可以通过查看分区信息获得: # cat /proc/partitions  major minor #blocks name 31     0       1024 mtdblock0 31     1       8192 mtdblock1 31     2     204800 mtdblock2 31     3      65536 mtdblock3 31     4     225280 mtdblock4   而每个字符设备,其实就是对应着上面的每个块设备。即/dev/mtd0对应/dev/mtdblock0,其他以此类推。换句话说,mtdblockN的一些属性,也就是mtdN的属性,比如大小。   4。对每个mtd字符设备的操作,比如利用nandwrite去对/dev/mtd0写数据,实际就是操作/dev/mtdblock0。而这些操作里面涉及到的偏移量offset,都指的是此mtd 分区内的偏移。比如向/dev/mtd1的offset为0的位置写入数据,实际操作的是物理偏移offset=/dev/mtd0的大小=1MB=0x100000。   5.mtd的字符设备和块设备的命名规则,可以参考下表: Table 7-1. MTD /dev entries, corresponding MTD user modules, and relevant device major numbers /dev entry Accessible MTD user module Device type Major number mtdN char device char 90 mtdrN char device char 90 mtdblockN block device, read-only block device, JFFS, and JFFS2 block 31 nftlLN NFTL block 93 ftlLN FTL block 44   Table 7-2. MTD /dev entries, minor numbers, and naming schemes /dev entry Minor number range Naming scheme mtdN 0 to 32 per increments of 2 N = minor / 2 mtdrN 1 to 33 per increments of 2 N = (minor - 1) / 2 mtdblockN 0 to 16 per increments of 1 N = minor nftlLN 0 to 255 per sets of 16 L = set;  N = minor - (set - 1) x 16; N is not appended to entry name if its value is zero. ftlLN 0 to 255 per sets of 16 Same as NFTL.   The Linux MTD,YAFFS Howto上面这样写道: Erase the mtdblock0 /eraseall /dev/mtd0 Create the mount directory and mount /mkdir -p /mnt/flash0 /mount -t yaffs /dev/mtdblock0 /mnt/flash0 为什么eraseall对mtd0操作?而不对mtdblock0操作?nand不是块设备嘛,mtdblock就是块设备呀。mtd0,mtd1与mtdblock0,mtdblock1是不是一一对应的?  
相关资源
  • 所需E币: 0
    时间: 2022-3-30 09:43
    大小: 625.84KB
    上传者: zhw_850319
    linux系统MTD结构分析
  • 所需E币: 1
    时间: 2021-4-10 20:53
    大小: 2.7MB
    上传者: ZHUANG
    基于DSP的单脉冲精密测量雷达MTD测距研究
  • 所需E币: 3
    时间: 2019-12-26 00:33
    大小: 71.24KB
    上传者: rdg1993
    LinuxMTD源代码分析……
  • 所需E币: 4
    时间: 2019-12-25 15:58
    大小: 3.36MB
    上传者: 微风DS
    嵌入式Linux入门与提高……
  • 所需E币: 3
    时间: 2019-12-25 15:59
    大小: 3.36MB
    上传者: 238112554_qq
    嵌入式Linux入门与提高……
  • 所需E币: 4
    时间: 2020-1-4 23:40
    大小: 65.08KB
    上传者: 二不过三
    linuxmtd源代码分析……
  • 所需E币: 4
    时间: 2019-12-24 23:07
    大小: 109.55KB
    上传者: givh79_163.com
    提供了一个如何在LPC31XX处理NAND闪存存储,数据和ECC信息;LPC31XX如何从NAND闪存启动,以及NAND闪存数据存储方式如何被Linux内核和Apex引导装载程序使用AN10860LPC313xNANDflashdataandbadblockmanagementRev.01―11August2009ApplicationnoteDocumentinformationInfoContentKeywordsLPC3130LPC3131LPC313xLPC313XLPC3153LPC3154LPC3141LPC3142LPC31XXLPC31xxLinuxkernelApexbootloaderMTDNANDflashAbstractProvidesanoverviewofhowtheLPC31XXhandlesstorage,dataandECCinformationonNANDflash;howtheLPC31XXbootsfromNANDflash,andtheNANDflashdatastorageapproachusedbytheLinuxkernelandApexbootloaderNXPSemiconductors……