zoukankan      html  css  js  c++  java
  • 应急分析异常通信的小思路和自己写的小工具(查询CNAME和A记录)

    一、背景:

    在很多时候,应急会发现。卧槽,异常连接,只有一个域名或者IP。

    怎么办?上防火墙看记录,查域名对应的记录累成狗,自己把之前的代码改了改,写了个小工具,一条命令查询DNS相关记录,也可以指定内网服务器查询。

    二、分析思路:

    1、首先排查一下流量通信情况,采集远端IP、域名、及其对应的解析记录。

    2、国内推荐使用我们360,以及threatbook、还有老东家tianjipartner的的威胁情报源分析是否有关联威胁,如果有采取第一波止损措施,马上下策略隔绝断网。重要的机器可以直接先断了网或者会话。(大陆之外推荐使用passivetotal和virustotal)

    3、如果没有,上主机查进程,可以写脚本监控。查看通信端口对应进程:

    1 #sudo netstat -anop | grep a.b.c.d  查到pid
    2 #sudo ps -ef | grep pid确定进程

    4、疑似进程取样kill,正常进程先不要kill ,进一步可以做深层次的源代码分析等等。

    三、使用的dnspythonlib库:

    昨晚临时写的,把之前的代码改了改,其实可以好好重写一番,里面有部分实现逻辑其实挺垃圾的,求轻喷。

     1 # -*- coding:utf-8 -*-
     2 
     3 #import  lib files
     4 import sys
     5 import dns.resolver
     6 
     7 #global varites defines
     8 checker = dns.resolver.Resolver()
     9 nameserverlist = ["202.106.0.20","114.114.114.114","8.8.8.8","8.8.4.4"]
    10 resultdict = {}
    11 
    12 #global functions defines
    13 def set_nameserver(nameserver):
    14     global nameserverlist
    15     if isinstance(nameserver,list):
    16         nameserverlist = nameserver
    17         return 0
    18     else:
    19         return 0
    20 
    21 def check_a_record(domain):
    22     global checker
    23     global nameseverlist
    24     global resultdict
    25     alist = []
    26     for server in nameserverlist:
    27         try:
    28             checker.nameservers = [server] 
    29             record = checker.query(domain,"A")
    30         except Exception,ex:
    31             continue
    32         for iprecord in record:
    33             alist.append({"nameserver":server,"arecord":iprecord})
    34     resultdict["A-RECORD"] = alist
    35     
    36 def check_cname_record(domain):
    37     global checker
    38     global nameserverlist
    39     global resultdict
    40     clist = []
    41     for server in nameserverlist:
    42         try:
    43             record = checker.query(domain,"A")
    44         except Exception,ex:
    45             continue
    46         for value in record.response.answer:
    47             for item in value.items:
    48                 try:
    49                     if isinstance(item,dns.rdtypes.ANY.CNAME.CNAME):
    50                         clist.append({"nameserver":server,"cname":str(item)})
    51                 except Exception,ex:
    52                     continue
    53     resultdict["CNAME"] = clist            
    54 
    55 
    56 
    57 if __name__ == "__main__":
    58     testdomain = sys.argv[1]
    59     check_a_record(testdomain)
    60     check_cname_record(testdomain)
    61     print resultdict        
     1 # -*- coding:utf-8 -*-
     2 
     3 #import lib files
     4 from optparse import OptionParser 
     5 from apilib import resultdict,set_nameserver,check_a_record,check_cname_record
     6 
     7 if __name__ == "__main__":
     8     parser = OptionParser()
     9     parser.add_option("-d", "--domain", dest="domain",help="domian to check")
    10     parser.add_option("-s", "--server", dest="server",help="nameserver to check")
    11     (options, args) = parser.parse_args()
    12     try:
    13         checkdomain = options.domain.lower()
    14     except Exception,ex:
    15         checkdomain = options.domain
    16     if checkdomain in [""," ",None,"null"]:
    17         exit(0)
    18     dnsserver = options.server
    19     if dnsserver not in [""," ",None,"null"]:
    20         dnsserver = [dnsserver] if dnsserver.find(",") < 0 else dnsserver.split(",")
    21         set_nameserver(dnsserver)
    22     check_a_record(checkdomain)
    23     check_cname_record(checkdomain)
    24     print resultdict

    要是在windows下使用觉得麻烦,直接打包

    1 #pyinstaller -F dnscheck.py
    2 使用简介:
    3 #dnscheck.exe -d www.baidu.com
    4 #dnscheck.exe -d www.163.com -s 202.106.0.20,114.114.114.114

     百度网盘下载地址:https://pan.baidu.com/s/1jJr2mPo

     下载口令:k4f8

  • 相关阅读:
    Vim学习指南
    frambuffer lcd.c
    工控显示界面
    ubuntu nfs 开发板
    java初学1
    使用多态来实现数据库之间的切换
    Space Shooter 太空射击
    CandyCrush 糖果传奇
    进制转换以及原码、反码、补码
    winform小知识
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/8341146.html
Copyright © 2011-2022 走看看