Share

Os dejo una aplicación muy chorra para obtener el estado de tus dockers a través de un bot muy simple de telegram:

 

[code language="python"]
#!/usr/bin/env python
# -*- coding: utf-8 -*-


from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import logging
import os

# Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
 level=logging.INFO)

logger = logging.getLogger(__name__)


def help(bot, update):
 bot.sendMessage(update.message.chat_id, text='Help!')


def stats(bot, update):
 bot.sendMessage(update.message.chat_id, text='ahora lo programo')
 os.system('docker stats --no-stream > /tmp/stats.tmp')

 filesize=os.path.getsize('/tmp/stats.tmp')
 if filesize > 0:
 fd = open('/tmp/stats.tmp')
 string=fd.read()
 bot.sendMessage(update.message.chat_id,text=string)
 fd.close()
 os.system('rm /tmp/stats.tmp')

def error(bot, update, error):
 logger.warn('Update "%s" caused error "%s"' % (update, error))


def main():
 # Create the EventHandler and pass it your bot's token.
 updater = Updater("740925671:tyhejsio2hustqmckopsr567a-F0k23GG9E")

 # Get the dispatcher to register handlers
 dp = updater.dispatcher




 # on different commands - answer in Telegram
 dp.add_handler(CommandHandler("stats", stats))

 # log all errors
 dp.add_error_handler(error)

 # Start the Bot
 updater.start_polling()

 # Run the bot until the you presses Ctrl-C or the process receives SIGINT,
 # SIGTERM or SIGABRT. This should be used most of the time, since
 # start_polling() is non-blocking and will stop the bot gracefully.
 updater.idle()


if __name__ == '__main__':
 main()

[/code]

 

Share

En esta entrada veremos como generar un script en python para interactuar con nuestros servidores vía Telegram:

Instalar las librerías que se necesitan:

pip install future

pip install urllib3

pip install certifi

pip install python-telegram-bot

 

El template sería algo así:

 
#
# Code to interact with your server.
#
import telegram
import sys
import logging
import os


bot = telegram.Bot("API")
#chat_id=_NUMERO_



def log_update(update):
  message = update.message.text.encode('utf-8')
  bot_chat_id = update.message.chat.id
  update_id = update.update_id
  first_name = update.message.from_user.first_name
  last_name = update.message.from_user.last_name
  from_id = update.message.from_user.id

  if logging.getLogger().getEffectiveLevel() == logging.DEBUG:
    logging.debug('Update %d from %s %s (%d) in chat %d received:', update_id,first_name, last_name, from_id, bot_chat_id)
    logging.debug(update)
  else:
    logging.info('Update %d from %s %s (%d) in chat %d: Received "%s"', update_id,first_name, last_name, from_id, bot_chat_id, message)


try:
    LAST_UPDATE_ID = bot.getUpdates()[-1].update_id
except IndexError:
    LAST_UPDATE_ID = None

while(True):


    for update in bot.getUpdates(offset=LAST_UPDATE_ID, timeout=30):
      bot_chat_id = update.message.chat.id
      message = update.message.text.encode('utf-8')
      update_id = update.update_id
      log_update(update)
      if chat_id >= 0 and chat_id != bot_chat_id:
        logging.warning('Unauthorized chat_id %d found. Update ignored.', bot_chat_id)
        continue

#command help
      if '/help' == message:
        status = "/GetFile - Get a file.\n/ExecCommand - Exec a pre set command.\n/OtherCommands - Send a Message"
        bot.sendMessage(chat_id = bot_chat_id, text=status, parse_mode=telegram.ParseMode.MARKDOWN)

#command NewPasswordsFile

      elif '/GetFile' == message:
        fd=open('/path/to/file.txt','r')
        bot.sendDocument(chat_id=bot_chat_id, document=fd)
        fd.close()

      elif '/ExecCommand' == message:
        os.system('echo command to exec > /path/to/file')

      elif '/OtherCommands' == message:
        bot.sendMessage(chat_id=bot_chat_id,text='Ideas are welcome :P, use /Suggest idea to submit crazy features.')

      else:
        #bot.sendMessage(chat_id=bot_chat_id,text='Welcome to My bot. Accepted commands:\n\n/help - Info aobut commands.')
        os.system('echo x > /dev/null')

      LAST_UPDATE_ID = update_id + 1
   

