小白学黑客

其他

想开发一个安全软件,怎么搞?

今天跟大家介绍一下,开发一个像360、QQ电脑管家这样的安全软件,有哪些核心技术,或者说哪些核心组件是必不可少的?反病毒引擎首先,第一个必不可少的就是反病毒引擎。安全软件最早的核心也就是这个东西,它的目的就是检测一个文件是不是恶意软件。反病毒引擎主要通过对文件进行静态分析,识别恶意文件的特征,与自己的病毒特征库进行匹配,来判断目标是否是恶意的。这里面主要用到的技术有文件格式识别、加壳脱壳技术、加密解密技术、可执行文件的反汇编、指令级的特征匹配、虚拟执行、样本家族团伙基因判别、机器学习等等。HOOK驱动安全软件的主要任务,就是要保护我们的电脑不受病毒、木马这些恶意软件的侵害,除了能通过静态分析识别已知的威胁,还要守住计算机的安全防线,防止被恶意软件攻破。那如何防守呢?安全软件需要感知计算机上发生的一切事情,这包含,每一个进程线程的创建、每一个文件的创建和读写、每一次网络连接的建立,甚至每一次系统服务的调用。安全软件是通过HOOK技术来做到这一切的。安全软件使用内核驱动程序,劫持应用程序通向操作系统内核的关键入口,从而监控所有进程的行为。几乎每一个安全软件都有这么一个驱动程序,它内部有一套HOOK框架,提供编程接口给其他驱动程序调用,比如360中大名鼎鼎的hookport.sys。主动防御驱动光有一个HOOK框架驱动不行,还得配套有一个主动防御驱动,负责完成具体的安全防御。应用层上一般会有一个主动防御进程,负责从安全软件云端服务器接收控制指令,下发最新的防御规则,最新的特征库,比如拦截哪些程序,拦截哪些操作等等。主动防御进程拉取到这些信息后,下发给内核空间的主动防御驱动程序,由它来具体执行对应的拦截行为。文件过滤驱动通过HOOK驱动来进行监控,有时候并不能完全解决问题。有一些底层软件,可以绕过系统API调用,这样一来HOOK驱动就监控不到了。因此,安全软件一般还会配套有一个文件过滤驱动,通过文件系统提供的接口实现更底层的文件监控功能。这一类驱动一般使用的技术有minifilter、sfilter等。网络监控驱动和文件过滤驱动类似,对于网络同样需要一个更底层的驱动程序,来监控计算机中所有的网络连接,通过操作系统网络架构底层的接口,监控计算机进进出出所有的数据包,将网络通信情况完全了如指掌。这一类驱动使用的技术有TDI、NDIS、WFP等。沙箱驱动除了守护我们的计算机,安全软件的另外主要工作还是分析恶意程序。前面提到的反病毒引擎主要是静态分析,但静态分析有一定的局限性,很多时候程序的恶意需要运行以后才会暴露出来。因此,动态分析技术少不了。虽然网络安全技术发展了很多年,但动态分析用到的主要技术还是“沙箱分析”。所谓沙箱分析,就是提供一个仿真的环境,把目标丢进去,让它跑起来,等到它原形毕露,是不是恶意就能一目了然。因此,许多安全软件也会提供一个沙箱驱动,通过内核隔离,模拟出一个“安全”的执行环境,让目标在其中运行。攻防驱动安全软件目标这么大,自然会招来很多恶意软件的攻击。除了恶意软件,有些安全软件互相为了抢夺用户,也会互相攻击。所以,安全软件必须加强自身的防御。前面提到的主动防御,属于正规军作战,也包含有保护自己的能力,但面对同样是内核级的攻击对手,这一招基本就收效甚微了。因此,安全软件一般还会有一个攻防驱动,通过各种手段和对手作战,保护自己,这里面用到的技术就五花八门了。总结总结一下,开发一款安全软件,主要有三方面的事情要做:看完这篇文章,你有什么收获吗,写作不易,欢迎动动手指转发分享。最后欢迎添加我的个人微信,最近整理了一套网络安全学习相关的资料分享给大家:
2021年5月10日
其他

黑客要攻下一台计算机,一般怎么做?

