应急分析异常通信的小思路和自己写的小工具(查询CNAME和A记录)
一、背景:
在很多时候,应急会发现。卧槽,异常连接,只有一个域名或者IP。
怎么办?上防火墙看记录,查域名对应的记录累成狗,自己把之前的代码改了改,写了个小工具,一条命令查询DNS相关记录,也可以指定内网服务器查询。
二、分析思路:
1、首先排查一下流量通信情况,采集远端IP、域名、及其对应的解析记录。
2、国内推荐使用我们360,以及threatbook、还有老东家tianjipartner的的威胁情报源分析是否有关联威胁,如果有采取第一波止损措施,马上下策略隔绝断网。重要的机器可以直接先断了网或者会话。(大陆之外推荐使用passivetotal和virustotal)
3、如果没有,上主机查进程,可以写脚本监控。查看通信端口对应进程:
#sudo netstat -anop | grep a.b.c.d 查到pid
#sudo ps -ef | grep pid确定进程
4、疑似进程取样kill,正常进程先不要kill ,进一步可以做深层次的源代码分析等等。
三、使用的dnspythonlib库:
昨晚临时写的,把之前的代码改了改,其实可以好好重写一番,里面有部分实现逻辑其实挺垃圾的,求轻喷。
# -*- coding:utf-8 -*- #import lib files
import sys
import dns.resolver #global varites defines
checker = dns.resolver.Resolver()
nameserverlist = ["202.106.0.20","114.114.114.114","8.8.8.8","8.8.4.4"]
resultdict = {} #global functions defines
def set_nameserver(nameserver):
global nameserverlist
if isinstance(nameserver,list):
nameserverlist = nameserver
return 0
else:
return 0 def check_a_record(domain):
global checker
global nameseverlist
global resultdict
alist = []
for server in nameserverlist:
try:
checker.nameservers = [server]
record = checker.query(domain,"A")
except Exception,ex:
continue
for iprecord in record:
alist.append({"nameserver":server,"arecord":iprecord})
resultdict["A-RECORD"] = alist def check_cname_record(domain):
global checker
global nameserverlist
global resultdict
clist = []
for server in nameserverlist:
try:
record = checker.query(domain,"A")
except Exception,ex:
continue
for value in record.response.answer:
for item in value.items:
try:
if isinstance(item,dns.rdtypes.ANY.CNAME.CNAME):
clist.append({"nameserver":server,"cname":str(item)})
except Exception,ex:
continue
resultdict["CNAME"] = clist if __name__ == "__main__":
testdomain = sys.argv[1]
check_a_record(testdomain)
check_cname_record(testdomain)
print resultdict
# -*- coding:utf-8 -*- #import lib files
from optparse import OptionParser
from apilib import resultdict,set_nameserver,check_a_record,check_cname_record if __name__ == "__main__":
parser = OptionParser()
parser.add_option("-d", "--domain", dest="domain",help="domian to check")
parser.add_option("-s", "--server", dest="server",help="nameserver to check")
(options, args) = parser.parse_args()
try:
checkdomain = options.domain.lower()
except Exception,ex:
checkdomain = options.domain
if checkdomain in [""," ",None,"null"]:
exit(0)
dnsserver = options.server
if dnsserver not in [""," ",None,"null"]:
dnsserver = [dnsserver] if dnsserver.find(",") < 0 else dnsserver.split(",")
set_nameserver(dnsserver)
check_a_record(checkdomain)
check_cname_record(checkdomain)
print resultdict
要是在windows下使用觉得麻烦,直接打包
#pyinstaller -F dnscheck.py
使用简介:
#dnscheck.exe -d www.baidu.com
#dnscheck.exe -d www..com -s 202.106.0.20,114.114.114.114
百度网盘下载地址:https://pan.baidu.com/s/1jJr2mPo
下载口令:k4f8
应急分析异常通信的小思路和自己写的小工具(查询CNAME和A记录)的更多相关文章
- [No00006C]文件名复制,归档小助手【自己写的小工具,希望能帮助大家】
特别补充一句:软件可以一次性复制多个文件的文件名. Windows 中的复制文件名实在是有些不方便 ,需要点右键 "重命名"之后再点右键选择"复制"才可复制文件 ...
- 6.【应急响应】Linux入侵排查思路
0x01 入侵排查思路 一.账号安全 基本使用: 1.用户信息文件/etc/passwd root:x:0:0:root:/root:/bin/bash account:password:UID:GI ...
- Debug Diagnostics Tool创建.Net异常转储并用Windbg分析异常
当我们要在IIS PRD环境下分析异常,并且对问题毫无头绪,又没有权限直接上打Log的代码.这个时候就是Debug Diagnostics Tool & Windbg大显神威的时候了. Deb ...
- 过WAF的小思路
过WAF的小思路 前言 最近在学习了一波CMS漏洞,尝试看了几个菠菜站,有宝塔WAF...向WHOAMI大佬取经回来后,绕过了一个WAF.觉得是时候要认真总结一下了:) 前期的过程 菠菜采用的是Thi ...
- 鸿蒙内核源码分析(异常接管篇) | 社会很单纯 , 复杂的是人 | 百篇博客分析OpenHarmony源码 | v39.03
百篇博客系列篇.本篇为: v39.xx 鸿蒙内核源码分析(异常接管篇) | 社会很单纯,复杂的是人 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU ...
- 像VUE一样写微信小程序-深入研究wepy框架
像VUE一样写微信小程序-深入研究wepy框架 微信小程序自发布到如今已经有半年多的时间了,凭借微信平台的强大影响力,越来越多企业加入小程序开发. 小程序于M页比相比,有以下优势: 1.小程序拥有更多 ...
- 微信小程序全选,微信小程序checkbox,微信小程序购物车
微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下. 摘要: 加减商品数量,汇总价格,全选与全不选 设计思路: 一.从网络上传入以下Json数据格式的数组 1.标题titl ...
- 小程序大智慧,sqlserver 注释提取工具
原文:小程序大智慧,sqlserver 注释提取工具 开篇背景 我习惯在写表的创建脚本时将注释直接写在脚本里,比如 /*账套*/ CREATE TABLE [dbo].[AccountingBook] ...
- 小程序开发过程中常见问题[微信小程序、支付宝小程序]
目录 一.样式中如何使用background-image呢? 二.使用自适应单位rpx类似于rem,布局尽量使用flex布局 三.万能的{{双大括号,用于在模版中输出变量 四.你想要的基础组件和API ...
随机推荐
- Cocos2d-x3.0 载入Cocostudio的UI后,button无法点击的解决方法
原帖地址:http://blog.csdn.net/musicvs/article/details/28390617 近期发现不少朋友都遇到这个问题,用Cocostudio的UI编辑器创建好UI后,在 ...
- Json序列化之.NET开源类库Newtonsoft.Json
上代码: using System; using System.Collections; using System.Collections.Generic; using System.IO; usin ...
- CSS之千变万化的Div
厂址:http://www.cnblogs.com/yunfeifei/p/4671930.html 一.div和css3在一起 .box1 { width: 100px; height: 100px ...
- NHibernate中ISession的Flush
不知道在执行Insert或者Delete,update之后为什么要调用Flush(),后来看了http://www.cnblogs.com/lyj/archive/2008/10/17/1313612 ...
- hibernate 中集合的保存
一.开发流程 1)引入jar包,注意引入数据库驱动包 2)创建数据库表 //创建用户表 CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, un ...
- cadence orcad查找技巧
本文讲述了如何在OrCAD原理图中根据元件位号或者元件值快速查找元件的两种方法. 方法一:在.obj页面的“File”标签下查找元件. 方法二:在.obj页面的“Hierarchy”标签下查找元件. ...
- Java连接postgresql数据库
1.下载驱动jar下载地址:https://jdbc.postgresql.org/download.html 2.导入jar包新建lib文件夹,将下载的jar驱动包拖到文件夹中.将jar驱动包添加到 ...
- jquery 获取各种高宽
获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 $ ...
- js 内置对象常用方法
1 内容概述 js包含一些内置对象,如Array,Function,String等,这些是基本的,常用的js类,所以了解它们十分重要:把他们的方法,用例子和文字简要的记录下来,方便今后参看. 2 Ar ...
- openvpn 移植之buildroot添加相关选项
openvpn 移植第一步,在buildroot 内添加 openssl ,openvpn , 另外还有一个 RSA 的支持,我不确定这个需要程度如何,但是也添加进去了. buildroot 添加相关 ...