Archive for the ‘Verktyg’ Category

När OpenSSL är upprörd

Monday, July 14th, 2008

(Rättelse: Jakob påpekar att det är BIND som är upprörd, inte OpenSSL. Tack!)

Detta kom på maillistan FreeBSD Security. OpenSSL är ganska tydlig när det gäller användandet av osäkra versioner av OpenSSL-biblioteketet. Någon försökte uppdatera dns/bin95 på ett system med FreeBSD 6.3-STABLE och fick följande respons:


> config.status: creating include/isc/platform.h
> config.status: creating config.h
> WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
> WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
> WARNING WARNING
> WARNING Your OpenSSL crypto library may be vulnerable to WARNING
> WARNING one or more of the the following known security WARNING
> WARNING flaws: WARNING
> WARNING WARNING
> WARNING CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and WARNING
> WARNING CVE-2006-2940. WARNING
> WARNING WARNING
> WARNING It is recommended that you upgrade to OpenSSL WARNING
> WARNING version 0.9.8d/0.9.7l (or greater). WARNING
> WARNING WARNING
> WARNING You can disable this warning by specifying: WARNING
> WARNING WARNING
> WARNING --disable-openssl-version-check WARNING
> WARNING WARNING
> WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
> WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
> ===> Building for bind95-base-9.5.0.1

(Många varningar blir det.)

Borde vara svårt att missa att det är dags att uppdatera OpenSSL…

Guido van Rossum om säkerheten i Google App Engine

Wednesday, July 2nd, 2008

Sprang på en intervju med Guido van Rossum, skaparen av Python och BDFH (Benevolent Dictator For Life) om säkerheten i Google App Engine.

Guido van Rossum.
Guido van Rossum en glad och vänlig diktator.

Tyvärr är intervjun kanske den mest intressanta då Guido mest försöker undvika prata om specifika saker som gjorts för att säkra upp Google App Engine. Det blir mycket svar av den här typen:

cloudsecurity.org: Please provide some examples of how those principles played out in terms of the current implementation?

GvR: Sorry, we don’t divulge such information.

cloudsecurity.org: How do you contain an attacker that exploits bugs in App Engine from exploiting the underlying OS and potentially interfering with other users processes or attacking backend systems?

GvR: You are correct that there are strong measures in place, but I’m not at liberty to discuss details.

Det finns dock en del annat i intervjun som gör att den är läsvärd i alla fall.

En person som varit delaktig i säkerhetsarbetet med Google App Engine är App Engine. Det finns en sida med videopresentation och referat där han berättar mer.

Nya gränssnitt till verktyg

Sunday, June 1st, 2008

Lite sena söndagsdumheter. Några människor med på tok för mycket fritid och bra krativitet har gjort en mashup av gamla spel och sysadminverktyg. Resultatet är…

Wolfotrack
Gamla Wolfenstein 3D möter Netfilter:

Wolfotrack

Övervaka trafiken och kontrollera (skjut ner) sessioner du inte gillar. Det finns en film på Youtube som visar Wolfotrack:

En ypperlig kommentar om Wolfotrack:

“With wolfotrack, I look forward new connections. Banning p2p has never been so fun !”
— Pascal Terjan, Mandriva kernel team

Nu är inte Wolfotrack den enda mashup:en av det här slaget. Möt…

Sysadmindoom
(Ett ganska gammalt hack).

Sysadmindoom

I Sysadmindoom är processer mappade till figurer i Doom, och som sysadmin kan du som spelare välja vad du vill göra - exempelvis gör processen kort… Enligt Dennis Chao, skaparen av Sysadmindoom finns det några fördelar med den här typen av GUI:

* The machine load is immediately apparent to the player, who can see how crowded a room is. The player can eyeball many machines from a high vantage point and go down to a room that needs maintenance.

* There is a nice continuum for resource allocation. A user may choose to simply wound processes rather than killing them, which could naturally be translated to renicing them.

* A new sysadmin can be given less power by providing her with a smaller weapon. A rank beginner may not be given a weapon at all and be forced to attack processes with her bare hands. It would take a foolhardy player to attack a room full of monsters, just as a newbie should not kill a bunch of important processes. A more experienced sysadmin would have time to stop a newbie who is trying to kill the wrong process. The real work could be left to those with the big guns. The truly great sysadmins could have BFGs.

* Really crowded systems would regulate their own load because monsters occasionally kill each other. Once the population in a room goes down, the monsters will stop attacking each other.

