常见网络攻击方式01

1、SQL注入
对于存在漏洞的网站,精心构建网页提交参数,参数中附带恶意攻击的SQL语句
网站服务器代码,并没有主动过滤这些恶意代码,就会导致攻击者的SQL语句被执行
比如:

--原始语句拼接:
select * from tableA where uid='传入参数'
--把参数设计为:
a'; delete * from tableA; '
--直接替换后就成为:
select * from tableA where uid='a'; delete * from tableA; ''
--这张表的数据就没了

2、跨站脚本攻击XSS
攻击者在网页中注入恶意脚本,当其他用户浏览该网页时,恶意脚本就会在用户的浏览器上执行
包括:反射型XSS、存储型XSS、DOM型XSS、其他XSS
比如:反射型XSS,攻击者在网站A中,放入精心构造的网站B的URL,但这个URL中包含恶意脚本
用户点击这个URL时,恶意脚本会被一同发送到网站B,然后反射到用户浏览器,被用户浏览器执行
从而达到盗取信息、劫持等目的

3、跨站请求伪造CSRF
比如:被攻击者已经登录了网站A,并保留有登录信息
攻击者诱导被攻击者访问网站B,利用网站A的登录信息,向网站A发送精心构造的请求,比如转账请求
网站A收到请求后,判定登录信息有效,执行了转账,后果可想而知

4、XML External Entity攻击XXE
对于一些老旧的网站,上传精心构造的XML,利用XML解析器配置不当,可以执行XML的DTD中的指令
这样再访问这个被上传的XML,就能看到指令的执行结果

5、服务器端请求伪造SSRF
利用服务器端之间的信任,精心构造请求,绕过服务器限制,达到攻击目的
比如攻击者希望获取A网站的一张保密的图片,但没有权限
攻击者又发现B网站与A网站之间有更高的信任关系,而且B网站的留言功能,会主动缓存一些URL的图片资源
攻击者在B网站留言板,输入A网站的图片地址,过几分钟一刷新
B网站已将A网站的图片进行了缓存,攻击者就获取到了这张图片,绕过了A网站的限制

6、JSONP攻击
JSONP技术多用于跨域获取数据,并执行回调,如果没有做好限制,容易被攻击者利用
比如攻击者在网站A上构造一个精心的URL,这个URL指向网站B,同时带有一个回调函数
如果没有防护,网站B会按请求内容进行响应,然后返回数据,被攻击者的浏览器会自动执行回调函数
攻击者可以利用这个回调函数,达到获取信息等非法目的

7、越权攻击
攻击者通过构造访问URL,尝试获取超出账号的权限
传统Web服务,很多页面都可以被越权攻击,甚至访问到管理员页面
包括水平越权和垂直越权
比如一个账户,原本只能看到一个商品的销售信息,但在URL中,通过枚举商品ID,居然可以访问到所有商品销售信息

8、扫描攻击
利用漏洞、弱口令、端口扫描工具,对网络中主机进行批量扫描,根据扫描结果一一攻破,然后偷偷上传木马等控制软件
很多肉鸡就是这样被制造出来的

9、目录遍历
如果网站没有限制不可枚举目录,其实风险是很高的
无论是看到网站源码、配置文件、还是日志,都有可能暴露出新的被攻击点

10、漏洞攻击
利用主机、中间件、各类组件现有的漏洞,然后进行利用

11、零日漏洞攻击
任何软件,在爆出漏洞到漏洞补丁推出,到漏洞被修复,这之间有个时间差
在这个时间差之内,利用该类漏洞进行攻击,被大家成为0day攻击

比如“三角测量”攻击,利用多个零日漏洞,攻破iPhone防护,可安装恶意软件

12、命令注入
有些网站,有命令执行的功能
这样,攻击者可以通过精心构造的请求,将想要执行的脚本,嵌入到请求中
最终达到在服务端执行命令,并返回结果的目的

13、文件上传
有些网站,没有做好上传文件的限制
攻击者甚至可以上传shell脚本
结合上面的命令注入,后果可想而知

14、恶意文件
通过宏、代码嵌入等方式,达到执行恶意代码的目的
比如N年前常见的office宏攻击或VBA攻击,下载一个文件就中招了
还有精心构造的图标、后缀、压缩包,也能达到麻痹被攻击者,执行恶意代码的目的

