采用词法分析提取域名和IP

采用词法分析提取域名和IP

背景

在分析日志的时候发现有些日志中参数中包含其他的URL,例如:

采用词法分析提取域名和IP

提取请求参数中的URL(xss.ha.ckers.org),再对比威胁情报数据库,如果命中黑名单直接标黑。如果不在黑名单,也不在公司的白名单里可以先做个标记,后续着重分析。

提取URL

关于URL的提取网上有很多文章,大部分都是是使用正则表达式,方法简单但是不太准确。我这里提供一种方法:采用词法分析,提取域名和IP。思路借鉴了这篇文章:https://blog.csdn.net/breaksoftware/article/details/7009209,有兴趣的可以去看看,事实证明跟着大神确实涨姿势。

原文是用C++版本,这里我用python写了一个类似的,供大家参考。

常见的URL分类

采用词法分析提取域名和IP

观察可以见得:IP形式的URL结构最为简单:4个小于255的数字被.分割;domain形式比较复杂,但是它们有共性:都具有顶级域名.com。

定义合法字符:

采用词法分析提取域名和IP

顶级域名列表:

采用词法分析提取域名和IP

域名形式提取:如www.baidu.com。

采用词法分析提取域名和IP

采用词法分析提取域名和IP

IP形式提取:如192.168.1.1。

采用词法分析提取域名和IP

while (i <p>混合形式提取:如1234.com。<br>扫描前半部分1234,符合IP形式的特征,但是发现代码会报异常,所以需要IP处理代码段添加判断:判断后缀是否是顶级域名:</p><p><img src="https://img.php.cn/upload/image/354/879/774/1577246293816213.png" title="1577246293816213.png" alt="0344cd5e302d2497f4bb5bf6063c760.png"></p><p   style="max-width:90%">结果测试</p><p>测试数据:</p><p><img src="https://img.php.cn/upload/image/971/287/440/1577246309478694.png" title="1577246309478694.png" alt="03ae44d8ab2c65074724a79eadbd999.png"></p><p>运行结果:</p><p><img src="https://img.php.cn/upload/image/795/611/773/1577246337103718.png" title="1577246337103718.png" alt="577b7721a4faf9a46454455b9e8b43c.png"></p><p>这只是个初步的版本,如果有bug欢迎大家指正。</p><p   style="max-width:90%">结束语</p><p>以前只顾着闷着头的写代码,忽略了事后的思考和总结。现在尝试着改变一下,一边工作,一边提炼和总结,遇到感觉不错的,尝试写成工具开源出来,与大家共勉。</p><p>代码传送门:</p><p><a href="https://blog.csdn.net/breaksoftware/article/details/7009209" target="_blank">https://blog.csdn.net/breaksoftware/article/details/7009209</a><br></p><p>相关文章教程推荐:<a href="https://blog.csdn.net/breaksoftware/article/details/7009209" target="_blank">https://blog.csdn.net/breaksoftware/article/details/7009209</a></p>

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享