* Drastic action takes work. In a command line interface, all actions take approximately the same amount of effort. One can ls just as easily as rm -rf *, which is kind of unfortunate. In a cyberspace environment, the players are not omnipotent, so performing large actions takes time and effort.

* Important processes can be instantiated as more powerful monsters. They can then defend themselves against inexperienced sysadmins.

* Sysadmins could cooperate or compete. Doom is a natural environment for player-to-player interactions. A team of players can cooperate to take care of a heavily-loaded system, or they can even take out rogue sysadmins who are killing the wrong processes.

Jag är inte säker på om detta verkligen är framtidens gränssnitt, och kanske är inte Star Treks pastellfärgade touchpaneler det heller.

Star Trek

Men det är intressant att det sker (mer eller mindre seriösa) försök att hitta sätt att illustrera nätverkstrafik, processer etc… Och så får man en chans att spela ett gammalt skjutaspel igen.

Unbound - en ny DNS-server

Saturday, May 31st, 2008

I förra veckan släpptes version 1.0.0 av en ny DNS-server kallad Unbound.

Syftet med Ubound är att erbjuda ett alternativ till BIND. Unbound är modulärt uppbyggd och ger bland annat stöd för DNSSEC. Några av de grundläggande funktionerna är:

  • Dubbla stackar för IPv4 och IPv6
  • DNSSEC-validering: NSEC, NSEC3, förberedd för SHA-256

Grunden till Unbound var en prototyp i Java utvecklad av jakob Schlyter på svenska Kirei och Roy Arends på Nominet.

Koden till Unbound är BSD-licensierad och det finns webbaccess till SVN-repon.

På Unbounds sida finns en hel del dokumentation och även ett par presentationer som beskriver Unbound, bland annat den här presentationen från RIPE56.

Hacka Google med Google App Engine

Thursday, April 10th, 2008

För några dagar sedan presenterade Google sin nya tjänst App Engine.

App Engine

Med App Engine erbjuder Google en miljö och utrymme för att köra applikationer hos Google. Google beskriver applikationsmiljön på följande sätt:

The Application Environment
Google App Engine makes it easy to build an application that runs reliably, even under heavy load and with large amounts of data. The environment includes the following features:

* dynamic web serving, with full support for common web technologies

* persistent storage with queries, sorting and transactions

* automatic scaling and load balancing

* APIs for authenticating users and sending email using Google Accounts

* a fully featured local development environment that simulates Google App Engine on your computer

Google App Engine applications are implemented using the Python programming language. The runtime environment includes the full Python language and most of the Python standard library.

Although Python is currently the only language supported by Google App Engine, we look forward to supporting more languages in the future.

The Sandbox
Applications run in a secure environment that provides limited access to the underlying operating system. These limitations allow App Engine to distribute web requests for the application across multiple servers, and start and stop servers to meet traffic demands. The sandbox isolates your application in its own secure, reliable environment that is independent of the hardware, operating system and physical location of the web server.

Examples of the limitations of the secure sandbox environment include:

* An application can only access other computers on the Internet through the provided URL fetch and email services and APIs. Other computers can only connect to the application by making HTTP (or HTTPS) requests on the standard ports.

* An application cannot write to the file system. An app can read files, but only files uploaded with the application code. The app must use the App Engine datastore for all data that persists between requests.

* Application code only runs in response to a web request, and must return response data within a few seconds. A request handler cannot spawn a sub-process or execute code after the response has been sent.

Google beskriver även Pythonmiljön närmare:

The Python runtime environment uses Python version 2.5.2.

The environment includes the Python standard library. Of course, calling a library method that violates a sandbox restriction, such as attempting to open a socket or write to a file, will not succeed. For convenience, several modules in the standard library whose core features are not supported by the runtime environment have been disabled, and code that imports them will raise an error.

Application code must be written exclusively in Python. Code with extensions written in C is not supported.

The Python environment provides rich Python APIs for the datastore, Google Accounts, URL fetch and email services. App Engine also provides a simple Python web application framework called webapp to make it easy to start building applications.

For convenience, App Engine also includes the Django web application framework, version 0.96.1. Note that the App Engine datastore is not a relational database, which is required by some Django components. Some components, such as the Django template engine, work as documented, while others require a bit more effort. See the Articles section for tips on using Django with App Engine.

You can upload other third-party libraries with your application, as long as they are implemented in pure Python and do not require any unsupported standard library modules.

