作者:hacker发布时间:2023-02-10分类:黑客技术浏览:130评论:1
【AAAI-2018】 A Deep Generative Framework for Paraphrase Generation
文章主题是实现具有相同释义的短语对生成,作者利用LSTM作为语义学习器,结合VAE实现文本生成。VAE的encoder和decoder都以原短语的语义向量(向量也可能包括语言风格)作为条件,确保生成的文本和原短语语义相近。由于VAE的文本生成是利用隐变量采样的方式实现,相比于基于beam search的方法效果更好。
释义(短语)生成是典型的NLG问题,并且正越来越多的被应用于QA,翻译等场景(QA场景更多的是进行问题归一化或者对齐,翻译场景更多的是数据增广,当然还有其他场景和用户)。
原有的短语生成方法,主要包括seq2seq和生成模型两大类型。之前的VAE(生成模型)是非条件语句生成模型,也就是说没有把原短语当做条件,这样的生成结果很难保证语句释义符合预期。另外一些方法,例如residual LSTM结构过于复杂。并且,由于beam search方法随着top k变大,效果会变差,导致不能够通过增大beam的宽度,来简单地生成关于原短语的多个高质量释义。
作者提出结合VAE和LSTM。宏观上模型是一个VAE,这样可以利用采样隐向量 的方式生成多个与原短语相似的多个释义。具体结构如下图所示,其中 分别是原短语和释义短语的向量表示, 是模型的隐向量模型(encoder), 是释义生成模型(decoder)。值得注意的是,无论是encoder还是decoder,模型都基于原短语向量 。实现了作者所说的,基于原短语进行释义,确保生成结果保留原短语的意思。
微观上模型是模型是4个LSTM和1个VAE,具体结构如下图所示。其中,encoder和decoder都包含两组LSTM,左侧的原短语模型(original sentence encoder/decoder)表示的是学习原短语的语言模型。可以看到,该模型学习得到的状态 ,当做初始state向量,都输入给了释义右侧的释义短语模型(paraphrased sentence encoder/decoder)。值得注意的是,这个状态输入的操作是在VAE的encoder和decoder两边都有的,与上述两边同时基于原短语(condition on original sentence)的语义相呼应。
此外,encoder阶段的2个LSTM完成之后,结果经过一个FFN,得到VAE的 ,这两个参数被用来采样 ,采样后的 输入到decoder中释义短语模型的每一个生成步骤中(和上一步的输出向量拼接),实现了模型的解码生成。如前所述,经过多次采样 可以生成多个释义语句,并且由于每次都是在隐向量空间中采样,而不是放宽beam search的宽度,理论上都是top beam,所以生成的语句的效果是不会打折扣的。
把原短语作为条件有点像是conditional GAN的感觉。普通的GAN可以任意生成,没有条件约束。conditional GAN把一些结构和形状、或者颜色等特征当做条件,实现有目标的(或者约束的)图像生成。文章中,作者把VAE的编码器和生成器中都加入了原短语的语义向量作为条件,目的也是指导生成的方向。从这个角度说,让人想到CVAE。
作者提到了KL-term退火以及dropout等训练VAE相关的trick,都比较有用,感兴趣的可以参考[1]。
[1] Bowman, S. R.; Vilnis, L.; Vinyals, O.; Dai, A. M.; Jozefowicz, R.; and Bengio, S. 2015. Generating sentences from a continuous space. arXiv preprint arXiv:1511.06349.
零、前言
渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为。 这里我们提供的所有渗透测试方法均为(假设为)合法的评估服务,也就是通常所说的道德黑客行为(Ethical hacking),因此我们这里的所有读者应当都是Ethical Hackers,如果您还不是,那么我希望您到过这里后会成为他们中的一员 ;)
这里,我还想对大家说一些话:渗透测试重在实践,您需要一颗永不言败的心和一个有着活跃思维的大脑。不是说您将这一份文档COPY到您网站上或者保存到本地电脑您就会了,即使您将它打印出来沾点辣椒酱吃了也不行,您一定要根据文档一步一步练习才行。而且测试重在用脑,千万别拿上一两个本文中提到的工具一阵乱搞,我敢保证:互联网的安全不为因为这样而更安全。祝您好运。。。
一、简介
什么叫渗透测试?
渗透测试最简单直接的解释就是:完全站在攻击者角度对目标系统进行的安全性测试过程。
进行渗透测试的目的?
了解当前系统的安全性、了解攻击者可能利用的途径。它能够让管理人员非常直观的了解当前系统所面临的问题。为什么说叫直观呢?就像Mitnick书里面提到的那样,安全管理(在这里我们改一下,改成安全评估工作)需要做到面面俱到才算成功,而一位黑客(渗透测试)只要能通过一点进入系统进行破坏,他就算是很成功的了。
渗透测试是否等同于风险评估?
不是,你可以暂时理解成渗透测试属于风险评估的一部分。事实上,风险评估远比渗透测试复杂的多,它除渗透测试外还要加上资产识别,风险分析,除此之外,也还包括了人工审查以及后期的优化部分(可选)。
已经进行了安全审查,还需要渗透测试吗?
如果我对您说:嘿,中国的现有太空理论技术通过计算机演算已经能够证明中国完全有能力实现宇航员太空漫步了,没必要再发射神8了。您能接受吗?
渗透测试是否就是黑盒测试?
否,很多技术人员对这个问题都存在这个错误的理解。渗透测试不只是要模拟外部黑客的入侵,同时,防止内部人员的有意识(无意识)攻击也是很有必要的。这时,安全测试人员可以被告之包括代码片段来内的有关于系统的一些信息。这时,它就满足灰盒甚至白盒测试。
渗透测试涉及哪些内容?
技术层面主要包括网络设备,主机,数据库,应用系统。另外可以考虑加入社会工程学(入侵的艺术/THE ART OF INTRUSION)。
渗透测试有哪些不足之处?
主要是投入高,风险高。而且必须是专业的Ethical Hackers才能相信输出的最终结果。
你说的那么好,为什么渗透测试工作在中国开展的不是很火热呢?
我只能说:会的,一定会的。渗透测试的关键在于没法证明你的测试结果就是完善的。用户不知道花了钱证明了系统有问题以后,自己的安全等级到了一个什么程序。但是很显然,用户是相信一个专业且经验丰富的安全团队的,这个在中国问题比较严重。在我接触了一些大型的安全公司进行的一些渗透测试过程来看,测试人员的水平是对不住开的那些价格的,而且从测试过程到结果报表上来看也是不负责的。我估计在三年以后,这种情况会有所改观,到时一方面安全人员的技术力量有很大程度的改观,另一方面各企业对渗透测试会有一个比较深刻的理解,也会将其做为一种IT审计的方式加入到开发流程中去。渗透测试的专业化、商业化会越来越成熟。
二、制定实施方案
实施方案应当由测试方与客户之间进行沟通协商。一开始测试方提供一份简单的问卷调查了解客户对测试的基本接收情况。内容包括但不限于如下:
目标系统介绍、重点保护对象及特性。
是否允许数据破坏?
是否允许阻断业务正常运行?
测试之前是否应当知会相关部门接口人?
接入方式?外网和内网?
测试是发现问题就算成功,还是尽可能的发现多的问题?
渗透过程是否需要考虑社会工程?
。。。
在得到客户反馈后,由测试方书写实施方案初稿并提交给客户,由客户进行审核。在审核完成后,客户应当对测试方进行书面委托授权。这里,两部分文档分别应当包含如下内容:
实施方案部分:
...
书面委托授权部分:
...
三、具体操作过程
1、信息收集过程
网络信息收集:
在这一部还不会直接对被测目标进行扫描,应当先从网络上搜索一些相关信息,包括Google Hacking, Whois查询, DNS等信息(如果考虑进行社会工程学的话,这里还可以相应从邮件列表/新闻组中获取目标系统中一些边缘信息如内部员工帐号组成,身份识别方式,邮件联系地址等)。
1.使用whois查询目标域名的DNS服务器
2.nslookup
set type=all
domain
server ns server
set q=all
ls -d domain
涉及的工具包括:Google,Demon,webhosting.info,Apollo,Athena,GHDB.XML,netcraft,seologs 除此之外,我想特别提醒一下使用Googlebot/2.1绕过一些文件的获取限制。
Google hacking 中常用的一些语法描述
1.搜索指定站点关键字site。你可以搜索具体的站点如site:。使用site:nosec.org可以搜索该域名下的所有子域名的页面。甚至可以使用site:org.cn来搜索中国政府部门的网站。
2.搜索在URL网址中的关键字inurl。比如你想搜索带参数的站点,你可以尝试用inurl:asp?id=
3.搜索在网页标题中的关键字intitle。如果你想搜索一些登陆后台,你可以尝试使用intitle:"admin login"
目标系统信息收集:
通过上面一步,我们应当可以简单的描绘出目标系统的网络结构,如公司网络所在区域,子公司IP地址分布,VPN接入地址等。这里特别要注意一些比较偏门的HOST名称地址,如一些backup开头或者temp开关的域名很可能就是一台备份服务器,其安全性很可能做的不够。
从获取的地址列表中进行系统判断,了解其组织架构及操作系统使用情况。最常用的方法的是目标所有IP网段扫描。
端口/服务信息收集:
这一部分已经可以开始直接的扫描操作,涉及的工具包括:nmap,thc-amap
1.我最常使用的参数
nmap -sS -p1-10000 -n -P0 -oX filename.xml --open -T5 ip address
应用信息收集:httprint,SIPSCAN,smap
这里有必要将SNMP拿出来单独说一下,因为目前许多运营商、大型企业内部网络的维护台通过SNMP进行数据传输,大部分情况是使用了默认口令的,撑死改了private口令。这样,攻击者可以通过它收集到很多有效信息。snmp-gui,HiliSoft MIB Browser,mibsearch,net-snmp都是一些很好的资源。
2、漏洞扫描
这一步主要针对具体系统目标进行。如通过第一步的信息收集,已经得到了目标系统的IP地址分布及对应的域名,并且我们已经通过一些分析过滤出少许的几个攻击目标,这时,我们就可以针对它们进行有针对性的漏洞扫描。这里有几个方面可以进行:
针对系统层面的工具有:ISS, Nessus, SSS, Retina, 天镜, 极光
针对WEB应用层面的工具有:AppScan, Acunetix Web Vulnerability Scanner, WebInspect, Nstalker
针对数据库的工具有:ShadowDatabaseScanner, NGSSQuirreL
针对VOIP方面的工具有:PROTOS c07 sip(在测试中直接用这个工具轰等于找死)以及c07 h225, Sivus, sipsak等。
事实上,每个渗透测试团队或多或少都会有自己的测试工具包,在漏洞扫描这一块针对具体应用的工具也比较个性化。
3、漏洞利用
有时候,通过服务/应用扫描后,我们可以跳过漏洞扫描部分,直接到漏洞利用。因为很多情况下我们根据目标服务/应用的版本就可以到一些安全网站上获取针对该目标系统的漏洞利用代码,如milw0rm, securityfocus,packetstormsecurity等网站,上面都对应有搜索模块。实在没有,我们也可以尝试在GOOGLE上搜索“应用名称 exploit”、“应用名称 vulnerability”等关键字。
当然,大部分情况下你都可以不这么麻烦,网络中有一些工具可供我们使用,最著名的当属metasploit了,它是一个开源免费的漏洞利用攻击平台。其他的多说无益,您就看它从榜上无名到冲进前五(top 100)这一点来说,也能大概了解到它的威力了。除此之外,如果您(您们公司)有足够的moeny用于购买商用软件的话,CORE IMPACT是相当值得考虑的,虽然说价格很高,但是它却是被业界公认在渗透测试方面的泰山北斗,基本上测试全自动。如果您觉得还是接受不了,那么您可以去购买CANVAS,据说有不少0DAY,不过它跟metasploit一样,是需要手动进行测试的。最后还有一个需要提及一下的Exploitation_Framework,它相当于一个漏洞利用代码管理工具,方便进行不同语言,不同平台的利用代码收集,把它也放在这里是因为它本身也维护了一个exploit库,大家参考着也能使用。
上面提到的是针对系统进行的,在针对WEB方面,注入工具有NBSI, OWASP SQLiX, SQL Power Injector, sqlDumper, sqlninja, sqlmap, Sqlbftools, priamos, ISR-sqlget***等等。
在针对数据库方面的工具有:
数据库 工具列表 Oracle(1521端口): 目前主要存在以下方面的安全问题:
1、TNS监听程序攻击(sid信息泄露,停止服务等)
2、默认账号(default password list)
3、SQL INJECTION(这个与传统的意思还不太一样)
4、缓冲区溢出,现在比较少了。 thc-orakel, tnscmd, oscanner, Getsids, TNSLSNR, lsnrcheck, OAT, Checkpwd, orabf MS Sql Server(1433、1434端口) Mysql(3306端口) DB2(523、50000、50001、50002、50003端口) db2utils Informix(1526、1528端口)
在针对Web服务器方面的工具有:
WEB服务器 工具列表 IIS IISPUTSCANNER Tomcat 想起/admin和/manager管理目录了吗?另外,目录列表也是Tomcat服务器中最常见的问题。比如5.*版本中的;index.jsp
"../manager/html
;cookievalue=%5C%22FOO%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2F%3B
;cookievalue=%5C%22A%3D%27%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2Fservlets-examples%2Fservlet+%3B JBOSS jboss的漏洞很少,老版本中8083端口有%符号的漏洞:
GET %. HTTP/1.0可以获取物理路径信息,
GET %server.policy HTTP/1.0可以获取安全策略配置文档。
你也可以直接访问GET %org/xxx/lib.class来获取编译好的java程序,再使用一些反编译工具还原源代码。 Apache Resin
;servletpath=file=WEB-INF/web.xml
;servletpath=file=WEB-INF/classes/com/webapp/app/target.class
[path]/[device].[extension]
.."web-inf
[path]/%20.xtp WebLogic
Web安全测试主要围绕几块进行:
Information Gathering:也就是一般的信息泄漏,包括异常情况下的路径泄漏、文件归档查找等
Business logic testing:业务逻辑处理攻击,很多情况下用于进行业务绕过或者欺骗等等
Authentication Testing:有无验证码、有无次数限制等,总之就是看能不能暴力破解或者说容不容易通过认证,比较直接的就是“默认口令”或者弱口令了
Session Management Testing:会话管理攻击在COOKIE携带认证信息时最有效
Data Validation Testing:数据验证最好理解了,就是SQL Injection和Cross Site Script等等
目前网上能够找到许多能够用于进行Web测试的工具,根据不同的功能分主要有:
枚举(Enumeration): DirBuster, http-dir-enum, wget
基于代理测试类工具:paros, webscarab, Burp Suite
针对WebService测试的部分有一些尚不是很成熟的工具,如:wsbang,wschess,wsmap,wsdigger,wsfuzzer
这一部分值得一提的是,很多渗透测试团队都有着自己的测试工具甚至是0DAY代码,最常见的是SQL注入工具,现网开发的注入工具(如NBSI等)目前都是针对中小企业或者是个人站点/数据库进行的,针对大型目标系统使用的一些相对比较偏门的数据库系统(如INFORMIX,DB2)等,基本上还不涉及或者说还不够深入。这时各渗透测试团队就开发了满足自身使用习惯的测试工具。
在针对无线环境的攻击有:WifiZoo
4、权限提升
在前面的一些工作中,你或许已经得到了一些控制权限,但是对于进一步攻击来说却还是不够。例如:你可能很容易的能够获取Oracle数据库的访问权限,或者是得到了UNIX(AIX,HP-UX,SUNOS)的一个基本账号权限,但是当你想进行进一步的渗透测试的时候问题就来了。你发现你没有足够的权限打开一些密码存储文件、你没有办法安装一个SNIFFER、你甚至没有权限执行一些很基本的命令。这时候你自然而然的就会想到权限提升这个途径了。
目前一些企业对于补丁管理是存在很大一部分问题的,他们可能压根就没有想过对一些服务器或者应用进行补丁更新,或者是延时更新。这时候就是渗透测试人员的好机会了。经验之谈:有一般权限的Oracle账号或者AIX账号基本上等于root,因为这就是现实生活。
5、密码破解
有时候,目标系统任何方面的配置都是无懈可击的,但是并不是说就完全没办法进入。最简单的说,一个缺少密码完全策略的论证系统就等于你安装了一个不能关闭的防盗门。很多情况下,一些安全技术研究人员对此不屑一顾,但是无数次的安全事故结果证明,往往破坏力最大的攻击起源于最小的弱点,例如弱口令、目录列表、SQL注入绕过论证等等。所以说,对于一些专门的安全技术研究人员来说,这一块意义不大,但是对于一个ethical hacker来说,这一步骤是有必要而且绝大部分情况下是必须的。;)
目前比较好的网络密码暴力破解工具有:thc-hydra,brutus
hydra.exe -L users.txt -P passwords.txt -o test.txt -s 2121 ftp
目前网络中有一种资源被利用的很广泛,那就是rainbow table技术,说白了也就是一个HASH对应表,有一些网站提供了该种服务,对外宣称存储空间大于多少G,像rainbowcrack更是对外宣称其数据量已经大于1.3T。
针对此种方式对外提供在线服务的有:
网址 描述 rainbowcrack 里面对应了多种加密算法的HASH。 数据量全球第一,如果本站无法破解,那么你只能去拜春哥...
当然,有些单机破解软件还是必不可少的:Ophcrack,rainbowcrack(国人开发,赞一个),cain,L0phtCrack(破解Windows密码),John the Ripper(破解UNIX/LINUX)密码,当然,还少不了一个FindPass...
针对网络设备的一些默认帐号,你可以查询和
在渗透测试过程中,一旦有机会接触一些OFFICE文档,且被加了密的话,那么,rixler是您马上要去的地方,他们提供的OFFICE密码套件能在瞬间打开OFFICE文档(2007中我没有试过,大家有机会测试的话请给我发一份测试结果说明,谢谢)。看来微软有理由来个补丁什么的了。对于企业来说,您可以考虑使用铁卷或者RMS了。
6、日志清除
It is not necessary actually.
7、进一步渗透
攻入了DMZ区一般情况下我们也不会获取多少用价值的信息。为了进一步巩固战果,我们需要进行进一步的内网渗透。到这一步就真的算是无所不用其及。最常用且最有效的方式就是Sniff抓包(可以加上ARP欺骗)。当然,最简单的你可以翻翻已入侵机器上的一些文件,很可能就包含了你需要的一些连接帐号。比如说你入侵了一台Web服务器,那么绝大部分情况下你可以在页面的代码或者某个配置文件中找到连接数据库的帐号。你也可以打开一些日志文件看一看。
除此之外,你可以直接回到第二步漏洞扫描来进行。
四、生成报告
报告中应当包含:
薄弱点列表清单(按照严重等级排序)
薄弱点详细描述(利用方法)
解决方法建议
参与人员/测试时间/内网/外网
五、测试过程中的风险及规避
在测试过程中无可避免的可能会发生很多可预见和不可预见的风险,测试方必须提供规避措施以免对系统造成重大的影响。以下一些可供参考:
1. 不执行任何可能引起业务中断的攻击(包括资源耗竭型DoS,畸形报文攻击,数据破坏)。
2. 测试验证时间放在业务量最小的时间进行。
3. 测试执行前确保相关数据进行备份。
4. 所有测试在执行前和维护人员进行沟通确认。
5. 在测试过程中出现异常情况时立即停止测试并及时恢复系统。
6. 对原始业务系统进行一个完全的镜像环境,在镜像环境上进行渗透测试。
**一、RDP 服务确定和启动 **
1. 确定RDP服务是否启动和服务端口
(1)注册表查询
(2)进程查看
2. 启动RDP服务
(1)cmd 本地注册表启动
也可以通过reg配置文件的方式启动:regedit /s startrdp.reg
(2) 利用Wmic 启动远程主机的RDP服务
二、RDP 用户登录前
(1) 明文密码:RDP爆破,SMB爆破(使用MSF中的smb_login 模块可以确定有效用户并判断是否是管理员组的)等工具
(2) Hash:Impacket工具包中的rdp_check.py 脚本可以通过hash确定目标机器是否存在枚举的用户
当用户存在时会提示 Access Granted,否者提示 Access Denied
(3) RDP中间人:Seth
执行后客户端链接服务器会失败,过段时间恢复正常
但是如果普通的用户,那需要进一步判断目标系统来确定合适的登录时机
(1) Windows XP、2003 支持统一用户登陆多地登陆互不影响,使用query user查看在线用户,XP没有该命令也可以使用taskmgr从任务管理器查看,同一权限下可以相互注 销会话。
(2) 非服务器版本的Windows 系统默认只允许一个账户登录。当远程用户登录时使用与原系统相同的账户,原系统将切换到登陆页面,并会看到登陆的机器名
如果使用不同的账户,原系统将弹窗提示其他用户已登陆到此计算机
选择继续后,原系统将会提示是否端口当前链接(30s后默认选择同意,退出到登陆页面)
(1) mstsc.exe
可以通过如下命令开启 Restricted Admin mode
开启后使用:mstsc.exe /restrictedadmin 进行登录不需要密码,将使用当前用户的hash 进行验证
(2) mimikatz.exe
4 . Linux上使用用户hash登录
PS:这里有一个坑,高版本xfreerdp不支持 /pth 参数,可以使用上面的安装命令安装支持/pth的版本,也可以使用kali/parrot中默认安装好
PS2:如果RDP服务启动了,客户端无法链接,可能是防火墙配置的问题,可以执行如下命 令添加防火墙规则允许3389端口TCP通信
PS3:如果出现远程连接出现身份验证错误,要求的函数不支持,解决方法:
**四、关于 RDP 权限维持方法 **
1. 关闭 RDP 安全认证
当服务器开启安全认证时,必须先通过登陆密码才能进入远程桌面;如果服务端用的是 不安全的认证方式,即可以先远程链接后登陆可以触发Shift后门
如何设置不安全的连接,去掉”仅允许使用网络级别的身份验证的远程桌面的计算机连 接”选项,需要注意的是先上系统后验证也会在计算机本地留下一定的进程、日志。
2. Shift后门 + RDP劫持
配合上面的关闭RDP安全认证方式,利用Shift后门可以让攻击者快速获得System权 限,结合RDP劫持可以实现无需创建用户、不更改劫持用户登录时间、解锁劫持用户界面、 等功能。注意RDP劫持需要System权限
另外一种方法可以通过创建服务激活
Mimikatz中也有相关的利用模块
3. 开启多人登录模式
(1)手动设置:将计算机配置(Computer Configuration)-管理模板 (Administrative Templates)-Windows组件(Windows Components)-远程桌面 服务(Remote Desktop Services)-远程桌面会话主机(Remote Desktop Session Host)-链接(Connections),禁用”将远程桌面服务的用户限制到单独的远程桌面会 话”(Restrict Remote Desktop Services users to a single Remote Desktop Services session) (2)Mimikatz 开启多用户登录,支持Win 7 及以前的版本系统
PS:使用与原系统相同的账户,原系统还是会被切换到登录界面;不同账户登陆成功 (3)RDPwrap:支持Win Vista - Win10
(4)SharpDoor:仅使用于Win 10 开启多会话RDP
**五、RDP 服务器反打客户端 **
需要客户端RDP链接时,开启磁盘共享(将本地磁盘挂在到服务器上)才能正常利用
2. 手动利用过程:假设客户端和登录服务器的用户都是Administrator
\Startup\powershell.vbs 作用是无弹窗执行bat脚本
(2)Windows.bat 脚本内容实现马(service.exe)拷贝到客户端的启动目录
也可以根据实际情况,将Rat拷贝到客户端的其他目录,将激活脚本拷贝到客户端启动目 录;如果不出网的情况下,也可以将exe替换成要执行的脚本 。
反渗透膜有非常多的种类、型号,不同的型号分别有不同的价格,反渗透膜照目前在市场上的价格大概是在2000-6000一支左右。在不同的商家拿货购买价格可能也不一样。
传统基于穷举或纯数学理论层面的分析,对于现代高强度加密算法而言,算力有限导致无法实现穷举,算法的复杂性也无法通过数学工具直接破解,根据近代物理学发展出来的理论,电子设备依赖外部电源提供动力,设备在运行过程中会消耗能量,同时会跟外界环境存在声、光、电、磁等物理交互现象产生,设备本身也可能存在设计薄弱点,通过这些物理泄露或人为进行物理层的修改获取数据,然后运用各类数学工具和模型实现破解。
然而在做物理攻击时,往往需要昂贵的设备,并要具备数学、物理学、微电子学、半导体学、密码学、化学等等多学科的交叉理论知识,因此其技术门槛和攻击成本都很高,目前在刚刚结束的 Blackhat 2018 上,展台上展示了多款 ChipWhisperer 硬件工具,作为亲民型的物理攻击平台,获得了一致的好评。
(图片来源 Newae 官方)
ChipWhisperer Lite 版官方商店售价 $250 ,不管是实验学习,还是实战入门,都是极具性价比的,本文主要介绍主流的一些物理攻击手段,以及对 ChipWhisperer 的初步认知,后续将会据此从理论、原理、实验以及实战等角度详细介绍该平台。
真正的安全研究不能凌驾于真实的攻防场景,对于物联网安全而言,其核心目标是真实物理世界中的各种硬件设备,真实的攻击场景往往发生在直接针对硬件设备的攻击,因此物联网安全的基石在于物理层的安全,而针对物联网物理攻击手段,是当前物联网面临的最大安全风险之一。
物理攻击就是直接攻击设备本身和运行过程中的物理泄露,根据攻击过程和手段可以分为非侵入攻击、半侵入式攻击和侵入式攻击。ChipWhisperer 平台主要用做非侵入式攻击,包括侧信道和故障注入攻击等。
传统密码分析学认为一个密码算法在数学上安全就绝对安全,这一思想被Kelsey等学者在1998年提出的侧信道攻击(Side-channel Attacks,SCA)理论所打破。侧信道攻击与传统密码分析不同,侧信道攻击利用功耗、电磁辐射等方式所泄露的能量信息与内部运算操作数之间的相关性,通过对所泄露的信息与已知输入或输出数据之间的关系作理论分析,选择合适的攻击方案,获得与安全算法有关的关键信息。目前侧信道理论发展越发迅速,从最初的简单功耗分析(SPA),到多阶功耗分析(CPA),碰撞攻击、模板攻击、电磁功耗分析以及基于人工智能和机器学习的侧信道分析方式,侧信道攻击方式也推陈出新,从传统的直接能量采集发展到非接触式采集、远距离采集、行为侧信道等等。
利用麦克风进行声波侧信道
利用软件无线电实施非接触电磁侧信道
故障攻击就是在设备执行加密过程中,引入一些外部因素使得加密的一些运算操作出现错误,从而泄露出跟密钥相关的信息的一种攻击。一些基本的假设:设定的攻击目标是中间状态值; 故障注入引起的中间状态值的变化;攻击者可以使用一些特定算法(故障分析)来从错误/正确密文对中获得密钥。
使用故障的不同场景: 利用故障来绕过一些安全机制(口令检测,文件访问权限,安全启动链);产生错误的密文或者签名(故障分析);组合攻击(故障+旁路)。
非侵入式电磁注入
半侵入式光子故障注入
侵入式故障注入
本系列使用的版本是 CW1173 ChipWhisperer-Lite ,搭载 SAKURA-G 实验板,配合一块 CW303 XMEGA 作为目标测试板。
CW1173 是基于FPGA实现的硬件,软件端基于 python,具有丰富的扩展接口和官方提供的各类 API 供开发调用,硬件通过自带的 OpenADC 模块可以实现波形的捕获,不需要额外的示波器。
板上自带有波形采集端口(MeaSure)和毛刺输出(Glitch)端口,并自带 MOSFET 管进行功率放大。
并提供多种接口触发设置,基本满足一般的攻击需求。
芯片物理结构为许多CMOS电路组合而成,CMOS 电路根据输入的不同电信号动态改变输出状态,实现0或1的表示,完成相应的运算,而不同的运算指令就是通过 CMOS 组合电路完成的,但 CMOS电路根据不同的输入和输出,其消耗的能量是不同的,例如汇编指令 ADD 和 MOV ,消耗的能量是不同的,同样的指令操作数不同,消耗的能量也是不同的,例如 MOV 1 和 MOV 2其能量消耗就是不同的,能量攻击就是利用芯片在执行不同的指令时,消耗能量不同的原理,实现秘钥破解。
常用的能量攻击方式就是在芯片的电源输入端(VCC)或接地端(GND)串联一个1到50欧姆的电阻,然后用示波器不断采集电阻两端的电压变化,形成波形图,根据欧姆定律,电压的变化等同于功耗的变化,因此在波形图中可以观察到芯片在执行不同加密运算时的功耗变化。
CW1173 提供能量波形采集端口,通过连接 板上的 MeaSure SMA 接口,就可以对能量波形进行采集,在利用chipwhisperer 开源软件就可以进行分析,可以实现简单能量分析、CPA攻击、模板攻击等。
通过 cpa 攻击 AES 加密算法获取密钥
ChipWhisperer 提供对时钟、电压毛刺的自动化攻击功能,类似于 web 渗透工具 Burpsuite ,可以对毛刺的宽度、偏移、位置等等参数进行 fuzz ,通过连接板上的 Glitch SMA 接口,就可以输出毛刺,然后通过串口、web 等获取结果,判断毛刺是否注入成功。
时钟毛刺攻击是针对微控制器需要外部时钟晶振提供时钟信号,通过在原本的时钟信号上造成一个干扰,通过多路时钟信号的叠加产生时钟毛刺,也可以通过自定义的时钟选择器产生,CW1173 提供高达 300MHZ 的时钟周期控制,时钟是芯片执行指令的动力来源,通过时钟毛刺可以跳过某些关键逻辑判断,或输出错误数据。
通过 CW1173 时钟毛刺攻击跳过密码验证
电压毛刺是对芯片电源进行干扰造成故障,在一个很短的时间内,使电压迅速下降,造成芯片瞬间掉电,然后迅速恢复正常,确保芯片继续正常工作,可以实现如对加密算法中某些轮运算过程的干扰,造成错误输出,或跳过某些设备中的关键逻辑判断等等 。
对嵌入式设备的电压毛刺攻击
随着物理攻击理论和技术的进步,针对硬件芯片的防护手段也随之提高,芯片物理层的攻防一直在不断角力 ,现实环境中,能量采集会受到各种噪声因素的干扰,硬件厂商也会主动实施一些针对物理攻击的防护,单纯依靠 ChipWhisperer 平台难以实现真实场景的攻击,因此还需要结合电磁、声波、红外、光子等多重信息,以及对硬件进行修改,多重故障注入,引入智能分析模型等等组合手段,今后会进一步介绍一些基于 ChipWhisperer 的高级攻击方式和实战分析方法。
几天前,收到一个国外目标(公司)的渗透测试任务,时间为两周;
大概看了一下目标是类似于国内阿里云那样提供云服务的平台;
常规信息收集过后,尝试渗透三天无果... 于是下班前只能祭出我的"大杀器"---缝合怪.py。缝合了一些好用的扫描器,一键 XRAY多线程批量扫 + 自动添加任务到AWVS + 自动添加任务到arl + ...加入资产后就下班回家了。
到了第二天一看扫描结果,心里暗道不妙,md坏起来了啊。。。
扫描器里一个洞都没,goby里所有资产显示只开放两个端口80、443。
不慌,问题不大,时间还长,接下来要做的,就是整理思路,重新来过。
在重新整理之前收集到的资产中,发现测试目标的旁站有一个有趣的404页面:
NoSuchBucket + BucketaName
想到了 阿里云 的bucket劫持漏洞,幸福来得太突然了。
使用测试账号登录自己的云平台尝试进行劫持:
1.点击对象存储服务:
2.点击创建桶:
3.桶的名字为BucketName字段:
4.将访问控制权限更改为公共读写:
5.点击对象,创建hack.txt:
6.完成后刷新 为如下 :
发现BucketName字段消失了,原来的NoSuchBucket也变成了NoSuchCustomDomain,说明我们的修改对它造成了影响!
7.NoSuchCustomDomain?那我们就来给他设置一个,点击域名管理尝试绑定域名:
8.访问
9.访问: (hack.txt为我们刚才上传的)
(后期尝试上传图片,html等文件均可)
[图片上传中...(-8136f3-1631536782821-0)]
劫持成功!拿来吧你!
漏洞危害:劫持Bucket,并开放匿名读取功能。可以挂黑页或引用js文件,攻击者可以上传恶意js文件,去盗取用户信息。。。
2021最新整理网络安全\渗透测试/安全学习(全套视频、大厂面经、精品手册、必备工具包)一点我一
标签:渗透工具包2018
已有1位网友发表了看法:
访客 评论于 2023-02-10 14:26:00 回复
各类数学工具和模型实现破解。 然而在做物理攻击时,往往需要昂贵的设备,并要具备数学、物理学、微电子学、半导体学、密码学、化学等等多学科的交叉理论知识,因此其技术门槛和攻击成本都很高,目前在刚刚结束的 Blackhat 2018 上,展台上展