Jak premazat RAM?

HackForum

Jak premazat RAM?#
Cau vsichni,
Chtel bych se zeptat, jestli nevite o nejakem linuxovem programku, ktery dokaze behem chvilky premaznout RAM.

Dekuji
(odpovědět)
|T|O|R| | 72.46.129.*22.7.2011 16:18
re: Jak premazat RAM?#
aniz by pri tom shodil system, nebo jako ochrana a muze shodit system? :)
(odpovědět)
Emkei | E-mail | Website | PGP22.7.2011 20:11
re: Jak premazat RAM?#
S padem OS pocitam ;-)
(odpovědět)
|T|O|R| | 74.120.12.*23.7.2011 9:26
re: Jak premazat RAM?#
Nikdo nevi?
(odpovědět)
|T|O|R| | 209.44.114.*24.8.2011 18:11
re: Jak premazat RAM?#
Mozna neco jako "cat /dev/urandom > /dev/mem" (samozrejme pod rootem), ale nevim, pomerne dlouho ted jedu na Windows a mozna kecam..
(odpovědět)
independent_ | 109.80.59.*24.8.2011 22:47
re: Jak premazat RAM?#
Viděl jsem kernel patch někde v hysteria archivu, který to dělal automaticky.

To co psal independent by moc nefungovalo, protože a) urandom je dost pomalý a za b) nejspíš by to sestřelilo systém ještě před tím než by celou paměť přepsal.

Jinak napsat něco takového by neměl být takový problém, stačí přečíst volnou paměť v /proc/meminfo a pak použít malloc(). Otázkou ovšem je, jestli tě systém nesestřelí na základě nějakých quot.

PS: Tak jsem to našel, viz Alzheimer Kernel driver [link]
(odpovědět)
Bystroushaak_ | 83.208.175.*24.8.2011 23:02
re: Jak premazat RAM?#
System by to sestrelilo urcite jeste pred prepsanim cele pameti. To co jsi navrhoval by bylo lepsi, jen si to dovolim upravit a vynechat malloc, protoze tomu nemuzes diktovat, na jake adrese ma pamet alokovat, tzn. /proc/meminfo je ti k nicemu.

Videl bych to takhle:
1) ukoncit co nejvice programu, sluzeb apod.
2) ziskat seznam vsech volnych bloku pameti
3) kazdy blok prepsat (ulozit si adresu kazdeho volneho bloku, ve smycce kazdy blok projit a prepsat, jit na dalsi blok..)
4) pouzit neco jako ten "cat /dev/urandom > /dev/mem", ktery zacne prepisovat pamet od zacatku, tzn. ze se prepise kernel (pravdepodobne system spadne driv, nez se stihne cely kernel prepsat, ale to by nemuselo nutne vadit, v kernelu asi moc citlivych informaci nebude)

Obavam se, ze nic z toho ale nebude uplne spolehlive. Pokud jde o obranu pred cool boot attackem, tak by asi bylo nejlepsi restartovat PC a nabootovat treba disketu, ktera by mela na prvnim sektoru ulozeny programek v Assembleru, co by se o to prepsani pameti postaral. Ten by obsadil jen pul kilobajtu pameti a navic na predem zname adrese (kterou si ted samozrejme nevzpomenu), takze by se dala cela pamet prepsat naprosto bez problemu jedinou smyckou s par instrukcema. Ovsem problem je v tom, ze z real modu bys nemohl pristupovat k cele pameti (pokud nemas pocitac z muzea :D), ale musel by jsi se prepinat do protected modu, starat se o strankovani a podobne veci, coz uz neni uplna sranda. Mozna by se to ani neveslo do toho pul kilobajtu, takze by jeste bylo nutne nacitat zbytek programu z dalsich sektoru atp..

Ale bylo by to nejspolehlivejsi :)
(odpovědět)
independent_ | 109.80.59.*25.8.2011 2:18
re: Jak premazat RAM?#
J, máš pravdu. Zpětně si uvědomuju že jsem to dost dobře nepopsal.

Měl jsem na mysli načtení informace o volné paměti z /proc/meminfo, jenž poté použiješ jako parametr pro malloc() (calloc by byla lepší), kterou alokuješ veškerou volnou paměť. Pak můžeš spustit cosi jako "cat /dev/urandom > /dev/mem" (dd if=/dev/null of=/dev/mem by taky šlo, náhodná čísla tam imho cpát nepotřebuješ), který přepíše kus systému a pak padne. Tím se zbavíš skoro všeho v RAM, i když něco málo zůstane a proto to není zrovna dokonalé řešení.
(odpovědět)
Bystroushaak_ | 83.208.175.*25.8.2011 2:25
re: Jak premazat RAM?#
Ah, jsem si myslel, ze se z /proc/meminfo daji vytahnout informace o volnych blocich pameti a ono ne..