Det ser alltså ut som att Google lagt ner mycket arbete på att se till att App Engine-applikationer exekverar i en säker miljö som inte hotar andra applikationer eller Googles egna system. Det har nu inte hindrat folk att försöka. Tvärt om, att döma av maillistor som Dailydave har rätt många börjat stampa på Pythonmiljön för att se om det går att slå hål på sandlådan.

En av de första applikationer som dykt upp i App Engine är ett interaktivt Python-skal. Och den applikationen använts för att undersöka vad som går att göra, bland annat försök att komma åt passwd-filer, och på andra sätt titta och peta i Pythonmiljön och det underliggande systemet. En hel del försök har dock slutat i det här meddelandet:

This Google App Engine application is temporarily over its serving
quota. Please try again later.

Jag satt och testade lite själv för att se hur mycket av Pythons standardbibliotek man får med:

Google Apphosting/1.0
Python 2.5.2 (r252:60911, Mar 12 2008, 14:07:58)
[GCC 4.1.0]

>>> import this
>>> import os
>>> os.path
(module ‘posixpath’ from ‘/base/python_dist/lib/python2.5/posixpath.py’)

(Jag har ändrat syntaxen från responsen i skalet då hakparanteserna fastnade i Wordpress…)

OS-modulen finns med, och det går uppenbarligen att titta runt i sandlådans struktur. Men Pythons påskägg “this” har Google inte plockat med…

Vi får se om/när någon lyckas slå hål på App Engine, om Google lyckats rensa ut alla accesser till underliggande systemet eller ej. Google har ju en bra grundförutsättning i och med att Guido van Rossum arbetar på Google.
Guido

Är det någon som borde kunna ha bra koll på hur man bygger om Python är det BDFL.

Pythongeneratorer och RC4

Monday, April 7th, 2008

Ett litet erkännande: Jag gillar programspråket Python.

Jag började använda Python så smått för några år sedan, och sedan dess har användningen bara ökat. Jag använder i dag Python bland annat till att bygga program som genererar parametriserade hårdvarubeskrivningar (i Verilog eller VHDL), exempelvis av krypton.

Ofta har jag även ett Pythonskal igång i ett terminalfönster och använder den som en miniräknare, genererar små sekvenser, testhackar m.m. Jag upplever att Python har gjort att mina konstruktioner inte bara är mycket bättre, utan att jag arbetar mer effektivt och är mer produktiv.

Några av de saker jag gillar med Python är dess objektorientering, att det är lätt att komma igång och att det känns som att det finns en organiserad tanke och struktur hur kommandon etc är uppbyggda. Det funkar som jag tror att det gör. Men en av de viktigaste aspekterna är (anser jag) att programmen blir läsbara.

Jag kan läsa program jag skrev för flera veckor sedan och fatta vad det gör och jag kan läsa andras kod. (I det här läget brukar jag peka på Trac och dess kod som exempel på hur snygg Pythonkod kan vara. Trac är för övrigt en annan sak jag gillar.)

Samtidigt anser jag mig fortfarande mycket av en Python-novis. Jag använder få av språkets många funktioner, men det är inget problem utan med de kunskaper jag har i dag kan jag snabbt och enkelt göra det jag vill. Sedan är det bara kul att lära sig nya aspekter av språket som gör mig än mer effektiv.

I morse satte jag mig ned och testade generatorer (generators), dvs funktioner som kan fungera som en tillståndsmaskin, eller varför inte som uppdateringsfunktionen i ett strömkrypto.

När jag ändå är igång och erkänner en massa saker kan jag väl erkänna att jag gillar strömkryptot RC4. Ja, det har sina vårtor, speciellt i vissa tillämpningar. Men jag vet få relativt bra krypton som är så enkla att förstå och där man lätt kommer ihåg algoritmen som RC4 (försök att memorera AES-algoritmen).

En annan fördel med RC4 är att RC4 går att köra för hand med papper och penna om så krävs. Och med en nyckel som skalar till 4096 bitar, om man tar hänsyn till FMS-attacken (och kastar bort säg 4096 bytes från strömmen) är det fortfarande ett rätt säkert krypto.

Därför valde jag i morse att implementera RC4 som en Pythongenerator. Själva generatordelen av koden ser ut så här:

def rc4(key):
# RC4 stream generation. The while loop will yield between
# function calls and return the latest key stream value.
ipoint = 0
jpoint = 0
while(True):
ipoint = (ipoint + 1) % 256
idata = state_array[ipoint]

jpoint = (jpoint + idata) % 256
jdata = state_array[jpoint]

state_array[ipoint] = jdata
state_array[jpoint] = idata

