2012年10月30日

投票詐騙網站行為分析

最近詐騙集團越來越資訊化了
稍早看到一個資訊,如下圖


原來是新型態的詐騙...
我弄到網址之後,就進去玩它了XD




如下圖,看得出來這就是一個典型的釣魚網站
所以,現在就是拆禮物的時間了


禮物拆開後,看到一些詭異的東西
vote.js程式碼如下
Ext.ns('Ice4c','Ice4c.vote');
Ice4c.vote.tid;
Ice4c.vote.checked = false;
Ext.onReady(function(){
 Ext.EventManager.on(Ext.getDom('anniu'),'click',function(){
  var v = Ext.getDom('phoneno').value;
  if(!v) {
   alert("請輸入手機號碼!");
  return;
  }
  if((v+'').length !=10 ){
   alert("手機號碼无效,請重新輸入!");
  return;
  }
  if(!/09[0-9]{8}/.test((v+''))){
   alert("手機號碼輸入格式不正確!");
  return;
  }
  var btn = Ext.getDom('anniu');
  var value = Ext.getDom('yanzhengma');
  var btn2 = Ext.getDom('toupiao');
  function disButtonTimer(){
   if(btn.sec >=  30){
    value.disabled = true;
    btn2.disabled = true;
    btn2.value = '請等待'+ (btn.sec-30) +'秒之後進行投票';
   }else{
    value.disabled = false;
    btn2.disabled = false;
    btn2.value = '投票';
   }
   if(btn.sec == 0){
    btn.value = '獲取確認碼';
    btn.disabled = false;
    return;
   }else{
    btn.value = '請等待'+ (btn.sec--) +'秒重新發送確認碼';
   }
   disButtonTimer.defer(1000,btn);
  }
  var pid = Ext.getDom('pid').value;
  Ext.Ajax.request({
   url:'../admin/createSno.php',
   params:{pid:pid,phoneno:v},
   method:'post',
   success:function(response){
    var d = Ext.decode(response.responseText);
    if(d.state == 1) alert('確認碼已發送到您的手機,請查收!');
    else alert(d.msg);
    btn.disabled =  true;
    btn.sec = 60;
    disButtonTimer();
   },
   failure:function(response){
    alert('出現錯誤,請重試!');
   }
  });
 },Ext.getDom('anniu'));
// Ext.EventManager.on(Ext.getDom('yanzhengma'),'blur',function(){
// 
//  var sno = Ext.getDom('yanzhengma').value;
//  var pno = Ext.getDom('phoneno').value;
//  if(!pno) {
//   alert("请输入手机号码!");
//   return;
//  }
//  if(!sno) {
//   alert("请输入验证码!");
//   Ext.getDom('yanzhengma').focus();
//   return;
//  }  
//  var btn = this;
//  Ext.Ajax.request({
//   url:'../admin/checkSno.php',
//   params:{sno:sno,tid:Ice4c.vote.tid,phoneno:pno},
//   method:'post',
//   success:function(response){
//    var d = Ext.decode(response.responseText);
//    if(d.state == 1){
////     alert(d.msg);
//    }else{
//     alert(d.msg);
//    }
////    btn.disabled =  true;
//   },
//   failure:function(response){
//    alert('出现错误,请重试!');
//   }
//  });
// });
 Ext.EventManager.on(Ext.getDom('toupiao'),'click',function(){
  var sno = Ext.getDom('yanzhengma').value;
  var pno = Ext.getDom('phoneno').value;
  if(!pno) {
   alert("請輸入手機號碼!");
  return;
  }
  if((pno+'').length != 10 ){
   alert("手機號碼无效,請檢查!");
  return;
  }
  if(!/09[0-9]*/.test((pno+''))){
   alert("手機號碼輸入格式不正確!");
  return;
  }
  if(!sno) {
   alert("請输入確認碼!");
   Ext.getDom('yanzhengma').focus();
  return;
  } 
  if((sno+'').length != 6 ){
   alert("確認碼无效,請檢查!");
  return;
  }
  if(!/[a-zA-Z0-9]{6}/.test((sno+''))){
   alert("確認碼不能含文字!");
  return;
  }
  var btn = this;
  var pid = Ext.getDom('pid').value;
  Ext.Ajax.request({
   url:'../admin/sendTicket.php',
   params:{sno:sno,pid:pid,phoneno:pno},
   method:'post',
   success:function(response){
    var d = Ext.decode(response.responseText);
    if(d.state == 1){
     btn.disabled =  true;
     alert(d.msg);
     window.location = 'index.php';
    }else{
     alert(d.msg);
    }
   },
   failure:function(response){
    alert('出現錯誤,請重試!');
   }
  });
 });
});


這個網頁裡面,手機號碼跟驗證碼的檢查,都是用javascript在前台處理掉
而且驗證碼的檢查,只單純的檢查是否為6個整數字元而已
科科,案情似乎不單純XDDDD


接下來咧,當然是亂try它的網址
看會吐出什麼東西

CentOS?
有沒有詐騙集團已經進步到會架Linux Server搞詐騙的八卦?

怎麼覺得開始越來越好玩了
nmap一下是一定要的啦!


嗯。
詐騙集團表示:這裡什麼都沒有,有興趣的請自便XD
開那麼多服務會讓很多人晚上睡不著捏!!!
其實這東西是honeypot(大誤)

...
...
...
...
...
經過一段時間之後...

本人聲明:我真的沒有踹它主機啦

我只是開了鯊魚而已XDDDD


經過分析,發現這個網站主要有兩個關鍵的service
分別為createSno.php及sendTicket.php
接下來要幹嘛?
就try service阿,不然咧?


createSno.php行為如下
Full request URI: http://www.xxx.com/admin/createSno.php
HTTP method: POST
Params: pid=(投票ID)&phoneno=(手機號碼)

回傳值為JSON Str
可能的回傳值如下
{"state":"0","msg":"请输入正确手机号码!"}
{"state":"0","msg":"请勿重复投票!"}
{"state":"1","msg":1812}

sendTicket.php行為如下
Full request URI: http://www.xxx.com/admin/sendTicket.php
HTTP method: POST
Params: sno=(驗證碼)&pid=(投票ID)&phoneno=(手機號碼)

回傳值為JSON Str
可能的回傳值如下
{"state":"0","msg":"確認碼已經使用!"}
{"state":"0","msg":"請先獲取確認碼!"}
{"state":"1","msg":"投票成功!"}


程式邏輯很簡單
1. 使用createSno.php取得使用者手機號碼
2. 使用sendTicket.php取得簡訊確認碼


然後咧?

別提這個網站了,你聽過Python嘛?


不知道會不會有人閒閒沒事,用Python寫個小東西弄一堆亂數去餵這兩隻service?
科科


補充:
後台介面如下

很簡單,SQL injection就搞定了
By 強者我朋友

3 則留言:

  1. 可否透漏一下管理後台的登入網頁名稱

    回覆刪除
  2. 這東西好久了耶...
    我也忘了= =...

    回覆刪除
  3. 開source code,加上一點第六感就找到了
    不過SQL injection進去之後好像只能看而已
    我還沒找到方法把網站玩壞

    回覆刪除