15、蠕虫病毒攻击
通过系统或某些软件漏洞,自动攻击主机或网络设备,复制,潜伏,然后继续攻击其他电脑
这样也能抓到不少肉鸡
但蠕虫传播很快,肉鸡多了,就成了僵尸网络

16、木马攻击
通过各类攻击手段,在被攻击方的电脑上,安装一个小程序
这个小程序被成为特洛伊木马,会隐藏自己,好一些的在任务管理器都找不到,更厉害的可以获取比内核还高一些的权限
然后攻击者,通过这个木马,获取被攻击者的信息,甚至对电脑进行完全控制
比特币价格好的时候,有人还用攻击的到的电脑挖矿,你能信。。。

17、勒索软件
加密算法的发明人,应该也没想到,自己发明的算法,会被用来开发这类软件
和蠕虫拼命扩散资深、木马拼命隐藏资深,并不一样
勒索软件会在后台,拼命扫描你的各类重要文档(包括数据库文件),然后进行加密
加密之后,会告诉被攻击者:你的资料都被加密了,想要吗?那就给指定地址打几个比特币
然后就会再解密
如果不支付,也可能会被撕票。。。
由于密钥长度一般很长,所以解密几乎不可能,要么交赎金,要么抓到幕后的攻击者

18、钓鱼邮件
将攻击代码或攻击软件,伪装为压缩包等方式,通过邮件,大规模发送给被攻击客户
当客户防护意识不够强的时候,误点了这些代码
就相当于自己安装了木马,或者蠕虫
这些软件既可以从你电脑中偷取资料,严重的时候会让电脑成为肉鸡

19、钓鱼网站
通过伪造网站,让用户误以为自己在官网
填写自己的用户名、密码、严重码信息
殊不知别人在真正的官网,通过这些信息登录成功
已经盗取了你的账号、你的信息、你的金钱

20、会话劫持
被攻击者登录成功后,获取被攻击者的会话识别信息
利用会话预测或会话固定技术,模拟客户,接管会话
客户和网站可能都不知道被劫持了

凭证填充:通过获取的凭证,可以尝试该网站各服务接口,尝试获取有价值的信息

21、邮件轰炸
通过软件,对指定邮箱,发送大量垃圾邮件
随着各类垃圾邮件过滤算法的提升,越来越难了

22、暴力破解
包括密码爆破、验证码爆破、目录爆破等
通过常用弱密码字典、被脱库的第三方密码库,构造程序,不断尝试自动登录
现在这种攻击基本都会被防护,密码错几次后就24小时后才能重试
但被脱库的第三方密码库,还是危害很大的
要定期改密码
这里再补充一个“短链爆破”,由于短链位数少,很容易被遍历,而且几乎没有访问限制,经常被攻击者作为一个突破口

23、密码攻击
除了密码爆破(字典、枚举),还有一些常用的手段
彩虹表攻击:通过已知的hash值,倒退密码,如果不加盐,还是很容易被攻破的
密码喷洒:通过一个防护薄弱的网站,获取被攻击者的密码,用这个密码,尝试各大网站
撞库攻击:通过已经泄露的用户名和密码组合,尝试在其他网站上进行登录,以获取未授权的访问权限
扫号攻击:攻击者利用网站页面或应用程序的接口来检测账号是否存在,为后续攻击手段做好准备

24、流量劫持(主机端)
浏览器劫持:通过改变用户的浏览器设置,如默认搜索引擎和主页,来重定向用户到特定的网站
数据劫持:篡改HTTP页面,注入广告或非法内容,包括HTTP头注入和HTTP内容注入

25、网站劫持
网站被攻破后,上传恶意页面,从而可以
a、页面植入
一般用户是不知道,他们看到的一个页面,可能是由n个页面组成的
在一个可信网站下,嵌入一个带有攻击目的的页面
诱导客户输入敏感信息,进而达到攻击者目的
b、点击劫持
通过视觉欺骗手段隐藏恶意链接,诱使用户进行错误点击
c、网站嵌入
嵌入各类不法网站
d、HTTPS欺骗
在安全网站中,嵌入不安全内容,欺骗客户
e、恶意下载
诱导客户下载恶意程序