kpoint = (idata + jdata) % 256
kdata = state_array[kpoint]

yield(kdata)

(Ja, koden går att dra ihop och bla går swap att göra på ett mer kompakt sätt…)

Notera satsen yield. Detta kommando beter sig som en vanlig return-sats, men skillnaden är att tillståndet hos funktionen bevaras, och vid nästa anrop fortsätter exekveringen efter yield-satsen, dvs nästa varv i while()-satsen.

För att använda en generator skapar man en referens till funktionen genom att göra en tilldelning. Men eftersom funktionen innehåller en yield-sats och därmed är en generator kommer Python att skapa ett objekt (allt i ett Pythonprogtam är ju objekt) med en next()-metod. Och det är via den vi sedan kör vår generator:

# Create an RC4 generator initialized with a key.
my_key = “Kryptoblog”
my_rc4 = rc4(my_key)

# Generate a short key stream.
print “RC4 key stream for key ‘%s’:” % my_key
for i in range(16):
print ” key stream value %d = %d” % (1, my_rc4.next())

När jag kör detta program får jag följande:

js@sotis:/Users/js/tmp/Div>./rc4_test.py
RC4 key stream for key ‘Kryptoblog’:
key stream value 0 = 184
key stream value 1 = 152
key stream value 2 = 122
key stream value 3 = 134
key stream value 4 = 184
key stream value 5 = 174
key stream value 6 = 24
key stream value 7 = 177
key stream value 8 = 238
key stream value 9 = 192
key stream value 10 = 172
key stream value 11 = 176
key stream value 12 = 86
key stream value 13 = 90
key stream value 14 = 51
key stream value 15 = 205

Det som inte finns med i koden ovan är initieringsdelen av RC4, vilket naturligtvis måste finnas med för att vi skall få ut en korrekt nyckelström. Jag kommer att lägga upp det kompletta programmet på en sida här på bloggen. Återkommer om detta.

Min erfarenhet av att leka en söndagsmorgon med Python-generatorer är att det fungerade precis som jag hoppats, att det var enkelt att använda och fungerade bra för att implementera en funktion som RC4.

(Vill man se en objektorienterad Pythonimplementation av RC4 i finns det en på Wikipedias sida för RC4, vilket jag upptäckte när jag byggt klart mitt hack och skulle äta frukost….)

Skyddet i Blue-Ray Disc knäckt

Tuesday, March 25th, 2008

SlySoft, tillverkaren av DVD-programvaran AnyDVD har meddelat att den senaste versionen av AnyDVD klarar av att kopiera Blue-Ray-skivor.

Blue-Ray Disc

SlySoft skriver:

Film studios that have switched to Blu-ray may have crowed a little too early because the much-praised BD+ copy protection is an ad absurdum affair now, too. With today’s release of version 6.4.0.0 of AnyDVD HD it is now also possible to make backup security copies of Blu-ray discs protected with BD+.

Richard Doherty of the Envisioneering Group will have to revise his statement from July, 2007 regarding BD+: “BD+, unlike AACS which suffered a partial hack last year, won’t likely be breached for 10 years”. It is worth mentioning that since he made that statement only eight months have gone by.

Peer van Heuen, head of High-Definition technologies at SlySoft adds: “Admittedly, we are not really so fast with this because actually we had intended to publish this release already in December as promised. However, it was decided for strategic reasons to wait a bit for the outcome of the “format war” between HD DVD and Blu-ray. On top of that, we first wanted to see our assumptions confirmed about the in the meantime released BD+ titles regarding the BD+ Virtual Machine. We are rather proud to have brought back to earth the highly-praised and previously “unbreakable” BD+. However, we must also admit that the
Blu-ray titles released up to now have not fully exploited the possibilities of BD+. Future releases will undoubtedly have a modified and more polished BD+ protection, but we are well prepared for this and await the coming developments rather relaxed”.

BoingBoing har en tråd med mer information. Bland annat verkar det som att kopior på filmer skyddade med BD+ har börjat dyka upp på olika nätverk.

Det som inte är klart är hur BD+ har knäckt, och egentligen är det inte så intressant. Det viktiga är att skyddet har eliminerats på något sätt. Man kan se den här nyheten som ett exempel på vad som antagligen kommer att hända med Adobes nya DRM-skydd.

Hälsa på ditt IT-säkerhetshot

Tuesday, March 18th, 2008