A disfrutarlo 🙂

Share

I. Creando bot de telegram

Hay múltiples posts donde este proceso está bastante bien documentado pero creo que es útil tener todos los pasos aquí. Y como se trata de facilitar el proceso, describo el proceos yendo al grano.

I.a Desde el buscador de Telegram localizad a @BotFather, un bot para controlarlos a todos.

BotFather para gestionar Bots en Telegram

BotFather permite gestionar Bots en Telegram

I.b Comenzamos a interacturar con @BotFather con el comando /start

El comando /start te permite hablar con BotFather

El comando /start te permite hablar con BotFather

I.c Usamos el comando /newbot para crear un nuevo bot

Elige nombre para el bot y a continuación el nombre de usuario (éste último debe terminar en ‘bot’, ejemplo Scada_bot)

Si todo va bien, obtendremos nuestro token para interactuar con la API de Telegram

Obteniendo un Token para interactuar con la API HTTP de Telegram

Obteniendo un Token para interactuar con la API HTTP de Telegram

Tan sencillo como esto! Ya tienes un bot en telegran y su token para interacturar con la API HTTP.

Share

Dan sudaba, tenía el pulso ligeramente acelerado, y eso no era bueno. Necesito del 150% de mi concentración para salir de esta, y los nervios no son una ayuda., – pensaba Dan.

T  va a ir a por mi, eso lo se. La estrategia ha de ser sólida, si quieres seguir en este negocio. – se repetía mientras caminaba con paso firme por los lúgubres pasillos de la corporación.

El caso se llama “Hacking Team”.

Malditos pordioseros, como una panda de 40 malnacidos van a poder ser capaces de acabar conmigo.-  se lamentaba Dan.

 

La sala estaba cargada. T fumaba un habano. Le daba igual que estuviera prohibido. En si T era la representación de la ilegalidad encubierta.

400 Gb de datos. – Bramó T.

Dan sabía exactamente a que refería y las consecuencias de lo que entre líneas T le estaba diciendo.

He leído el informe y aún no acabo de entender. Por favor, puedes explicamelo desde el principio? y no escatimes en detalles.

 

El objetivo era Petro Arguetes, Secretario de Defensa. Nuestro cliente había identificado indicios de actividades económicas no muy lícitas y quería ponerle un cable para asegurarnos de que solo estuviera preocupado por recibir su “sobre” y no por nada más serio.

Era un objetivo complicado, la seguridad era extrema tanto en su perfil directo como en su entorno de confianza.

Por ello descartamos el acceso a través de los mecanismos habituales. A Dan estas maneras fáciles de hacer el trabajo le ponían nervioso. Era evidente que le iba la marcha, pero cuando la fiesta se descontrolaba, como era en aquel momento, la cosa ya no le hacía tanta gracia. El caso es que no habría ni infecciones a través de un fishing por documento word malicioso ni típicos acceso a través de su Wifi personal. Este era un trabajo de los interesantes.

 

Establecimos un perímetro de vigilancia por si fuera factible la sustracción de un elemento informático personal, pero en todo momento estaba acompañado y custodiado por al menos dos guardaespaldas, y te puedo asegurar que eran de los buenos, uno activo, y otro pasivo camuflado.

Las escuchas remotas no funcionaban, tenía incluso los cristales de su despacho apantallados para evitar la captura de las vibraciones por láser remoto.

La cosa se ponía complicada, vencía el plazo marcado y no teníamos nada, y eso no le gustaba a Dan. No era de los que pierden.

Así que decidí arriesgar un poco tirando de la técnica de trusted zones.

Si el CNI monitoriza todos sus altos cargos, es una vía de entrada quizás menos arriesgada que una intrusión directa.