26、配置错误攻击
配置错误,比大家认为的多很多,比如:
报错时,debug信息直接throw到页面上
spring boot可以通过env直接把配置信息展示到页面上
swagger ui可以不授权访问
redis等中间件没有设置访问限制
容器部署的时候,没有修改默认管理页面的密码
各类密钥,直接上传到代码库
打Jar包的时候,加入了混淆防护,但Source却包一起上传了maven库
生产环境和测试环境混用,导致删了生产数据
买了防火墙,但网络流量不经过防火墙,你能信?

27、逻辑漏洞攻击
这类攻击也很多,比如:
折扣券可以多次消费
通过带一些参数,直接获得更高的折扣
通过带一些参数,可以直接获得任意用户访问的权限
通过带一些参数,直接绕过验证码的防护
只有你想不到,没有他写不出来的逻辑Bug

28、缓存攻击
针对网站缓存特性,构建大量请求,造成缓存击穿或缓存穿透,从而导致网站崩溃

29、杂烩饭式恶意软件
组合使用多种恶意软件技术,进行恶意攻击,并有效防止被查杀。
比如“熊猫烧香”

30、加密货币攻击
挖矿劫持:利用受害者计算资源,给攻击者挖矿
51%攻击:控制网络超过一半的算力,达到操纵交易的目的,越是小的交易网络,越容易被攻击
智能合约漏洞攻击:利用合约中的逻辑漏洞,达到攻击目的,已经发生过多次,每次被攻击者都损失惨重

31、社会工程学攻击
这个是最难防的
就是有目的的与相关人士沟通,获取信任,进而获取权限
手段包括金钱、心理学、信息不对称等,方法通过聊天、电话、视频、语音、邮件,五花八门

常见的终端攻击方法

1、远程桌面攻击
这种攻击在90年代和00年代是十分流行的,当年大家安全意识淡薄,3389端口毫无防护。
就算现在,远程桌面仍然是被重点照顾的对象,毕竟攻破后,太好用了。
一些第三方的远程桌面攻击,被爆出漏洞后,同样给了攻击者极大的遍历,比如某花。

2、共享文件夹攻击
在一些职场内,共享文件夹仍然可以设置为everyone可以访问,这样问题很大。
一方面,有些不应该被共享的资料,会被非法获取
另一方面,也容易被攻击者,利用共享文件夹投毒,访问的人越多,传播越快

3、移动存储攻击
通过U盘,将资料拷贝走

4、PE攻击
通过BIOS设置,通过U盘系统启动,将资料拷走

5、磁盘攻击
将磁盘挂载到其他电脑,将资料拷走

6、打印机
在打印机,读取刚打印出的机密信息,甚至将材料拿走
用网络设备,模拟打印机,进行中间人攻击,可非法获取很多资料

7、屏幕攻击
通过监视、偷拍使用者的屏幕,获取信息的攻击方式

8、文件发送
通过网站上传、邮件附件、聊天工具、文件传输工具、文件分享工具、代码管理工具等,非法获取信息

如何通俗解释BadUSB攻击

攻击者构建特殊的USB设备,比如USB键盘
该设备有两块芯片,一块就是USB键盘芯片,另一块是攻击芯片

当该USB设备连接电脑后,电脑会识别为键盘,并自动安装好驱动

此时,攻击芯片向电脑发送纯键盘指令
打开命令行,下载指定软件,安装该软件,这台电脑就中木马了

据说某组织,利用类似方法,盗取了不少快递单信息
两人一组,到快递集散中心加装沟通业务
A拉住负责人聊业务
B趁机找电脑插入USB设备,代码运行完成后,再拔出设备
后台木马很有针对性的,盗取快递单信息
被抓时,已经成功攻击了十几家快递站点

记录一个卡券系统漏洞

大概三年前,遇到过这样一个系统需求,被安全团队及时发现,避免了引起大规模的问题。

事情是这样的,我们有一个比较老的外购卡券管理系统,之前都是实体卡直接核销的。
后来逐步上线了各大电商平台,就需要通过虚拟卡的方式,通过短信将激活地址、卡号、卡密直接发送给客户,客户可以直接注册、激活。

