La froma mas sencilla de permanecer en un sistema owneado es mediante las herramientas de acceso remoto del propio sistema operativo, sí estoy hablando de SSH. Para detectar este tipo de intrusiones vamos a programar un script que genere un hash MD5 del fichero de authorized keys y lo compare con un valor calculado anteriormente, si estos valores no coinciden nos avisará vía telegram.
vi /root/sshKeys.py
import requests
import hashlib
import os.path
def sendMessage(msg):
apiKey = "XXXXXXXXXXXXXXXXXX"
userId = "YYYYY"
data = {"chat_id":userId,"text":msg}
url = "https://api.telegram.org/bot{}/sendMessage".format(apiKey)
r = requests.post(url,json=data)
if os.path.exists('/home/kr0m/.ssh/authorized_keys'):
kr0mHash = hashlib.md5(open('/home/kr0m/.ssh/authorized_keys','rb').read()).hexdigest()
#print 'kr0mHash: ' + str(kr0mHash)
if kr0mHash != 'ZZZZZZZZZZZZZZZZZZZZZZZZZZ':
sendMessage('Warning: Kr0m authorizedkeys modified!!')
else:
sendMessage('Warning: Kr0m authorizedkeys deleted!!')
if os.path.exists('/root/.ssh/authorized_keys'):
rootHash = hashlib.md5(open('/root/.ssh/authorized_keys','rb').read()).hexdigest()
#print 'rootHash: ' + str(rootHash)
sendMessage('Warning: Root authorizedkeys created!!')
Crontabeamos el script para que se haga la comprobación cada 5m:
*/5 * * * * python /root/sshKeys.py >/dev/null 2>&1