Съдържание

Пълен курс по етично хакерство от нула до експерт
Хаквайте като „black hat“ хакери. Тестове за проникване, Kali Linux, хакване на WiFi и уеб сайтове, както и хакерският начин на мислене зад всичко това.
Файл от 1993 г. се отваря на напълно актуализиран Windows 11 през 2026 г. и работи така, сякаш нищо никога не се е променило. Това е FreeCell, играта на карти, на 33 години. Причината тя да работи е същата причина, поради която опасен стар код продължава да се задържа в Windows.
Програмата е FREECELL.EXE, а копието, което все още работи, е това, разпространявано с Win32s – добавка от 1993 г., която позволява на ранен 32-битов софтуер да работи под Windows 3.1. Файлът е компилиран на 4 юли 1993 г. Големината му е 49 188 байта. Копирайте го заедно с неговата собствена библиотека CARDS.DLL на машина с Windows 11, щракнете два пъти и зеленото сукно с четирите свободни клетки в ъгъла се отваря.
Самият Win32s беше временна мярка. През 1993 г. компютърът на обикновеното бюро все още работеше с Windows 3.1, която беше 16-битова система, а Microsoft искаше да даде на разработчиците начин да започнат да пишат 32-битовия софтуер, от който Windows NT и по-късно Windows 95 щяха да имат нужда. Win32s беше именно тази връзка – набор от допълнителни файлове, добавени към Windows 3.1, които транслираха 32-битовите извиквания надолу към лежащата в основата 16-битова система. FreeCell се появи заедно с него и тъй като беше създадена като истинска 32-битова програма, тя е същият тип програма, каквато Windows 11 все още изпълнява днес.
Прочетох самия файл, вместо да се доверявам на историята. Вътре в него описанието все още гласи „Entertainment Pack FreeCell Game“, придружено от реда „Copyright © Microsoft Corp. 1981-1993“. Той изисква от Windows пет неща и нищо повече: KERNEL32, USER32, GDI32, SHELL32 и собствената си библиотека CARDS.DLL – малката библиотека, която изобразява тестето. Първите четири са основни системни файлове на Windows и в момента се намират на вашата машина, под същите имена, вършейки същата работа, каквато вършеха и през 1993 г.
Това е причината тя все още да се отваря. 32-битова програма като тази достига до 64-битова машина чрез транслатор, наречен WOW64, който Microsoft описва като x86 емулатор, позволяващ на 32-битови приложения за Windows да работят под 64-битов Windows. WOW64 идва със системата и присъства винаги. Той държи старата и съвременната програма разделени, предоставя на FreeCell интерфейсите от ерата на 1993 г., които тя очаква, и осъществява превода между двете. Играта няма представа, че работи на 64-битова машина.
Мястото, където Windows съхранява всичко това, крие известна ирония. 64-битовите системни файлове се намират в папка, наречена System32, а 32-битовите – от каквито се нуждае FreeCell – се намират в папка, наречена SysWOW64. Имената изглеждат наопаки, и наистина са такива, запазени по този начин нарочно, за да могат старите програми, търсещи System32, все още да намират това, което очакват. FreeCell изисква своите четири Windows библиотеки, Windows тихомълком я насочва към 32-битовите копия в SysWOW64 и играта дори не забелязва подмяната.
Това, което тя не може да направи, е да се върне още една стъпка назад. Windows 11 е изцяло 64-битов, а 64-битовият Windows въобще не изпълнява 16-битови програми. Microsoft посочва ясна причина за тази граница. Windows следи отворените прозорци и файлове с помощта на малки числа, наречени дескриптори (handles), и на 64-битова система тези числа са твърде големи, за да бъдат предадени на 16-битова програма, без да се загуби част от тях. Опитайте да стартирате 16-битово приложение и Windows спира с една-единствена грешка: ERROR_BAD_EXE_FORMAT.
Така че игрите от първия Windows, като Reversi от 1985 г., няма да се стартират сами. Windows 11 не може да ги изпълни без чужда помощ. Нуждаете се от нещо като otvdm – безплатен инструмент с отворен код, който имитира този стар 16-битов свят, или виртуална машина със стар Windows в нея. otvdm е проект на общността, преработена версия на по-стар 16-битов Windows емулатор, портиран за 64-битов Windows. Човекът, който се зае да открие най-старата програма за Windows, която все още работи, нарече опирането на него „мамливо“, и това е справедливо. Reversi се нуждае от тази патерица. FreeCell не се нуждае.
Между тези две се намира един още по-стар оцелял. Програма за възпроизвеждане на компактдискове (CD player), свързана (linked) през ноември 1992 г. от ранна тестова компилация на Windows NT, също все още работи под Windows 11. Тя функционира благодарение на един-единствен файл – crtdll.dll, ранна библиотека за време на изпълнение (C runtime) на Microsoft от онова време. Windows 11 все още я разпространява, скътана в SysWOW64, където се намират 32-битовите компоненти. Програмата от 1992 г. изисква този файл по име, намира го точно там, където очаква, и се стартира.
И тогава, в края на март 2026 г., този забравен файл предизвика хаос. Обновяване на Windows 11 замени crtdll.dll с различна библиотека, която не съдържаше същите функции вътре. Потребители, които погледнаха отблизо, съобщиха, че версията на файла е скочила от 4.0.1183.1 – число от 90-те години на миналия век – на 10.0.26100.8115 – съвременна компилация на Windows, и че замяната изпраща програмите към различна среда за време на изпълнение от тази, за която са били написани. Старите 32-битови програми, които разчитаха на нея, спряха да се стартират. Хората, които все още използваха инструменти отпреди десетилетия, забелязаха това в рамките на дни. Един написа: „Все още използвам това приложение и то винаги е работило до днес“, след като Cardfile – програмата за картотекиране, която се предлагаше с Windows от версия 1.01 до NT 4.0 – внезапно отказа да се отвори. Това са сигнали от потребители в собствените форуми на Microsoft, а не официално съобщение. На 14 април месечният пакет с корекции за сигурност (Patch Tuesday) върна старата версия на файла обратно. Играта продължава да работи, защото Microsoft почти никога не докосва тези елементи, а когато го направи, нещата се счупиха за броени дни.
Това е съзнателен избор и Microsoft го прави от дълго време. Реймънд Чен, инженер, който пише за вътрешното устройство на Windows повече от двадесет години, веднъж разказа история, която го описва точно. Популярна игра за MS-DOS от 1994 г. отказвала да работи под Windows 95, ако компютърът имал повече от 16 мегабайта памет. Играта била написана за по-стар процесор, който не можел да брои отвъд това. Microsoft отстранява проблема от своя страна. Компанията вгражда настройка в Windows за тази конкретна игра, която гласи, по думите на Чен: „Никога не давайте на тази програма повече от 16MB памет.“ Както той отбелязва, тогава играта работила по-добре под Windows 95, отколкото под чист MS-DOS, където щяла да се срине. Умножете това по хиляди програми през десетилетията и ще получите Windows, който използвате днес – операционна система, която носи миналото си със себе си, така че почти нищо, написано някога, да не спира да работи.
Това е подарък, ако зависите от стар софтуер. Това обаче е и проблем, защото код, който никога не си отива, продължава да е там, за да бъде злоупотребено с него от атакуващ. Частите, които Windows запазва заради миналото, също могат да бъдат използвани, и с някои от тях вече е правено точно това.
Най-ясният пример са драйверите за модеми. В продължение на години Windows се доставяше с драйвери за софтуерни модеми Agere — хардуер за комутируем достъп (dial-up), какъвто малцина притежават от 2000-те години насам. Хардуерът отдавна липсваше, но драйверите останаха — заредени и с доверен статус — на напълно обновени машини. След това изследователи откриха уязвимост в един от тях, ltmdm64.sys, проследявана като CVE-2025-24990. Собственият бюлетин на Microsoft посочва, че атакуващите вече са я използвали и че тя им е позволявала да получат администраторски права върху машината. Microsoft отбелязва, че уязвимостта засяга всички поддържани версии на Windows, дори когато не се използва никакъв модем, просто защото драйверът е бил наличен.
През октомври 2025 г. Microsoft премахна драйвера от Windows, вместо да отстрани уязвимостта с корекция. Три месеца по-късно, през януари 2026 г., компанията направи същото и с втори драйвер за модем Agere, agrsm64.sys, CVE-2023-31096, който можеше да предостави на атакуващ пълен контрол на ниво SYSTEM — най-високото ниво в машина с Windows. Тази втора уязвимост беше публично известна от октомври 2023 г. Драйверът остана в Windows повече от две години след като начинът за злоупотреба с него стана обществено достояние, докато Microsoft най-накрая не го изтегли.
Модемите бяха физически хардуер. По-дълбокият вариант на този проблем се крие във функционалност, създадена именно с целта, която поддържа FreeCell работеща: да кара стария софтуер да работи на нов Windows. Тя се нарича съвместимост на приложенията (application compatibility), а Windows позволява на администратора да инсталира корекции, наречени shims, които застават между дадена програма и системата и променят начина, по който двете комуникират. Microsoft предоставя инструмент за тази цел, sdbinst.exe, който регистрира тези корекции, така че Windows да ги прилага всеки път, когато програмата се стартира. Предназначен е за компании със стари собствени програми, които в противен случай биха спрели да работят. Windows съхранява shim като малък файл с база данни — .sdb — и пази запис кои от тях са регистрирани. Базата данни, която се доставя с Windows, sysmain.sdb, съдържа неговите вградени корекции за стари програми и нейното място е точно там. Опасението идва от персонализирана база данни, която собственикът никога не е създавал, тъй като регистрираният shim се изпълнява незабележимо и на ранен етап, а инсталирането му изисква администраторски права.
Атакуващите са установили, че същият този механизъм е тихо и удобно скривалище. Shim се зарежда автоматично и на ранен етап при всяко стартиране на целевата му програма — именно това, което някой, проникнал в системата, търси, за да си осигури трайно присъствие. Публичният каталог с техники на атакуващите, поддържан от MITRE, описва това съвсем ясно. В него се посочват групи и зловреден софтуер, които са го използвали, за да запазят достъпа си и да получат по-високи права, сред които FIN7, ShimRat, Pillowmint и SDBbot. Някои shims могат да деактивират защити, на които Windows разчита, като например тази, която предотвратява изпълнението на код в памет, където това не е разрешено. Други могат да заобиколят прозореца за разрешения, който Windows показва, преди дадена програма да получи по-големи права. Функционалността, която поддържа жива игра с карти от 1993 г., е същата, която позволява на проникването да оцелее след рестартиране.
Можете да проверите това на собствения си компютър и нямате нужда от нищо повече от това, с което Windows вече разполага. Windows записва регистрираните корекции в системния регистър (registry) под AppCompatFlags, а този запис сочи към мястото, където реално се намира всяка база данни. Папката AppPatch във вашата Windows директория е обичайното място, но персонализирана база данни може да се намира във всяка папка, така че записът в системния регистър е нещото, което трябва да проследите. Домашният компютър обикновено разполага само със стандартната системна база данни и нищо персонализирано. Ако откриете персонализирана shim база данни, която никога не сте настройвали, тя определено заслужава внимание, а собственият инструмент на Microsoft sdbinst е това, с което се премахва — чрез командата sdbinst -u и съответния файл. На обикновен персонален компютър рядко има причина за съществуването на персонализирана такава база данни.
Игра с карти от 1993 г. все още раздава първата си ръка на Windows 11, защото преди много време Microsoft реши, че миналото трябва да продължи да работи. Това решение е причината вашите стари програми все още да се изпълняват и заради него най-старите кътчета на Windows заслужават вашето внимание — както в добрите дни, така и в лошите.
Бихте ли могли да изброите корекциите за съвместимост, регистрирани на вашия Windows, и да забележите някоя, която никога не сте настройвали сами?
Microsoft: Running 32-bit Applications | MITRE ATT&CK: Application Shimming | MSRC: CVE-2025-24990 | MSRC: CVE-2023-31096