但这时遇到了两个问题:
1、客户需要复制卡号、卡密到激活地址,操作比较繁琐
2、卡号、卡密都很长,会造成一个短信无法成功发送,需要拆分成两个短信发送,同样是不方便

业务方希望客户操作更加方便,与供应商沟通,供应商提供了这样一个方案:
1、客户下单完成后,将激活地址+卡号+卡密,一起生成一个短链
2、直接将短链通过短信发给客户
3、客户点击短链,一键绑定

听起来一起都很美好是不是?

但很快就被安全团队质疑了,攻击思路是这样的:
1、暴力枚举短链,批量获取短链实际地址
2、匹配地址,批量抓取卡号卡密
3、申请账号,绑定卡号卡密,攻击成功

于是这个需求被判定为高危风险,直接就被否定了。

一种U盘蠕虫的攻击方法

最近,从做安全的哥们那里,听说了一种利用社会工程方法,实施蠕虫攻击的案例。具体攻击是这样实施的:

攻击者要攻击一个内外网隔离的实验室,但一直无法攻入内部网络。

于是,他们精心设计了一种U盘蠕虫,将蠕虫伪装为容易引发人好奇心的资料“比如小电影”,与其他无关资料一起,拷贝到几个各异的U盘中。

然后故意将U盘散布到实验室工作人员的上班路径中。

然后总有一两个眼神比较好,好奇心比较重的工作人员,点击了伪装的蠕虫(U盘策略为,能进不能出)。

还好他们的其他防护策略做的比较好,最终没有引发严重的问题,但触发了安全警报。

于是开始排查,但投U盘的人都比较贼,而且U盘很小,没能找到。据说最终收缴上来的U盘有好几个。

然后,实验室进一步升级了安全措施,并禁用了U盘的读取权限。

在同步排查外网的时候,才发现,几个月前外网就被人攻破了。

然后又花了大价钱,升级的外网安全防护。

人性的好奇心、贪婪和不够警惕的友善,永远是社会工程攻击的重要途经。

Java程序如何加密

今天在想Java程序加密的事情,现在市面上的方法,无非是混淆代码,jar包签名等,瞬间就能被破解掉。

我想到了一个很挫的方法,和PE文件加壳脱壳一样,class文件/jar文件为什么不可以呢?

但这样做的话,是有限制的,就是客户必须使用你自己定制的JVM及容器,否则是无法运行的。

具体方法如下:
1、生成class文件后,按一定规则进行加密处理。偷懒的话,直接对称加密好了。
2、生成jar包的时候,同样按一定规则进行加密处理。偷懒的话,zip的时候,增加一个强壮的密码就好了。
3、下载并编译OpenJDK,在读取jar包内容,和class文件的地方,要进行脱壳处理。按上面的思路,就是解压缩和解密处理。
4、当然,定制部分的dll和exe,需要进行PE加壳处理

当然,上面这种方式的话,和加壳脱壳还是有很大的区别的,就是不能自行解压,并要依赖于JVM甚至容器的定制。

如果要真正实现自解压处理的话,就要多做几步:

具体方法如下:
1、编译生成class文件,按一定规则进行加密处理。偷懒的话,直接对称加密好了。
2、生成jar包的时候,同样按一定规则进行加密处理。偷懒的话,zip的时候,增加一个强壮的密码就好了。
3、将需要的所有jar包,按你喜欢的方法,生成一个jar包列表,并打成一个巨大的资源文件。
4、写一个java引导文件,用于处理运行参数,比如入口程序等。
5、写一个自定义classloader+jni+dll,用于读取巨大的资源文件中的jar包及class文件
6、用普通的jvm启动程序,初始化时用引导文件+自定义classloader
7、引导文件+自定义classloader将需要的文件直接解压到内存中,提供给jvm使用
8、dll部分要进行PE加壳处理

U盘只读方法研究

1、固件级别
在自助机上写书数据时,通过闪存厂商提供的工厂工具或SDK,调整闪存固件为只读。
优点:
技术门槛较高
缺点:
需要闪存厂商提供API
绑定闪存厂商