Obtuvimos sin mucho esfuerza la lista de empresas de seguridad privada que tenía relación con el CNI, y seleccionamos alguna que ya tuviéramos conocimiento de su infraestructura de seguridad.

La seleccionada fue Hacking Team, una empresa Italiana conocida por prestar servicio ofensivos de seguridad a grupos gubernamentales y organizaciones totalitarias. El target era mucho más sencillo que nuestro objetivo.

 

La estrategia inicial fué un fiasco. Es de esas situaciones en las que todo se alinea en tu contra.

Entrada a través de perímetro, utilizando un 0Day en su servidor VPN. Resulto ser un honeypot..

fuimos detectados inmediatamente. Todos sus ojos se pusieron sobre nuestras cabezas y tras 2 horas de estar saltando de sistema en sistema vimos algo que nos llamó la atención. Una de las maquinas previamente obtenidas tenia una direccion MAC que me sonaba mucho. Tirando de nuestras bases de datos de conocimiento, resultó que era una dirección utilizada típicamente por software de sandbox. Estábamos en un sistema totalmente monitorizado y controlado. Nos estaban observando como a vulgares hormigas!.

 

Salimos por pies, borramos todo rastro y nos esfumamos. Sabes que somos buenos en hacer eso. Lo hemos hecho miles de veces, siempre con éxito.

Casi siempre. –  corrigió T.

El segundo vector a atacar fué el acceso a través de la MPLs. La idea era acceder a la red de circuitos virtuales del proveedor de comunicaciones que en este caso era Telefónica con su solución Macrolan. Este es un acceso que no elimina todos los riesgos, pero al haber tenido un incidente previo, nos da la oportunidad de sondear sus comunicaciones y correos internos con tremenda facilidad de tal manera que si la cosa se pone fea, rápidamente lo averiguaremos y podremos reaccionar con margen.

Accedimos al router de Telefonica. Nuestro contacto en Teléfonica sabía que la operación era importante ya que duplicó su cuota. Eso me hizo alertar, pero decidí continuar con la operación.

Entramos en su Wan, y pusimo sondas de analisis automatico de comunicaciones.

Interceptamos varios accesos privilegiados vía man in the middle y rápidamente tuvimos acceso a sus repos principales.

El resto fué coser y cantar, acceder a la base de datos de targets, tomar los credenciales de nuestro objetivo y utilizar sus propias herramientas de “control” para sacar la información que nuestro cliente nos habia pedido.

En ese momento lo detectamos. Un correo entre nuestro contacto en Telefónica y alguien en HackingTeam. Ellos no sabían que los habíamos identificado, y la información era clara, nos tenían bien cogidos.

Así que borramos todo, y salimos por pies.

Si, ya se que eso lo sabéis hacer bien. – se adelantó sarcásticamente T.

 

y eso es todo? – Inquirió T con impaciencia.

Usted sabe que no. – Increpó Dan. Tenia varias opciones,  nuestro contacto habia pasado toda la información. Estábamos comprometidos no solo a nivel de unidad, probablemente a nivel de empresa. No tenía más opciones que la eliminación.

Dejamos una bomba lógica, que subiría el contenido de sus departamentales principales a github y torrent y la programamos convenientemente.

Dan, ¿Es consciente de que eso viola completamente el acuerdo vigente del sector? – preguntó directamente T.

Señor, tanto usted como ya, de lo que sí somos conscientes es de que ese acuerdo es una completa patraña. Además eran ellos o nosotros.

 

El silencio mientras esperaba la respuesta de T se hizo casi insoportable. Dan, era consciente que su trabajo, su carrera, y probablemente su vida pendían de un fino hilo.

La cosa era sencilla, en esas dos horas de reunión, T le habia dicho claramente que no habia seguido las reglas y habia comprometido la seguridad de la compañía con sus imprudentes decisiones, mientras que Dan habia argumentado en contra alegando mala suerte y un sentido de la lealtad extremo. Si, la cosa estaba jodida. Toda su brillantez en el trabajo de campo, era adecuadamente contrarrestada con una completa incapacidad política.