郑重声明:本文仅供技术交流,切勿拿去做违法事情很多刚刚入门安全的同学可能比较好奇:黑客到底是如何攻破一个目标的呢?这个目标可能是一个网站,也可能是一台个人电脑,还可能是一部智能手机。这篇文章就来跟大家简单聊聊这个问题。网络攻击其实是一种电子信息战争,看不见摸不着,却实实在在发生了。打一场战争之前最重要的就是情报收集,所谓知己知彼才能百战百胜,没有情报就是瞎搞。网络攻击也一样,第一步也是情报收集。端口扫描发起网络攻击之前,黑客通常会进行端口扫描,检测目标上开启了哪些服务。端口,在计算机网络协议中,是位于传输层的一个概念,当计算机上多个不同的进程都在通信的时候,用端口号来区分它们。端口是一个16位的整数,总共是65535个端口。端口扫描的原理,就是依次尝试向服务器的六万多个端口发送探测数据包,观察目标的反应。以TCP为例,如果发送一个TCP的握手包过去,目标返回了第二次握手信息SYN+ACK,则说明在这个端口上,有一个TCP服务存在。不过,现在的防火墙对于基本的端口扫描行为都能检测到,如果发现同一个IP地址短时间内尝试连接大量端口,则很快会被拉入黑名单,导致端口扫描行为无法再进行下去。所以端口扫描还会更换IP,更换扫描频率,变的更难识别。程序识别扫描到这些端口后有什么用呢?是用来进行下一步:程序识别。如果发现了80端口,背后可能是一个web服务器。如果发现了53端口,背后可能是一个DNS服务器。如果发现了3389端口,背后可能是一个开放了远程桌面连接的Windows机器。如果发现了3306端口,背后可能是一个MySQL服务器。如果发现了6379端口,背后可能是一个Redis服务器。如果发现了9200服务器,背后可能是一个ElasticSearch服务器。···再进一步,还能识别程序的种类、版本等。以80端口为例,通过继续发送HTTP数据包,从服务器的响应中,根据Server字段,还能知道这个web服务器是一个nginx,还是一个Apache或者其他。甚至通过有些服务,我们还能知道背后是一个Windows还是一个Linux还是一个Android,如果是Linux,内核版本信息也能知道。端口扫描+程序识别的过程,这些操作已经非常成熟,甚至都不用再自己编程或用工具去探测了。直接用Shodan或者ZoomEye,输入IP地址,就能帮我们列出这个IP背后的信息,省去了不少功夫。漏洞攻击识别了程序,接下来关键的来了:漏洞攻击。像nginx、tomcat、redis、mysql等等这些著名的开源软件,基本上每年都有不少的漏洞被曝光出来,而许多网站的运营管理人员安全意识并没有那么强,不会经常去打补丁升级,就会导致这些对外提供服务的机器上留存有不少的漏洞。黑客通常都会有一个漏洞武器库,每个软件有哪些漏洞他们都清清楚楚,针对每个漏洞还开发了对应的攻击武器。此时,黑客可以针对发现的服务器,编写一个漏洞利用程序,进行远程攻击,从而让远程服务器执行自己的代码。这其中最为人熟知的应该就是web安全了,因为web服务占据了互联网流量的比重实在太大,有太多的业务都是通过web来提供服务,这就导致黑客把目标聚焦在这一块。web服务器后端,一般是C++、Java、PHP、Python这些语言开发的程序,这些语言所携带的库和框架都或多或少的存在这样那样的问题,通过向这些后端程序发送一系列精心构造的请求,就可能让后端服务沦陷。权限提升当通过后端服务的漏洞成功入侵,攻击者可以让目标服务器执行自己的代码。但通常来说,操作系统都有一些安全机制,常见的web、mysql、redis、nginx这些,它们也是在一些低权限的进程中运行,就算攻击者攻破后端服务,也是在这些低权限的进程中执行代码,很多事情都做不了。所以这个时候,攻击者一般都需要做一件事:权限提升。接着,他们再通过利用操作系统的一些漏洞,攻击者可以让自己的攻击代码逃脱低权限的进程,获得高级权限,比如root权限执行。开始工作到这个时候,你的服务器就真的危险了!为了能够经常登录你的服务器,攻击者还会留一些后门,还会添加一些新用户,以便常回来看看。如果是一个窃密软件,它会偷偷把你的重要文件给传输出去。如果是一个搞破坏的,它还会篡改数据,黑掉网站。如果是一个勒索病毒,它还会加密你的文件。如果是一个挖矿病毒,那你的CPU和GPU就要辛苦了。还有些高级攻击的木马,并不会立刻对你的计算机做什么破坏,而是潜伏起来,躲在某个角落等待被唤醒。安全防御以上,就是黑客从信息搜集到最后拿下服务器的全过程。清楚了敌人的路数,咱们才好对症下药,做到下面几件事,防患于未然:防火墙记得开启,并关闭不需要的端口web服务server字段不要泄露任何关于软件的信息软件即时打补丁重要数据定时备份使用监控软件监控服务器CPU、内存的变化,有异常及时告警看完这篇文章,你有什么收获吗,欢迎转发分享哦~有疑问的朋友欢迎留言讨论,也欢迎大家添加微信直接问我(顺便赠送一套安全学习资料):咱们下次见!往期推荐急死!CPU被挖矿了,却找不到哪个进程!年轻人不讲武德,居然在简历中藏木马!打钱!我的数据库被黑客勒索了!
2021年4月16日
其他

