这学期通过选修《信息安全前沿》这门课程,了解到了更多的与本专业相关的知识,对自己的专业有了更多的认知。信息安全设计的方面很广,需要学的的知识有很多,在该课程上,我对老师介绍的图片隐写、加密以及Web安全比较感兴趣,并在该方面做了进一步的了解。
先简单的介绍一下图片隐写,所谓的图片隐写,就是通过一些手段,将不想让别人看到的信息隐藏到某张图片中以达到保密的效果。图片隐写的手段有很多中,在这里着重分享一下基于文件结构的隐写。
想要理解基于文件结构的图片隐写的原理,就要先知道文件结构的构成。这里就以jpg格式的文件为例:我们平常所看到的图片一般都是通过图片查看器查看,如果使用笔记本打开一张图片会是怎么样的呢?通过尝试可以发现,是一堆我们无法理解的乱码。查看文件结构,常使用 010 Editor 、WinHex等工具,十六进制和ASCII码一一对应,阅读起来更加方便。通过这些工具打开一张jpg图片,(通过查询资料知道)FF D8是jpg的文件头,FF D9则是文件尾。使用图片查看器打开一张图片,软件不会不能正常显示FF D9之后的内容。
因此,我们就可以借用这一特性来达到隐藏信息的效果。(下面的图片是通过cat 隐藏.jpg >> H.jpg 指令得到的一张藏有“秘密的图片”),使用图片查看器查看并不能发现隐藏的信息。
原因很简单,后面的信息被文件尾 FFD9截断了。
查看这类隐藏信息的方法有很多--比如使用上述提到的 010Editor,或者其他的工具binwalk,还可以使用foremost将隐藏的文件提取出来。我们用010Editor打开,很容易发现有两张图片
但只能看到半部分。再通过foremost即可提取出被隐藏的图片文件了。
这就是基于文件结构隐写的冰山一角,文件结构有很多种,知道了文件的结构,这类隐写也就可以迎面而解了。
接下来再说说基于LSB的图片隐写。LSB隐写又称为最低有效位隐写。我们知道,图片中的图像像素一般是由RGB三原色(红绿蓝)组成,每一种颜色占用8位,取值范围为0x00~0xFF,即有256种颜色,一共包含了256的3次方的颜色,即16777216种颜色。而人类的眼睛可以区分约1000万种不同的颜色,这就意味着人类的眼睛无法区分余下的颜色大约有6777216种。(如下图)
而LSB隐写就是通过修改RGB颜色分量的最低位二进制(LSB),来进行信息的储存,人类的眼睛并不能感知到前后的变化。每个像素可以携带3bit的信息(Red、Green、Blue各1bit)
如上图,我们对十进制表示的235绿色,修改了二进制的最低位,但颜色看起来却没有改变。我们就可以修改最低位中的信息,实现信息的隐写。我修改最低有效位的信息的算法就叫做LSB加密算法,提取最低有效位信息的算法叫做LSB解密算法。LSB隐藏信息在CTF(夺旗赛)中经常出现,也会有很多基于LSB基础的变形。比如,我们都知道一个色位是由8位的二进制构成,我们记作0-7(0位是最高位,7位是最高位,LSB隐写就是修改R、G、B的第0位),相应的,我们也可以修改任意一位来做隐写。对于这些没有规律的“LSB”,我们通常借用一个名为“stegsolve.jar”的工具来进行查看。通过stegsolve.jar我们就可以轻而易举的查看各个颜色通道下的图片了,通过查看各个颜色通道下的图片,如果发现异常,就可能存在隐写,就需要进一步的Data Extract。
图片隐写是很庞大的一个类,涉及的知识面很是宽广,基于文件结构的隐写与基于LSB原理的隐写,都只是图片隐写的很小一部分。通过对图片隐写的了解、学习,可以深刻的体会到隐写的趣味性,可以尝试着使用这些技术,把自己不想让人知道的秘密通过这种方法来隐藏起来。
随着互联网的发展,Web安全也愈发重要。Web安全与我们的日常生活也是息息相关的。通过浏览器分享信息,获取新闻。随着互联网的不断发展发展,一个网页能做的事情越来越多,除了看新闻,我们还可以看视频、玩游戏、购物、
聊天等,这些功能都大大的丰富了我们的生活。随着网页功能的增多与便捷,就开始有一些黑帽子,他们试图通过一些技术手段来进行牟利。获取你的账号密码,删除你的重要文件等等。我身边就有同学的服务器中的文件被删除,并索要比特币的案例。你是否经历过钓鱼网站?酷似官方网站,却暗藏风险,稍有不慎就可能钱包空空。前不久,QQ大量的盗号事件,像瘟疫一样传播.....当然还有那种惊动世界的案例,比如“斯等诺事件”、“极光行动”等,这些林林总总的事件,无一不在表明web安全的与日俱增的重要性。
为什么会出现这样的安全问题?安全归根结底还是信任的问题,如果所有人都能按照正确的流程去上网,不去谋取私利,也就没有安全问题可谈了。安全的根本在于信任,但要让所有人相互信任又谈何容易。而我们能做到的也就是做好持续防护,让心怀歹心的人无漏洞可钻。根据了解,Web安全的威胁隐患有很多,例如,SQL注入、木马上传、应用层DOS攻击 、Cookie劫持、Session劫持、验证认证绕过、远程缓冲区溢出、远程包含漏洞利用、本地包含漏洞利用、XSS等等。在信息安全前沿课程上,老师着重介绍了SQL注入这一攻击手段,根据老师的介绍,以及课后对SQL注入的搜索与学习,对SQL注入有了更多的认识。
注入一直以来都是Web 应用程序的最大风险,根据OWASP TOP10 2013和2017版,我们可以知道,注入都是位列榜一,再看OWASP TOP10 2021版,尽管注入下滑到了的第三名,但仍然占据着很大的比重。(附OWASP2017-2021变化图)
SQL注入的出现正是用户输入的不可信性所引起的。SQL 注入漏洞产生的条件 A:参数用户可控:前端传入的参数内容由用户控制 B:参数带入数据库的查询:传入的参数拼接到 SQL 语句,并且带入数据库的查询。SQL的原理主要可以分为四个点:恶意拼接、利用注释执行非法命令、传如非法参数和添加额外参数。
注入类型又可以分为数字型注入、字符型注入、搜索型注入、GET注入、POST注入、基于布尔的盲注、基于时间的盲注、基于报错的盲注等。稍微学习了一下MYSQL的基础语法,了解到MYSQL的查询语句 SELECT * FROM user_name WHERE user_name = $user_name,其中$user_name是用户传入的数据,如果传入的数据为 1 and 1=1# 这条语句的返回结果为真,再比如传入的数据 1234;DELETE FROM users,就可以实现删除掉users表中的所有数据,这也是恶意拼接所造成的结果。这肯定不是开发者想遇到的,所以就要知道如何避免SQL注入。
对于 SQL 注入,我们可以采取适当的预防措施来保护数据安全。冰面SQL注入常用的方法有过滤输入内容,使传入参数合理化,在用户传入数据的时候,检查用户的输入内容里面是否有危险的数据,对这些数据进行不允许的操作。避免使用动态的SQL,不要将敏感的数据存储在文本中,可以通过进一步的加密来达到想要的效果。限制数据库的权限和特权 ,将数据库用户功能的权限设置为最低要求,这样就可以有效避免攻击者的越权;还可以避免直接向用户显示数据库的错误信息,以防攻击者通过错误信息来针对性的进行攻击。SQL注入的学习并不是一蹴而就的,同样也是要积累与不断地学习,这只是对SQL注入的简单了解。
关于Web安全,在课下我通过网络搜索了解了文件上传的漏洞以及简单的漏洞利用。什么是文件上传漏洞?文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而用户绕过上传机制上传恶意代码并执行从而控制服务器。显然这种漏洞是getshell最快最直接的方法之一,需要说明的是上传文件操作本身是没有问题的,问题在于文件上传到服务器后,服务器怎么处理和解释文件。。最简单的实现文件上传漏洞的方法是通过一句话木马来实现的,不同的语言(比如asp,php)都有各自书写一句话木马的方法。所谓的一句话木马,是指语句短小精悍的木马,且功能强大,隐蔽性好,在入侵中扮演着强大的作用。关于文件上传漏洞的初阶学习我记录在了个人博客(http://jzcheng.cn/archives/167.html)上了。
通过这学期在信息安全前沿课程上的学习,我对信息安全方面的知识有了更多的了解,对信息安全也有了更直观、更立体、更全面的了解。对于部分信息安全的知识也不只是停留在概念层面了,课余时间尝试搭建了BWAPP、OWASP、DVWA、SQL-Lab等靶场,在靶场中进行一些浅层次的简单的实操,通过实操收获的东西远比看概念来得多,对知识的了解也更深入。信息安全与我们的生活也是息息相关的,学习信息安全知识,合理的使用,也是对个人信息安全的一种保护。现阶段,用学到的知识去尝试做CTF的题目,再通过做不出来的题目学习其中的知识点,以赛促学,学以致用,才能学的更全面。