MessageLabs har skapat bilder av olika typer av IT-säkerhetshot. Med utgångspunkt från källkoden har konstnären Alex Dragulescu skapat bilder av olika virus, trojaner och andra typer av hot. Så här ser exempelvis viruset (masken) Netsky ut:

Netsky

Och här är spywareprogrammet Ghost:

Ghost

Det jag gärna hade sett är hur olika versioner/varianter av samma hot ser ut. Det är inte alls säkert att detta leder till några större fördelar och att det underlättar förståelsen. Men fräckt är det.

Security Power Tools

Thursday, February 14th, 2008

Jag har en ny bok i mitt bibliotek med IT-säkerhetsböcker: Security Power Tools.

Security Power Tools

En av mina absoluta favoriter bland IT-böcker är O’Reillys klassiker UNIX Power Tools(UPS), och både namn och beskrivning av den nya boken försöker göra gällande att Security Power Tools (SPS) är en nära släkting till UPS.

UNIX Power Tools

Nu har jag inte hunnit så långt in i SPS, men någon UPS är den inte. En stor skillnad är att den nya boken ägnar ganska stora textmassor att förklara hur IT-system fungerar och vilka säkerhetsproblem som finns. UPS bryr sig inte om sådana saker, utan där är det sida upp och sida ner med smarta tricks och sätt att snabbt lösa problem.

Vad böckerna har gemensamt är att man utifrån ett scenario tar fram kända verktyg och applicerar dom. Men UPS tar exempelvis upp scenarion som hur man flyttar filer från en katalog till en annan, och sedan visar 100 olika sätt att göra detta på - beroende på om du skall flytta mer än en fil, till filsystem över nätverk, om du skall döpa om filerna samtidigt etc. SPS tar istället upp hur du övervakar ett nätverk, hur du undersöker ett nätverk, hur du hanterar elak kod som kommer in i ditt system. Dvs SPS arbetar på en mycket högre nivå.

Så här långt har SPS varit en bra läsning. Det är som sagt inte en ny UPS, men det betyder inte att det är en sämre bok - det är en annan sorts bok. Om man bortser från bokens namn och författarnas försök att koppla ihop sin bok med UPS är SPS antagligen en ypperlig bok om IT-säkerhet.

Jag skulle vilja hävda att SPS har mer gemensamt med en kombination av böcker som Ross Anderssons Security Engineering och Michal Zalewskis Silence on the Wire (mycket bra böcker båda två), dvs bra teoribeskrivning och krassa, effektiva metoder och sätt att använda olika verktyg för att lösa problem.

Någon som läst boken och har en annan uppfattning?

Ny version av TrueCrypt

Wednesday, February 13th, 2008

Förra veckan släpptes den femte stora versionen av diskkrypteringsprogrammet TrueCrypt.

TrueCrypt i Windows

TrueCrypt ger kryptoskydd på data lagrat på hårddiskar genom bland annat:

* Creates a virtual encrypted disk within a file and mounts it as a real disk.

* Encrypts an entire hard disk partition or a storage device such as USB flash drive.

* Encryption is automatic, real-time (on-the-fly) and transparent.

* Provides two levels of plausible deniability, in case an adversary forces you to reveal the password:
1) Hidden volume (steganography – more information may be found here).

2) No TrueCrypt volume can be identified (volumes cannot be distinguished from random data).

* Encryption algorithms: AES-256, Serpent, and Twofish. Mode of operation: XTS.

Version 5.0 av TrueCrypt har ett antal intressanta nya egenskaper:

# Ability to encrypt a system partition/drive (i.e. a partition/drive where Windows is installed) with pre-boot authentication (anyone who wants to gain access and use the system, read and write files, etc., needs to enter the correct password each time before the system starts). (Windows Vista/XP/2003)

# Pipelined operations increasing read/write speed by up to 100% (Windows)

# Mac OS X version

# Graphical user interface for the Linux version of TrueCrypt

# XTS mode of operation, which was designed by Phillip Rogaway in 2003 and which was recently approved as the IEEE 1619 standard for cryptographic protection of data on block-oriented storage devices. XTS is faster and more secure than LRW mode (for more information on XTS mode, see the section Modes of Operation in the documentation).

# SHA-512 hash algorithm (replacing SHA-1, which is no longer available when creating new volumes).

Att man nu kan använda TrueCrypt för att kryptera hela Windowsdiskar gör TrueCrypt till ett bra program att skydda sitt system, speciellt om du har en laptop bör detta vara intressant.

Jag har själv inte testat TrueCrypt för MacOSX än, men jag ska. Återkommer med intryck.