干货!一文看懂漏洞攻击那些事儿

二进制漏洞的攻防对抗经过几十年的发展,涌现出了形形色色的攻击手法,也催生了一个又一个的防御手段,今天这篇文章来简单科普回顾一下这几十年的攻防对抗历史。第一回合:栈溢出攻击
2021年2月22日
其他

急死!CPU被挖矿了,却找不到哪个进程!

CPU起飞了最近有朋友在群里反馈,自己服务器的CPU一直处于高占用状态,但用top、ps等命令却一直找不到是哪个进程在占用,怀疑中了挖矿病毒,急的团团转。根据经验,我赶紧让他看一下当前服务器的网络连接,看看有没有可疑连接,果然发现了有点东西:上Shodan查一下这IP地址:反向查找,发现有诸多域名曾经解析到这个IP地址:这是一个位于德国的IP地址,开放了4444,5555,7777等数个特殊的服务端口:其中这位朋友服务器上发现的连接到的是7777端口,钟馗之眼显示,这是一个HTTP服务的端口,直接访问返回的信息如下:mining
2021年1月6日
其他

年轻人不讲武德,居然在简历中藏木马!

神秘邮件前几天,公司HR在群里发来了一条消息,说收到一封非常可疑的简历邮件。不枉公司三令五申的信息安全意识培养,咱们的HR小姐姐能有这样的敏锐意识,得给她点个赞!最近部门确实在进行人员招聘,也进行了大量的招聘宣传,每天都要收到不少的简历邮件,但这封邮件却透露着些许古怪。邮件的正文没有任何信息,只有一个附件:简历.pdf首先,咱们正常人投个简历,怎么着也会在正文中简单介绍一下自己吧?谁会像这样直接留白呢?其次,附件简历的文件名一般都会包含职位、名字等信息吧?就像小白-安全研发工程师-个人简历.pdf,谁会直接就叫“简历”啊?沙箱分析拿到这个pdf文件,别急着打开,弄到虚拟机沙箱中,看一下这货能不能现出原形。pdf文件打开一切看起来正常,确实像是一封真实的简历,就连应聘人的需求都是匹配的,但查证后发现,其中的联系方式全都是虚构的,简历内容基本是网络找来东拼西凑+虚构伪造出来的。再来看一下样本的行为分析,看看有没有什么可疑的行为。我嘞个去!不看不知道,这家伙居然释放了一个程序出来到临时文件夹,然后把它给执行了起来!去临时文件夹中试图找到这个文件,结果发现文件没了:看来这家伙有点能耐啊!临时写了个脚本,在虚拟机后台运行,不断检测备份临时文件夹下的文件。再一次跑了一下样本文件,总算把这个释放出来的exe给逮住了。逆向分析接下来送它进反汇编神器IDA,扒掉这家伙的底裤。打开一看,好家伙,我直呼好家伙!也不加个壳啥的,直接裸奔,连基本的指令优化都没开,这还不给我扒个底朝天。很快,我发现了一个有意思的地方:这货在遍历文件目录,像是在搜索什么东西。找到文件过滤的地方,这里是一个数组,在遍历寻找数组中的内容。接下来,看一下过滤的字符串,高能来了!!!居然在找简历、offer、工程师关键字的文件!!!这是什么骚操作?后面还有一段逻辑,是检测文件的MD5,防止把自己人“简历.pdf”当做了目标。拿到文件后呢,接着追溯起来,代码找起来太慢了,还是放沙箱里面抓行为吧。把这个exe再一次送进沙箱分析,来看一下网络请求。遗憾的是,并没有发现有网络请求,猜测是没有拿到目标文件所以没有传送?于是我又构造了一个假的Java研发工程师.pdf文件,来钓钓鱼。再来一次,果不其然,鱼儿上钩了,这一次抓到了一个网络请求:一个神秘的域名DNS解析!限于沙箱的隔离环境,这个请求实际上并没有成功,所以也就没有后续对这个域名的请求了。遗憾的是,这个域名现在已经关闭了,没法访问,难道是别人先一步发现了吗?复盘案情的全貌浮出了水面:HR的邮箱收到了一个藏有木马的《简历.pdf》文件,文件打开后会释放并执行一个木马程序xxx.exe(随机名)。接着木马会遍历磁盘目录,寻找文件名中包含简历、offer、工程师三个关键字的文件。拿到文件后,会通过网络请求将拿到的文件发送出去!究竟是谁会做这样的事?细思恐极!往期推荐打钱!我的数据库被黑客勒索了!黑客爱用的HOOK技术大揭秘!安全软件群雄混战史
2020年12月10日
其他

打钱!我的数据库被黑客勒索了!

