【Python】HackBack(获取暴力破解服务器密码的IP来源)

1、前言

又在0x00sec上翻到好东东。

https://0x00sec.org/t/python-hackback-updated/882

帖子里的脚本会得到那些暴力服务器密码失败的IP和用户名,并且使用shodan api做一个溯源定位。

#!/usr/bin/python3.4
import re
import urllib.request
import json
log_path = "/var/log/auth.log"
hosts = []
key = "{YOUR_API_KEY}"
#GET FAILED PASSWORD ATTEMPT
def get_host(test):
        for line in text.split(‘\n‘):
                if line.find("Failed password for invalid ") != -1:
                        if get_ip(line) not in hosts:
                                hosts.append(get_ip(line))
        return hosts
#GET USERNAME
def get_username(line):
        username_word = line.split("Failed password for invalid user ")
        username = (username_word[1]).split(" ")
        return username[0]

#LOCATE IP WITH GEOIP
def geoip(host):
        response = urllib.request.urlopen("http://freegeoip.net/json/"+host)
        geoip = response.read().decode("utf-8")
        geoip = json.loads(geoip)
        print("\n[+] Tracking ip {}".format(geoip[‘ip‘]))
        print("-------------------------------")
        print(‘\tCountry : {}\n\ttimezone : {}\n\tlatitude : {}\n\tlongitude : {}‘.format(geoip[‘country_name‘],geoip[‘time_zone‘],geoip[‘latitude‘],geoip[‘longitude‘]))
def passive_recon(host,key):
        url = "https://api.shodan.io/shodan/host/{}?key={}&minify=true".format(host,key)
        try:
                response = urllib.request.urlopen(url)
                result = response.read().decode(‘utf-8‘)
                result = json.loads(result)
                print("[+] Passive Recon using shodan.io")
                print("-------------------------------")
                print("\tPort : {}\n\tOrganisation {}".format(result[‘ports‘],result[‘org‘]))
                for x in range(len(result[‘ports‘])):
                        print("Banner {}".format(result[‘data‘][x][‘data‘]))
        except:
                print("[+] Passive Recon using shodan.io")
                print("-------------------------------")
                print("\tCan‘t retrieve information")
                pass
if __name__ == "__main__":
        with open(log_path, ‘rt‘) as log:
                text = log.read()
get_host(text)
for host in hosts:
        geoip(host)
        passive_recon(host,key)

2、脚本实现的功能

def get_host(test):
        for line in text.split(‘\n‘):
                if line.find("Failed password for invalid ") != -1:
                        if get_ip(line) not in hosts:
                                hosts.append(get_ip(line))
        return hosts

def get_username(line):
        username_word = line.split("Failed password for invalid user ")
        username = (username_word[1]).split(" ")
        return username[0]

这些函数将从auth.log文件中获取测试服务器密码的ip和用户名

使用freegeoip.net来获取ip位置(但是也可以使用shodan.io api),函数只是将json输出解析为一个美化后的文本输出。

def geoip(host):
        response = urllib.request.urlopen("http://freegeoip.net/json/"+host)
        geoip = response.read().decode("utf-8")
        geoip = json.loads(geoip)
        print("\n[+] Tracking ip {}".format(geoip[‘ip‘]))
        print("-------------------------------")
        print(‘\tCountry : {}\n\ttimezone : {}\n\tlatitude : {}\n\tlongitude : {}‘.format(geoip[‘country_name‘],geoip[‘time_zone‘],geoip[‘latitude‘],geoip[‘longitude‘]))

与shodan进行关联的脚本函数如下:

def passive_recon(host,key):
        url = "https://api.shodan.io/shodan/host/{}?key={}&minify=true".format(host,key)
        try:
                response = urllib.request.urlopen(url)
                result = response.read().decode(‘utf-8‘)
                result = json.loads(result)
                print("[+] Passive Recon using shodan.io")
                print("-------------------------------")
                print("\tPort : {}\n\tOrganisation {}".format(result[‘ports‘],result[‘org‘]))
                for x in range(len(result[‘ports‘])):
                        print("Banner {}".format(result[‘data‘][x][‘data‘]))
        #If we don‘t get a 200 response code print ‘Can‘t retrive information
        except:
                print("[+] Passive Recon using shodan.io")
                print("-------------------------------")
                print("\tCan‘t retrieve information")
                pass

要获取关于黑客的信息,只需要运行:

./hackBack.py

原文地址:https://www.cnblogs.com/17bdw/p/8146464.html