2、驱动级别
安装驱动前,Windows无法直接识别。安装驱动后,数据分区对Windows只读。
也可以将U盘分为两个分区,一个分区光盘分区,存储驱动;一个分区是数据,Windows无法直接识别。安装驱动后,数据分区对Windows只读。
优点:
技术门槛高
缺点:
开发周期长,需要技术储备

3、分区级别:光盘模式
将U盘分区设置为光盘模式。
优点:
技术门槛较高
缺点:
需要技术探索,需要技术储备

4、分区级别:特殊分区
采用特殊分区,让分区内文件只对Viewer只读,在Windows下无法挂载分区,或者看不到分区(未分配)
优点:
技术门槛较高
缺点:
需要技术探索,需要技术储备

5、文件系统级别:分区只读(其实本机注册表,本机生效)
通过API,将NTFS分区,设置为只读。
优点:
实现简单
缺点:
技术门槛低

DISKPART
DISKPART>LIST DISK
DISKPART>SELECT DISK 2
DISKPART>ATTRIBUTES DISK SET READONLY
#DISKPART>ATTRIBUTES DISK CLEAR READONLY
DISKPART>EXIT

6、文件系统级别:文件只读
通过NTFS操作,将文件设为只读。
优点:实现简单
缺点:技术门槛低

7、文件级别:文件加密
同时在ZIP压缩时,添加随机密码。随机密码经过加密,放到Meta文件中。
优点:实现简单
缺点:技术门槛低

8、文件级别:自定义文件格式
自定义文件格式
优点:实现简单
缺点:重新造轮子,和个人水平相关

汉化.net程序

1.首先是反编译

ildasm11.exe /ALL /VISIBILITY=PUB+PRI+FAM+ASM+FAA+FOA+PSC /UNICODE Target.dll /OUT=Target.il

2.打开Target.il
搜索ldstr,后面就是你所需要汉化的字符串

同时会遇到bytearray类型的字符串,这些字符串是以UNICODE的HEX方式存储的,将汉化后内容,同样转成UNICODE的HEX字符串存回去,同时记住要修改字体

3.去掉StrongName
将Target.il中publickkey字段删除

4.生成snk

sn.exe -k Target.snk

5.重新编译并增加StrongName

ILASM11.exe Target.il /dll /key:Target.snk /resource:Target.res /out:Target_cn.dll

6.验证

sn -v Target_cn.dll

第一次汉化游戏

上大学时,有款游戏叫“是男人就下100层”
无聊的时候玩玩还不错

但是看到上面的日文,我就不爽,干脆,汉化掉算了
查看后,没加壳,哈哈哈哈哈哈哈哈
掏出eXeScope,找出资源,我改。。。
很快菜单等资源都改好了

运行试试,感觉不错,但旁边怎么还有这么大的日文?
继续找,发现,居然是图片
算你狠,掏出PS,改了几张,换上去
啊~~~
好难看,字体好难看啊
我这个没审美观的人都觉得好难看啊

算了,这个汉化版就算了吧,还是不拿出去丢人了。

过了几个月,
一哥们跟我说,来,我有中文版,
我很想看看PS高人怎么换掉图片的,
结果,
结果,他只换了菜单,
还没我汉化的多。。。
心情大好,原来我不是最差的那个啦

其实,换掉菜单后,的确就容易入手一些了,
后来看到过比较好的版本,但加壳了,
也没空细细研究,高手还是普遍存在的

修改程序时间验证

上大学的时候,用过一款仿真软件,但授权已经过期了,
使用的时候必须将时间调回到两年前,
可是杀毒软件就不开心啦,彻底罢工,
唉,谁让当时USB病毒横行呢,

为了不用再调试间,加上当时对反向工程十分的痴迷,于是开始尝试破解该软件
当时什么都不太懂,想法也很单纯,把时间锁定到两年前
用传说中的神器OllyDBG,找到所有调用时间API的地方,
比想像的乐观的多,只有两个地方调用了时间API,
而且,API调用的后面有足够的空间让我用汇编将年份改掉
很快就搞定了
当时很没追求,还足足开心了半个月
过了半年后,发现,不用修改他的程序就能改掉
又过了半年后,发现,专门有软件修改程序时间,哈哈,坐井观天啦

现在想起来,当时软件保护做的真差,连壳都没加,唉~~