Alokovat veskerou volnou pamet je podle me nesmysl, protoze kernel ti to pravdepodobne nedovoli (minimalne na nekterych systemech). Mozna by se to dalo obejit pomoci spousteni vice programu, z nichz kazdy by vycistil jen cast pameti, ale to by bylo pravdepodobne dost pomale, slozite na synchronizaci apod.

Drzel bych se toho sveho postupu s tim, ze se seznam volnych bloku ziska nekde jinde - ovsem kde, to je otazka.

Jinak ted si vzpominam cosi o tom, ze kazdy program v GNU/Linuxu bezi ve vlastnim "virtualnim" prostoru, ktery ma velikost 4GB (bez ohledu na to, jestli je tak velka RAM nebo alespon swap) a v tom je ulozen jeho binarni kod, stack a data, ktera si alokuje. Mozna se pletu a je to trochu jinak, ale pokud ne, tak si namirenim pointeru do sousedni vesnice moc nepomuzu, protoze porad zustanu nekde u sebe..

Fakt uz v tom mam bordel, musim nainstalovat Arch, kdyz se mi to Gentoo tak sere, a udelat par pokusu..


(odpovědět)
independent_ | 109.80.59.*25.8.2011 14:14
re: Jak premazat RAM?#
Včera jsem si před spaním trochu hrál, takže jsem nabastlil triviální memory eater: [link]

Problém je, že tam mám magickou konstantu 50k, pod kterou můj systém začne cpát stránky z RAM do swapu. Programu se to jeví jako že se RAM nezaplňuje, takže nadále běží, ale celý systém se zasekne kvůli tomu že vše z RAM se cpe do SWAPU. Celá RAM se tak nezaplní.

Jinak k funkční impelementaci by to chtělo check jestli je spuštěný pod rootem a na konci ten přepis /dev/mem.
(odpovědět)
Bystroushaak_ | 83.208.175.*25.8.2011 16:04
re: Jak premazat RAM?#
Abych to vysvětlil, ta magická konstanta je tam proto, aby se program vypl na mém systému předtím než začne vše cpát do SWAPu. Normálně by tam měla být nula.
(odpovědět)
Bystroushaak_ | 83.208.175.*25.8.2011 16:07
re: Jak premazat RAM?#
Hmm, necekal jsem, ze staci tak trivialni kod pro obsazeni cele pameti, predpokladal jsem, ze to bude nejak omezene..

Ale ten swap to bude chtit nejak osefovat, no.
(odpovědět)
independent_ | 109.80.59.*25.8.2011 16:14
re: Jak premazat RAM?#
Funguje to takhle: [link]

Všimni si těch čísel v konzoli, 44684 následované 48236, jak se uvolnil blok paměti přesunutý do swapu.

Screenshot je pořízený poté co jsem program sestřelil přez alt+sysrq+f, pokud nemáš sysrq povolený, radši to nezkoušej :)
(odpovědět)
Bystroushaak_ | 83.208.175.*25.8.2011 16:37
re: Jak premazat RAM?#
Ok, takže tady je program který sežere všechnu volnou paměť: [link]

Sám si vypne swap a pak po jednom megabajtu užírá, dokud ho systém nekillne (u mě se to stane když zbývá asi 50MB, viz ta magická konstanta v předchozím programu). 2GB trvají asi 15s.

Zkoušel jsem na konec přidávat přepis /dev/mem, ale poté co po náhlém pádu komp nenabootoval a chtěl opravit z livecd už si nejsem jistej že je to moc dobrej nápad.

Výše uvedená verze by se nejspíš dala spouštět periodicky, pokud si jí obalíte scriptem který po sestřelení programu zase zapne swap ('swapon -a').
(odpovědět)
Bystroushaak_ | 83.208.175.*25.8.2011 19:28
re: Jak premazat RAM?#
Ajo sakra.... Koukam, ze jsem na to sel uplne spatne :-D

Dekuju moc za rady
(odpovědět)
|T|O|R| | 178.137.131.*26.8.2011 10:29

Zpět
Svou ideální brigádu na léto najdete na webu Ideální brigáda
 
 
 

 
BBCode