时间: 2024-10-17 22:48:08

【Python】HackBack(获取暴力破解服务器密码的IP来源)的相关文章

用fail2ban防止黑客暴力破解服务器密码

简单来介绍一下fail2ban的功能和特性 1.支持大量服务.如sshd,apache,qmail,proftpd,sasl等等 2.支持多种动作.如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(邮件通知)等等. 3.在logpath选项中支持通配符 4.需要Gamin支持(注:Gamin是用于监视文件和目录是否更改的服务工具) 5.需要安装python,iptables,tcp-wrapper,shorewal

Denyhosts 防止暴力破解服务器密码-1

Denyhosts是python语言程序,借用tcp_wrapper程序来进行主机防护.防止暴力破解服务器用户密码. DenyHosts可以阻止试图猜测SSH登录口令,它会分析sshd的日志文件(/var/log/secure),当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的. 1.安装 # cd /usr/local DenyHosts-2.6.tar.gz # tar -zxvf DenyHosts-2.6.tar.gz

Denyhosts 防止SSH暴力破解服务器密码-1

Denyhosts是python语言程序,借用tcp_wrapper程序来进行主机防护.防止暴力破解服务器用户密码. DenyHosts可以阻止试图猜测SSH登录口令,它会分析sshd的日志文件(/var/log/secure),当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的. 1.安装 # cd /usr/local DenyHosts-2.6.tar.gz # tar -zxvf DenyHosts-2.6.tar.gz

获取客户端、服务器、本地IP地址

//获取客户端.服务器.本地IP地址 public static string getIPAddress() { ////本地IP //string address = System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName()).GetValue(2).ToString();//IP4 地址 ////本地电脑名称 //string addname = System.Net.Dns.GetHostName().ToString();

awk , 统计secure.log中 每个破解你密码的ip的出现次数|access.log 中 每个ip地址出现的次数

统计secure.log中 每个破解你密码的ip的出现次数 [[email protected] files]# awk '/Failed password/{h[$(NF-3)]++}END{for(pol in h) print pol,h[pol]}' secure-20161219 |sort -rnk2|head 统计access.log 中 每个ip地址出现的次数 [[email protected] files]# awk '{h[$1]++}END{for(pol in h) p

python暴力破解root密码

环境准备:     1.安装paramiko模块     2.服务器ssh服务开启22号端口             下面请看代码 #!/usr/bin/py #-*- coding: utf-8 -*- import paramiko ssh = paramiko.SSHClient() #实例化类 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #连接时自动回答为yes d = file('/root/a.txt') #字典

利用Python自动生成暴力破解的字典

Python是一款非常强大的语言.用于测试时它非常有效,因此Python越来越受到欢迎. 因此,在此次教程中我将聊一聊如何在Python中生成字典,并将它用于任何你想要的用途. 前提要求 1,Python 2.7(对于Python 3.x的版本基本相同,你只需要做一些微小调整) 2,Peace of mine(作者开的一个玩笑,这是一首歌名) 如果你用virtualenv搭建Python开发环境,请确保已经安装了itertools.因为我们将会用到itertools生成字典.我们将一步一步地演示

防止ssh暴力破解linux密码

网上看到一篇安全方面的文章,常用的网站收藏无法收藏,于是放这里先.具体功能还未测试,请慎用. 下面是博客原文转载,感谢作者辛苦劳动: 服务器在互联网中,每天都有些没事儿干的人在你的机器端口扫来扫去,让管理员非常烦恼.本文描述一个方法,利用本文介绍的脚本结合iptables服务一并使用,用来防止公网计算机通过ssh进行用户口令暴力破解.目前稳重脚本已经在其他项目的实际运营环境中得到验证. 脚本内容: #!/bin/bash # 防SSH密码暴力破解脚本 # 通过分析secure日志文件使用ipta

内网暴力破解telnet密码进行登陆

这里只是一个思路,傻瓜式的方法偶尔也会比较实惠. 有时候,你在网吧,机房使用电脑时,就在内网.一般来说,内网的安全性较差,在那些3389端口大开,没有组策略限制的地儿,我们可以用以下方法来傻瓜式入侵内网的其他机子. 扫描内网网段内开启了3389的机子有哪些,这里我用了nmap,发现了一台主机192.168.72.141和143在线开了3389: 然后打开tscrack,进行暴力破解:当然,这里你需要自己选择密码文本的内容: 一般来说,软件生成比较方便: 3.默认模式为对Administrator