数据库失陷昨天晚上,读者群里一位小伙伴发消息说自己的数据库被黑了,搞安全的我自然是立刻来了兴趣,加班加点开始分析起来,不知道的还以为我要熬夜等剁手节呢。这位小伙伴使用了某云平台搭建了一个自己的网站,昨天登录却发现了奇怪的报错:看来是数据库出了问题,随后查看数据库,才发现粗事情了···看来是遭勒索黑产团队盯上了,根据上面的提示信息,有两个数据库被他给下载后干掉了,分别是:kodbox、zxl。这位小伙伴给了我账户密码,登录了上去。用Navicat连接查看了一下,果然,这两个库中只剩下一个名字为WARNING的表,表中只有一行记录,留下了勒索者的威胁信息:接下来,打算用SSH登录到服务器上,看看有没有什么蛛丝马迹。首先检查了系统登录日志,并没有发现有可疑的IP登录记录。再检查了系统用户列表,也没有发现有可疑的用户出现。接着查看MySQL的日志,虽然这位小伙伴说没有开启binlog,但实际发现是开启的,并且日志文件也存在:随后,在mysql-bin.000023中,找到了案发现场,使用mysqlbinlog工具查看binlog日志:根据binlog时间戳显示,案发时间是在11月10日上午8:32-8:34分,短短两分钟之内完成的。根据日志记录,攻击者并没有备份数据的操作,而是简单粗暴的进行了DROP操作,所以别指望乖乖听话打钱就能摆平。接下来,准备查看一下MySQL的登录日志,看看这段时间是哪个IP和哪个用户名登录上来的。很遗憾general日志没有开启:再看看user表,一个神秘的admin用户出现在了这里,居然用的还是弱口令:123456这不是等于开了一扇大门让人随意进出吗?既然有binlog,要恢复起来还是比较容易。其他发现除了MySQL,在检查系统安全日志的时候,发现日志文件出奇的大:不看不知道,一看吓一跳,里面全是来自各种IP的SSH暴力破解登录的记录,持续24小时在尝试,感觉受到了暴击:用tail
2020年11月11日
其他

黑客爱用的HOOK技术大揭秘!

什么是HOOK技术?病毒木马为何惨遭杀软拦截?商业软件为何频遭免费破解?系统漏洞为何能被补丁修复?这一切的背后到底是人性的扭曲,还是道德的沦丧,尽请收看今天的专题文章:《什么是HOOK技术?》上面是开个玩笑,言归正传,今天来聊的话题就是安全领域一个非常重要的技术:HOOK技术。HOOK,英文意思是“钩子”在计算机编程中,HOOK是一种「劫持」程序原有执行流程,添加额外处理逻辑的一种技术。按照这个定义,其实我们Python中的装饰器和Java中的注解,这种面向切面编程的手法在某种程度上来说,也算是HOOK。不同的是,本文要探讨的HOOK并非属于程序原有的逻辑,而是在程序已经编译成可执行文件甚至已经在运行中的时候,如何劫持和修改程序的流程。按照劫持的目标不同,常见的HOOK有以下这些类型:Inline
2020年11月5日
其他

双击图标到执行main函数,这之间发生了什么?

我们需要运行一个程序或者软件,双击图标即可完成。不过从你双击到程序的窗口产生的这“短暂”的时间内,这背后发生了什么事?首先,系统有一个进程监测到了你的双击操作,这个进程就是系统shell,没错,就是资源管理器explorer.exe,不是IE浏览器了,那是另一个进程iexplorer.exe。你可以尝试打开任务管理器将这个进程结束掉,然后桌面的一切元素都没有了,任务栏,图标什么的都消失了。只剩下墙纸一张,此时,右键菜单也不复存在···因为平时负责这些东西的explorer.exe已经被你干掉。要恢复的话,在任务管理器中新建任务,运行explorer.exe即可。系统shell感知你双击的操作后,取得你双击对象的完整路径,然后最终会调用一个叫做CreateProcessA/CreateProcessW的函数来创建一个新的进程。这个函数是ring3上的API函数,在内核中,即ring0里,与之对应的是NtCreateProcess函数来完成创建进程的任务(此为Windows
2020年10月27日
其他

安全软件群雄混战史

自Windows帝国建国,传至XP一朝,已历十世。今朝廷腐败无能,木马病毒之徒汹汹当朝,流氓软件之辈纷纷秉政。天降大任于吾辈,自当扫清寰宇,还天下太平。361杀毒公司成立的第一天,公司老总发表了上面慷慨激昂的演讲。361杀毒公司汇集天下英才,来到Windows帝国后,迅速构建了强大的安全防御战线,不出半年,就打的病毒木马丢盔弃甲,流氓软件更是望风而逃。不到两三年的光景,361杀毒公司就占据了比特宇宙中绝大多数的Windows帝国市场。
2020年10月25日
其他

我是一个流氓软件

World!未完待续······
2020年10月24日