Tras la interminable espera, T le dijo casi con pena, “Puedes marcharte Dan”.

Fué como si una catarata de alivio se volcara de golpe sobre sus hombros. Increiblemente se habia librado de esta!

 

Salió del despacho de T, con una sensación de placer, mezclado con un ligerísimo cargo de conciencia por haber destrozado a la competencia, y por haber puesto en la misma situación que él acababa de vivir a 40 empleados de HackedTeam.

“Son ellos o nosotros, Dan. Son ellos o nosotros”

Share

Mis saludos a todos los lectores de este blog.

Me presento, soy Incauto, facultad que me ha permitido meterme en multitud de problemas, pero también soy pertinaz, para tratar de solucionarlos (en la mayor parte de las veces). El resto de facultades, las estoy ya perdiendo, como los viejos decanos….

Me gustó este blog, por la tremenda ida de olla de los primeros posts, que demuestran que se permite todo, y aprovechando el anonimato que ofrecen sus creadores, sean quienes sean, me decidí a escribir unas pocas líneas, y si la cosa va bien, acabarán siendo muchas.

En este primer post, no buscaré ningún tema candente, y simplemente aprovechare para emitir mi opinión, una opinión particular, fraguada en la observación triste de que lo técnico está degradado a un segundo plano, y que lo político prima con mucho sobre lo primero.

Me hace mucha gracia que las empresas se gasten cantidades astronómicas en una herramientica de seguridad que además tiene las siglas mu guays de APT, y con esto se consideran a salvo? dios, la vida del Hacker es tan fácil!

Si rascas un poquito te das cuenta que la organización jerárquica de la empresa es una herramienta más poderos para afectar al esquema de seguridad que cualquier super herramienta que queramos implantar. Pongamos un ejemplo:

El área de producción de uranio empobrecido situado en el norte de suruega, y que casualmente fue uno de las primeras sedes de la compañía. Que a su vez colocaron aquí a Antonio Bermudez, si Bermudez, que casualidad, se apellida como el fundador de la compañía, pues esa sede se pasa por el forro las directrices de gobierno de seguridad. Por qué? porque tiene más poder que otras áreas de la compañía, por supuesto.

En otra punta de la empresa, Julián Mentirez, directivo de tremenda influencia en la compañía, está liderando un proyecto de alta transformación de los procesos de negocio, de alto impacto y lo más importante, al menos para él, de alta visibilidad, que si todo va bien, le ayudará a hacerse con el control de esa tan ansiada promoción. La gente no acaba de entender por qué en este proyecto, se han dejado de lado las “incomodas” recomendaciones de seguridad, que le decían que no desplegara esa mierda de aplicación que no tiene ni cifrado del proceso de autenticación, y que puede hacer retrasar el despliegue de la herramienta.

Pero claro esto también pasa en el área de reciclado de residuos orgánicos, que los pobres no tienen ni para limpiarse el culo cuando van al baño, y eso que es su «core de negocio», pero claro en ese caso, tampoco actualizan su Peoplesoft, que data del 2008 (si, creedme aún existen). Bueno pues en este caso, seguridad tampoco puede hacer mucho.

Son tres ejemplo de las cantidades de mierdas que pasan en las empresas de este país que me inclinan a pensar en la lógica de un ataque evidente. Si alguien quiere entrar o hacer el mal, con que se centre en uno u otro de estos sitios mencionados es suficiente, y el antiAPT, que ni ve lo que pasa en la zona de residuos orgánicos, se va a enterar.

Y yo me pregunto, que pasaría si esta hipotética empresa se gastara ese pastizal en adaptar internamente su capa de gobierno…. realmente esto podría hacerse? hay dinero en el mundo para romper los silos, y nichos de poder?

Es como preguntarse si algún día la política trabajará para el pueblo…

Soy Incauto, pero soy pertinaz