-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hristo Erinin wrote:
| Здравей, | | Тъй като в описаната процедура не споменаваш рестартиране на | системата и използване на гарантирано чисто ядро, то приемам, че | такава операция не се предвижда. Коментарите по-долу са на база на | това предположение. | | | Дължа извинения за неточното и непълно написано писмо под влияние на поне няколко външни фактора, които няма да споменавам.
За това сега сядам и пиша подробно и прегледно.
***
Внимание! Този документ обобщава опит за RPM базирани системи. Ако системата ви не е такава, не си губете времето да го четете.
Първо, постановката на задачата: иска се да се направи алгоритъм, по който да може да се разбере дали файлове от инсталираните пакети са били модифицирани или не.
Второ, предлаганата от мен схема на разследване: почива на използване на особеностите на пакетната система RPM. При това предполагаме, че всички бинарни и др. файлове, които може да са обект на интерес за модифициране са инсталирани от пакети и записи за тях са налични в локалната база на пакетната система. Ако на мен ми се налага да инсталирам нещо, което го няма в официалните пакети, изграждам RPM пакет и го подписвам. Това е правилния начин. Дори неща от рода на отделни скриптове не е проблемно да се инсталират на RPM пакет с подписи. Всякакви самоделки от рода на "make" и "make install" изобщо не отговарят на стратегията за построяване на сигурна система. Освен ако не си направите още по-самоделна система да подписвате продуцираните файлове. Истината е, че при пакетна система, която почива на електронно подписване има гъвкавост - при остраняване или прибавяне на пакет се опреснява базата с данни и не ви се налага да пипате другаде.
Тук някои хора с 200 годишно родословно дърво описаха как щяли да създадат база с хешове и да я криптират. Целта е тази база да е ПОДПИСАНА, а не криптирана. Ужасявам се как хората не искат да се научат на елементарни неща.
Защо разследването не може да се извърши върху "жива" система (т.е. защо ни е да е рестартираме и от диск да зареждаме rescue версия от CD-ROM или USB)?
Причините са много. Ако са засегнати системни библиотеки е на практика невъзможно да се установи модифицирането им.
Ето ви примерче. Носите си на дискета инструмента md5sum и/или sha1sum и на лист хешовете на всички библиотеки. И рзчитате като изпълните тези инструменти от дискетата те да дадат верен резултат. Всичко би било прекрасно, но тези инструменти не четат директно информацията от файловата система. Потока се подава от библиотеките н а glibc. Няма проблеми те да се модифицират така, че при поискване за прочит на някоя библиотека, да бъде подавана немодифицираната й версия (скрита някъде по файловата система), а при изпълнение да се изпълнява модифицираната. Така чрез sha1sum или md5sum вие ще получите информация, че библиотеката е немодифицирана, но това няма да е така.
Ето и сценария на проверката.
1) Рестартиране 2) Зареждане на rescue версията
След като се изпълни втората стъпка, няма да изпълним "chroot /mnt/sysimage", а ще оставим нещата така. В rescue версията имаме инструмента rpm. Сега трябва да направим така, че да проверим ключовете в базата. Това значи, че предварително в паметта трябва да заредите (може и от дискета, може и през SSH) сертификатите, които ще се ползват за проверка на подписите върху пакетите. След това следва проверка на сертификатите в базата, която се намира в /mnt/sysimage/var/lib/rpm:
# rpm -q gpg-pubkey --root /mnt/sysimage gpg-pubkey-db42a60e-37ea5438 gpg-pubkey-4f2a6fd2-3f9d9d3b gpg-pubkey-30c9ecf8-3f9da3f7 gpg-pubkey-e42d547b-3960bdf1 gpg-pubkey-6b8d79e6-3f49313d gpg-pubkey-1aa78495-3eb24301 gpg-pubkey-b56a8bac-3bbc4d06 gpg-pubkey-66534c2b-3e60b428 gpg-pubkey-6b8d79e6-3f49313d gpg-pubkey-1aa78495-3eb24301 gpg-pubkey-8df56d05-3e828977 gpg-pubkey-e42d547b-3960bdf1 gpg-pubkey-ff6382fa-3e1ab2ca gpg-pubkey-a109b1ec-3f6e28d5 gpg-pubkey-b8693f2c-3f48c249 gpg-pubkey-1ac70ce6-41bebeef
Сега трябва да проверите всеки от тези сертификати един по един. Първо ги извличате. Ето пример:
$ rpm -q gpg-pubkey-db42a60e-37ea5438 --info --root /mnt/sysimage Name : gpg-pubkey Relocations: (not relocatable) Version : db42a60e Vendor: (none) Release : 37ea5438 Build Date: Tue 23 Nov 2004 05:05:00 PM EET Install Date: Tue 23 Nov 2004 05:05:00 PM EET Build Host: localhost Group : Public Keys Source RPM: (none) Size : 0 License: pubkey Signature : (none) Summary : gpg(Red Hat, Inc <[EMAIL PROTECTED]>) Description : - -----BEGIN PGP PUBLIC KEY BLOCK----- Version: rpm-4.3.2 (beecrypt-3.0.0)
mQGiBDfqVDgRBADBKr3Bl6PO8BQ0H8sJoD6p9U7Yyl7pjtZqioviPwXP+DCWd4u8HQzcxAZ5 7m8ssA1LK1Fx93coJhDzM130+p5BG9mYSWShLabR3N1KXdXQYYcowTOMGxdwYRGr1Spw8Qyd LhjVfU1VSl4xt6bupPbWJbyjkg5Z3P7BlUOUJmrx3wCgobNVEDGaWYJcch5z5B1of/41G8kE AKii6q7Gu/vhXXnLS6m15oNnPVybyngiw/23dKjSZVG7rKANEK2mxg1VB+vc/uUc4k49UxJJ fCZg1gu1sPFV3GSa+Y/7jsiLktQvCiLPlncQt1dV+ENmHR5BdIDPWDzKBVbgWnSDnqQ6KrZ7 T6AlZ74VMpjGxxkWU6vV2xsWXCLPA/9P/vtImA8CZN3jxGgtK5GGtDNJ/cMhhuv5tnfwFg4b /VGo2Jr8mhLUqoIbE6zeGAmZbUpdckDco8D5fiFmqTf5+++pCEpJLJkkzel/32N2w4qzPrcR MCiBURESPjCLd4Y5rPoU8E4kOHc/4BuHN903tiCsCPloCrWsQZ7UdxfQ5LQiUmVkIEhhdCwg SW5jIDxzZWN1cml0eUByZWRoYXQuY29tPohVBBMRAgAVBQI36lQ4AwsKAwMVAwIDFgIBAheA AAoJECGRgM3bQqYOsBQAnRVtg7B25Hm11PHcpa8FpeddKiq2AJ9aO8sBXmLDmPOEFI75mpTr KYHF6rkCDQQ36lRyEAgAokgI2xJ+3bZsk8jRA8ORIX8DH05UlMH27qFYzLbT6npXwXYIOtVn 0K2/iMDj+oEB1Aa2au4OnddYaLWp06v3d+XyS0t+5ab2ZfIQzdh7wCwxqRkzR+/H5TLYbMG+ hvtTdylfqIX0WEfoOXMtWEGSVwyUsnM3Jy3LOi48rQQSCKtCAUdV20FoIGWhwnb/gHU1BnmE S6UdQujFBE6EANqPhp0coYoIhHJ2oIO8ujQItvvNaU88j/s/izQv5e7MXOgVSjKe/WX3s2Jt B/tW7utpy12wh1J+JsFdbLV/t8CozUTpJgx5mVA3RKlxjTA+On+1IEUWioB+iVfT7Ov/0kcA zwADBQf9E4SKCWRand8K0XloMYgmipxMhJNnWDMLkokvbMNTUoNpSfRoQJ9EheXDxwMpTPwK ti/PYrrL2J11P2ed0x7zm8v3gLrY0cue1iSba+8glY+p31ZPOr5ogaJw7ZARgoS8BwjyRymX Qp+8Dete0TELKOL2/itDOPGHW07SsVWOR6cmX4VlRRcWB5KejaNvdrE54XFtOd04NMgWI63u qZc4zkRa+kwEZtmbz3tHSdRCCE+Y7YVP6IUf/w6YPQFQriWYFiA6fD10eB+BlIUqIw80Vgjs BKmCwvKkn4jg8kibXgj4/TzQSx77uYokw1EqQ2wkOZoaEtcubsNMquuLCMWijYhGBBgRAgAG BQI36lRyAAoJECGRgM3bQqYOhyYAnj7hVDY/FJAGqmtZpwVp9IlitW5tAJ4xQApr/jNFZCTk snI+4O1765F7tA== =3AHZ - -----END PGP PUBLIC KEY BLOCK-----
Подавате изхода към файл в /tmp (а не в /mnt/sysimage/tmp) и после с помощта на gpg сравнявате fingerprint на изтегления от базата ключ с този, който имате на вашия носител. Ако те съвпаднат, значи всичко е наред и няма подхвърлени сертификати. Вижте дали няма и сертификати, който не би трябвало да бъдат там. Трябва внимателно да следите какви сертификати се слагат в базата на RPM.
След това всичко е лесно. Следвайте модела посочен тук:
http://hardtrance.blogspot.com/2005/01/rpm-openpgp-3.html
и автоматизирайте по ваш вкус (за всички пакети в базата). После анализирайте получените резултати. Ако намерите подменнен пакет. Подменете го.
По-подробно описание можете да намерите и в другите две части на посочения по-горе модел:
http://hardtrance.blogspot.com/2004/12/rpm-openpgp-1.html http://hardtrance.blogspot.com/2004/12/rpm-openpgp-2.html
~ Поздрави ~ Весо
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iQIVAwUBQjVsV7afyWmgOHdbAQKfZg//Z4G5WqPAyFfqaCVhK64sAOCJkg2SNXkp pFJ7YFK0LodYX/BSTpUWmrfTAoCrxisx8fWBXAVkMesTdakyw84Mhk66nhXEIUeZ V0mIJrisAGj0+mj5rlH0ZYWSYx1wpCWF3kfR9hgZtjBbR6QRYkD/xFOZV0xphNL/ VIyA54ZSddxdEsQk0cVTHaScdoKnQMx7ZJYa27SfqyUOEk4kyG6i8bRjRAg7yNYf vjm/fU5hRsE78B2dYpheKDewI0ikzuNjBBd5liCgdDQ6wnQ01vcjHTAwl8RTjlJH dJBS4r8K1Gyv+BBrHdHnuIvOshdEKfIJjadsUPZCtOWvTk1KH1p0y4pBfABsqEDn Xmsv8rUrulRyYq57nM+Wwu5daRL9UBhemYLF4uP26vE6qAKAYp6T38qgrVuP4XPa cYlU415RBBQKW3iC6PnDJSzJa7lY8p2pepxpN2MMiO3e971NQOCcxIOUNgz6hscY op4PHuAw0HUsR8TV6yMxDKBKSLTWyIU52o6sBk9XMoU80l50L9bupVOWkNS5MG2T MGv1M9Sk63xsciBBuKxwx6mkkzwXYkwXEdJvKBDApG64ZcLoJ4F6289TfRThRXQG mNV2/Ikzy2OXXtfcWQ7SBhCE26sZMQ+5wJSD3XCAhLJ1VzkpT7tCtNPAf0M/foh9 iEbh7nrqmt4= =zft5 -----END PGP SIGNATURE-----
============================================================================ A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers). http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html ============================================================================
