пятница, 26 декабря 2014 г.

Я прошел недавно Matasano Microcorruption CTF. Очень крутой challenge для тех кто хочет "пощупать" реверсинг для встроенных платформ или проэксплуатировать переполнение буфера в 16-битном микропроцессоре и написать шелкод для него. Но не имеет возможности или не знает с чего начать.

Смысл квеста "ломать" замкИ, которые работают на микроконтроллере MSP430. Все работает в браузере - парни из Matasano Security постарались и написали онлайн отладчик/дизассемблер для MSP430. Всего 19 уровней с возрастающей сложностью. Над последними двумя уровнями придется "поморщить мозг". Очень зачетный квест.

Отладчик в браузере - это очень удобно с одной стороны. Можно проходить квест лежа на диване с планшетом. В то же время отладчик имеет весьма ограниченный набор команд. Через 10 минут неактивности сессия отваливается и все выставленные брейкпоинты исчезают - нужно их заново ставить, что раздражает. К тому же последние уровни содержат много ассемблерного кода. Поэтому браузерный отладчик не очень удобен и хочется полноценного gdb.

Фанат микропроцессора MSP430 и Matasano Microcorruption CTF  написал эмулятор -  https://github.com/cemeyer/msp430-emu-uctf. На гитхабе написано подробно как ставить этот эмулятор и коннектить к нему GDB. В качестве аргумента эмулятору передается romfile.

Выкладываю питон-скрипт который конвертит live memory dump из браузерного отладчика в romfile. Может кому пригодится.


import binascii, sys

def main():
    fINname = sys.argv[1]
    fOUTname = sys.argv[2]
    
    fIN = open(fINname,"rb")
    fOUT = open(fOUTname,"wb")

    bytesWritten = 0

    while True:
        line  = fIN.readline()

        if line == "":
            break
        
        l = line.split(" ")

        a0 = int(l[0][:-1],16)
       
        if l[-1] == "*\r\n":
            line = fIN.readline()
            l = line.split(" ")

            a1 = int(l[0][:-1],16)

            for i in range(a1-a0):
                fOUT.write("\x00")
                bytesWritten += 1
            
        s = binascii.unhexlify("".join(l[3:-3]))
        fOUT.write(s)
        bytesWritten += len(s)

    print "[+] Bytes written",bytesWritten
    fIN.close()
    fOUT.close()

if __name__ == "__main__":
    main()

Posted on пятница, декабря 26, 2014 by 0ang3el

21 comments

вторник, 27 мая 2014 г.

Был спикером на конференции. У нас с Сергеем был доклад на тему безопасности использования генераторов псевдослучайных чисел в приложениях, написанных на языке Java.

Презентацию, код программы JavaCG и python-скрипты ищите на GitHub - https://github.com/votadlos/JavaCG.git

Ссылки на видео, которые мы показывали:

1. Пример использования программы JavaCG - http://www.youtube.com/watch?v=mdOfZMsj4hA

2. Угон пользовательской сессии в Jenkins - http://www.youtube.com/watch?v=BwXhpjiCTyA

3. Раскрытие SSL в JacORB - http://www.youtube.com/watch?v=B3EkrmNWeJs

4. Угон пользовательской сессии в Jetty, запущенном на GNU Classpath -               http://www.youtube.com/watch?v=--ZuBUc2F2Y


Posted on вторник, мая 27, 2014 by 0ang3el

15 comments

четверг, 16 января 2014 г.

Me and my colleague (http://reply-to-all.blogspot.ru/) performed research and figured out vulnerability in Jenkins CI and Hudson CI software. Versions of Jenkins prior to 1.534 and versions of Hudson prior to 3.0.0 are vulnerable as they use Winstone servlet engine in default installation. Winstone servlet engine implements weak algorithm for generating session identifiers. Remote attacker could predict valid session identifiers to hijack user sessions and gain unauthorized access to the application running above Winstone. Valid login and password are not necessary for intruder to perform such attack.

To cope with this issue the solution is to use Jenkins version 1.534 and above, Hudson version 3.0.0 and above which use Jetty by default. Another possible solution is to run application server software that use robust session id generation algorithm like Tomcat or Jetty.

We reported our findings to Jenkins CI community.

Posted on четверг, января 16, 2014 by 0ang3el

46 comments