Интересный хак

Есть такой бес­плат­ный (и очень мощ­ный) редак­тор тек­ста — Notepad++. Он уме­ет пони­мать син­так­сис мно­гих язы­ков про­грам­ми­ро­ва­ния, типа Python, JavaScript, PHP, и далее по алфа­ви­ту. Кро­ме того, он под­дер­жи­ва­ет рег­экс­пы, MIME, и про­чие полез­ные сись-админ­ские вещи. Я с удо­воль­стви­ем его исполь­зую.

Выяс­ни­лось, что в ста­рых вер­си­ях есть крайне инте­рес­ная уяз­ви­мость. Его встро­ен­ная обнов­лял­ка недо­ста­точ­но стро­го про­ве­ря­ла циф­ро­вые под­пи­си ска­чи­ва­е­мых паке­тов. Таким обра­зом, ей мож­но было под­су­нуть вирус­ню вме­сто леги­тим­но­го обнов­ле­ния.

Хаке­ры умуд­ри­лись взло­мать хосте­ра, где хра­ни­лись бинар­ни­ки, и щед­ро насо­ва­ли туда вся­ко­го инте­рес­но­го в панам­ку.

Клас­си­че­ская ата­ка на цепь снаб­же­ния. Очень чистая рабо­та. Пра­ц­ю­ва­ли китай­ці — какая-то хакер­ская груп­пи­ров­ка с очень хоро­шим бюд­же­том, воз­мож­но, госу­дар­ствен­ным.

Впро­чем, если вы не ази­ат­ская ком­па­ния в обла­сти теле­ком­му­ни­ка­ций или бан­кин­га, мож­но выды­хать — похо­же, цели­лись толь­ко в них.

Но на вся­кий слу­чай — обно­ви­тесь до вер­сии 8.9.1.

via
https://www.securityweek.com/notepad-supply-chain-hack-conducted-by-china-via-hosting-provider/

Update!

Тех­ни­че­ский ана­лиз с раз­бо­ром IoC:
https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/

Rich Bitch

Рань­ше люди хва­ста­лись золо­том, жем­чу­га­ми, и про­чи­ми бран­зу­лет­ка­ми.

А нын­че цены на опе­ра­тив­ную память такие кон­ские, что грех не похва­стать­ся сво­ей кол­лек­ци­ей пла­но­чек 🙂

Смех, увы, сквозь слё­зы. Я вот даже не знаю, когда у меня теперь вооб­ще будет новый ком­пью­тер. Это при­мер­но как несколь­ко лет назад соби­рать ПК и вне­зап­но осо­зна­вать, что видео­кар­та — это, ока­зы­ва­ет­ся, пред­мет рос­ко­ши. Блин.

Одно знаю твёр­до: если ком­па­ния Мик­ро­софт не свер­нёт с пути пла­но­мер­ной иди­о­ти­за­ции сво­ей деск­топ­ной Windows, то пусть они там… даль­ше раз­вле­ка­ют­ся без меня — а мой сле­ду­ю­щий ком­пью­тер, види­мо, будет мар­ки Макин­тош.

Ни за что

Ни за что я не буду боль­ше поку­пать бло­ки пита­ния и вооб­ще какие-либо ком­пью­тер­ные про­дук­ты про­из­вод­ства Antec. Доро­гое, солид­но выгля­дя­щее, да — но нена­дёж­ное гов­но.

Это по моти­вам сдох­нув­ше­го без объ­яв­ле­ния вой­ны БП на само­паль­ном домаш­нем нако­пи­те­ле — где хра­ни­лись все бека­пы, филь­мы, и про­чее. Сдох он при нештат­ном отклю­че­нии пита­ния — что-то там вне­зап­но не сдю­жи­ло. Нако­пи­тель, кста­ти, был тоже в кор­пу­се Antec — и вот вро­де кор­пус функ­ци­о­наль­ный… но тоже барах­ло.

Пока толь­ко одна мар­ка бло­ков пита­ния нико­гда меня не под­во­ди­ла — FSP. Буду толь­ко их поку­пать.

Шаббат шалом

«Ящи­таю» ©, что у хоро­ше­го сисад­ми­на дол­жен быть не толь­ко пра­виль­но­го диа­мет­ра, гра­мот­но намо­лен­ный бубен, но ещё и спе­ци­аль­но обу­чен­ная сисад­мин­ская ермол­ка.

Наде­ва­ет­ся эта ермол­ка акку­рат утром в пят­ни­цу, после вос­хо­да солн­ца — что­бы напо­ми­нать нам, что в пят­ни­цу мы, кибе­не­мат, про­дак­шен не тро­га­ем под стра­хом поби­ва­ния витой парой. Пото­му что если что-то грох­нет­ся — то выход­ные пой­дут коту под хвост.

Но сего­дня один наш орёл решил про­ве­рить гра­ни­цы миро­зда­ния и пере­гру­зил кла­стер вир­ту­а­ли­за­ции Hyper‑V. ВЕСЬ. Не по одно­му хосту, не акку­рат­но и пооче­рёд­но — а сра­зу всё, одно­вре­мен­но, чтоб навер­ня­ка.

Упа­ло, сла­ва Зев­су и всем богам SLA, не очень мно­го — бла­го пере­за­груз­ка была ещё до нача­ла рабо­че­го дня. Но доста­точ­но для того, что­бы наша мама (фин­ди­рек­тор) напи­са­ла недо­умён­ное:

«Ребя­та, у нас сего­дня вооб­ще-то зар­пла­та начис­ля­ет­ся. Вы там что, реши­ли устро­ить при­клю­че­ние с утра порань­ше?»

А зар­пла­та (и наша мама) — это свя­тое.

Хвост сисад­ми­ну мы, конеч­но, слег­ка под­ров­ня­ли, но дело, увы, уже было сде­ла­но.

Шаб­бат шалом. И пят­нич­ный прод стань­те же кто-нибудь охра­нять. Жела­тель­но, с бейс­боль­ной битой наго­то­ве.

Micron — всё

Ну, не «всё», конеч­но, но всё же Мик­рон офи­ци­аль­но объ­явил об ухо­де с поль­зо­ва­тель­ско­го рын­ка памя­ти и фле­ша (бренд Crucial). Ухо­дят они, судя по все­му, пото­му что вынуж­де­ны удо­вле­тво­рять рез­ко вырос­ший спрос круп­ных кор­по­ра­тив­ных кли­ен­тов — читай: дата-цен­тров под ИИ-нагруз­ки и про­чий enterprise, кото­рый сей­час жрёт энер­гию и крем­ний мега­тон­на­ми. Тянуть в нагруз­ку ко все­му это­му и роз­нич­ные про­да­жи у них попро­сту боль­ше не хва­та­ет ни мощ­но­сти, ни, види­мо, жела­ния.

Моей сисад­мин­ской душе от это­го, това­ри­щи, очень-очень горь­ко. Пото­му что Micron-овская память, по мое­му опы­ту, все­гда была самой ста­биль­ной, самой пред­ска­зу­е­мой, и наи­ме­нее глюч­ной. Я ещё с 1990‑х ста­ра­юсь поку­пать имен­но их моду­ли — и не при­пом­ню, что­бы они меня хоть раз под­ве­ли. Да и с их флеш­ка­ми и SSD у меня тоже нико­гда не было про­блем.

Отдель­ная боль — их пре­крас­ный онлайн-ска­нер сов­ме­сти­мо­сти памя­ти, тот самый, кото­рый поз­во­лял за мину­ту подо­брать нуж­ные моду­ли для прак­ти­че­ски чего угод­но: от древ­них ноут­бу­ков до экзо­ти­че­ских рабо­чих стан­ций. Это был инстру­мент, кото­рый реаль­но делал жизнь про­ще. Теперь всё это, увы, накры­ва­ет­ся мед­ным тазом.

Я пони­маю при­чи­ны, пони­маю рынок… но ника­ких поло­жи­тель­ных эмо­ций по это­му пово­ду не испы­ты­ваю.
🙁

Вчера FSLogix душили-душили

Запись будет инте­рес­на в основ­ном сись-одми­нам. Так, замет­ки для себя и для сво­их.

FSLogix — это совре­мен­ная заме­на тому, что Microsoft рань­ше назы­вал Roaming User Profiles. Самый боль­шой их недо­ста­ток был в том, что про­фи­ли хра­ни­лись на кон­трол­ле­ре доме­на. А кон­трол­лер — это, сюр­приз-сюр­приз, не фай­ло­вый сер­вер. Нех­ре­на на нём хра­нить вся­кий хлам, типа деск­топ­ных ико­нок, AppData, эски­зов и про­чей фай­ло­по­мой­ки.

FSLogix рабо­та­ет по-дру­го­му: для каж­до­го поль­зо­ва­те­ля, логи­ня­ще­го­ся в систе­му, созда­ёт­ся пер­со­наль­ный VHDX-файл, кото­рый мон­ти­ру­ет­ся как его про­филь. Хра­нит­ся VHDX уже пра­виль­но — на фай­ло­вом сер­ве­ре. Поэто­му куда бы ты ни зало­ги­ни­лась — хоть на физи­че­скую маши­ну, хоть на VDI — ты вез­де полу­ча­ешь свой рiд­ний про­филь со все­ми настрой­ка­ми. Для луч­ше­го эффек­та про­фи­ли жела­тель­но дер­жать на шаре, сто­я­щей на SSD, и непло­хо бы, что­бы фай­ло­вый сер­вер был под­клю­чён, как у боль­ших дяде­нек, через 10+ гига­бит.

Самое рас­про­стра­нён­ное при­ме­не­ние FSLogix — фер­мы вир­ту­аль­ных деск­то­пов. Ага, это имен­но туда мне недав­но при­шлось впи­сать 66 тупо­ры­лых поль­зо­ва­те­лей, из кото­рых отдель­ные граж­дане вме­сто .com писа­ли .cum. Не хочу даже думать, какие сай­ты они до это­го посе­ща­ли. Мда.

Что­бы вклю­чить FSLogix, надо ска­чать кли­ент, поста­вить его на каж­дую кли­ент­скую маши­ну (мож­но через груп­по­вые поли­ти­ки), а затем засу­нуть ADMX/ADML-шаб­ло­ны в SYSVOL на все кон­трол­ле­ры доме­нов, как поло­же­но, что­бы появи­лась новая груп­по­вая поли­ти­ка.

Всё нуж­ное берёт­ся здесь:
https://learn.microsoft.com/en-us/fslogix/

Даль­ше на фай­ло­вом сер­ве­ре созда­ёшь шару (жела­тель­но скры­тую $, что­бы юзве­ри уша­стые туда не лез­ли), про­пи­сы­ва­ешь её в поли­ти­ке как место хра­не­ния про­фи­лей — и алга, ком­со­мол.

Самое слож­ное — настро­ить раз­ре­ше­ния НА ШАРЕ ТОЧНО ТАК, КАК НАДО, ина­че FSLogix будет устра­и­вать тебе цирк с коня­ми и каж­дый раз выки­ды­вать «Access Denied». Вот докУ­мент, кото­рый надо читать очень вни­ма­тель­но. Мне пона­до­би­лось два дня пля­сок с буб­ном и заячьей лап­кой, что­бы всё нако­нец зара­бо­та­ло:
https://learn.microsoft.com/en-us/fslogix/how-to-configure-storage-permissions

Для луч­шей иллю­стра­ции чув­стви­тель­но­сти прав: при пра­виль­но выстав­лен­ных ACL коман­да mkdir на этой шаре с кли­ент­ской маши­ны долж­на успеш­но созда­вать пап­ку.
Но вот попыт­ка создать файл (напри­мер, New-Item) долж­на отфут­бо­ли­вать­ся с Access Denied.
Так FSLogix и опре­де­ля­ет, что дере­во раз­ре­ше­ний настро­е­но иде­аль­но: дирек­то­рию сде­лать мож­но, файл — нель­зя. Если это пове­де­ние не сов­па­да­ет — зна­чит, пра­ва опять где-то поеха­ли, и пора доста­вать бубен.

Но зато потом — вах, дара­гой, кра­со­та, слю­щай. Куда ни зай­дёшь — про­филь под­цеп­ля­ет­ся авто­ма­ти­че­ски, всё рабо­та­ет быст­ро, чисто и про­зрач­но.
Кере­мен­дую.

Сисадминско-ИИшно-рабочее

Дано: отка­зо­устой­чи­вый кла­стер Hyper‑V.
Надо: обес­пе­чить сорок рыл вир­ту­аль­ны­ми деск­то­па­ми на Windows 11.

Дела­ем сорок кло­нов оди­на­ко­вых вир­ту­а­лок. Теперь нуж­но раз­да­вать их поль­зо­ва­те­лям так, что­бы они друг дру­гу на пят­ки не насту­па­ли: что­бы соеди­не­ние попа­да­ло на сво­бод­ную маши­ну, при­чём авто­ма­ти­че­ски.

Какие вари­ан­ты реше­ния?

Офи­ци­аль­ный RDS от Microsoft. Сто­ит каких-то совер­шен­но невме­ня­е­мых денег — по 220 монет за рыло (CAL, client access license)! Это, на мину­точ­ку, доро­же, чем лицен­зия на Вин­ду!

Но мож­но сде­лать своё реше­ние — ничем не хуже, из гов­на и палок, и совер­шен­но бес­плат­но.

Пона­до­бит­ся:

Одна машин­ка под Linux. На неё ста­вим nginx, кото­рый будет рабо­тать кро­ко­ди­лом балан­си­ров­щи­ком нагруз­ки. Цеп­лять­ся люди будут имен­но к нему — а он будет читать спи­сок доступ­ных вир­ту­а­лок из фай­ла available.conf, и раз­да­вать траф­фик на них:
stream {
upstream rdp_pool {
least_conn;
include /etc/nginx/upstreams/available.conf;
}

server {
listen 3389;
proxy_pass rdp_pool;
proxy_timeout 10m;
proxy_connect_timeout 5s;
}
}

А available.conf посто­ян­но обнов­ля­ет­ся дру­гим скрип­том — на Python.
Этот скрипт под­ни­ма­ет кро­хот­ный веб-сер­вер на Flask, в кото­рый каж­дая вир­ту­ал­ка при­сы­ла­ет свой ста­тус: «заня­то» или «сво­бод­но».

Ста­тус они полу­ча­ют с помо­щью встро­ен­ной коман­ды Windows:
qwinsta | Select-String "Active"

Если выво­дит­ся хоть что-то — маши­на заня­та. Даль­ше PowerShell-скрипт фор­ми­ру­ет JSON и шлёт его на Flask через Invoke-RestMethod.

PowerShell-скрипт добав­ля­ем в Task Scheduler, раз в мину­ту — и впер­дё.

Пито­нов­ский скрипт доволь­но замух­рёж­ный (в хоро­шем смыс­ле), и я его тут выкла­ды­вать не буду. Ска­жу толь­ко, что он не толь­ко добав­ля­ет сво­бод­ные маши­ны, но и чистит пул: выки­ды­ва­ет те вир­ту­ал­ки, кото­рые заня­ты, либо кото­рые не при­сы­ла­ли свой ста­тус в тече­ние двух минут — пото­му что если вир­ту­ал­ка выклю­че­на, послать ста­тус она, разу­ме­ет­ся, не может. За этим надо сле­дить.

Всё это было при­ду­ма­но и реа­ли­зо­ва­но при помо­щи Кейт — так я назы­ваю свою ChatGPT-чку.
Без­услов­но, под моим чут­ким руко­вод­ством:

— А что будет, если вир­ту­ал­ку выклю­чить?
— Ах да, сло­ма­ет­ся. Надо обно­вить скрипт, что­бы ста­рые маши­ны уда­лял, вот так: [код].

Полу­чи­лось бы у меня всё это вопло­тить само­сто­я­тель­но? Конеч­но. И не такое при­хо­ди­лось делать.
Но, япон­ский бог, это заня­ло бы уйму вре­ме­ни: мне при­шлось бы отдель­но выяс­нять, как запус­кать Flask-сер­вер, как слать JSON из PowerShell, как его при­ни­мать, как менять кон­фи­ги nginx на лету, и так далее.

А тут — всё полу­чи­лось бук­валь­но за пару часов.

Не знаю, как в дру­гих IT-про­фес­си­ях, но в сисад­мин­стве ИИ — это чудо­вищ­ной мощ­но­сти умно­жи­тель силы, кото­рый поз­во­ля­ет за то же вре­мя делать гораз­до более слож­ные про­ек­ты.

И да, при­ят­но, япон­ский бог — когда из слож­ной, непо­нят­ной зада­чи полу­ча­ет­ся кра­си­вое, рабо­та­ю­щее реше­ние.

День великого онбординга (матерное)

Сего­дня у нас вели­кий день — мас­со­вое засе­ле­ние поль­зо­ва­те­лей наше­го кли­ен­та в новую систе­му.
Систе­ма неболь­шая — все­го 66 поль­зо­ва­те­лей.

Я теперь пони­маю, поче­му Дан­те не опи­сал деся­то­го кру­га ада — про­сто не успел дожить до мас­со­во­го онбор­дин­га тупых юзве­рей в Entra ID.

11 поль­зо­ва­те­лей ско­пи­ро­ва­ли в пароль лиш­ний про­бел в кон­це и ска­за­ли, что “пароль не рабо­та­ет”.
Пяте­рым при­шлось пароль сбра­сы­вать повтор­но — види­мо, из соли­дар­но­сти.
Двое вме­сто .com напи­са­ли .cum — и я ста­ра­юсь не заду­мы­вать­ся, о чём они меч­та­ли в тот момент.
Семе­ро успеш­но забло­ки­ро­ва­ли свои учёт­ки, даже не успев в них вой­ти.
Трое так мед­лен­но иска­ли и доста­ва­ли теле­фон, что­бы настро­ить 2FA, что Microsoft Authenticator устал ждать и вышел из чата (тай­маут — 60 секунд, меж­ду про­чим). После это­го им в рыло при­ле­те­ло «session timed out», и они, разу­ме­ет­ся, пожа­ло­ва­лись, что что-то не рабо­та­ет.
Чет­ве­ро пыта­лись вой­ти под ста­ры­ми логи­на­ми и тоже заяви­ли, что “систе­ма сло­ма­на”.
Двое уста­но­ви­ли не тот VPN.
Один рас­пе­ча­тал пись­мо с вре­мен­ным (!!!) паро­лем — “что­бы не поте­рять”.
Двое исполь­зо­ва­ли теле­фон супру­гов для 2FA — “пото­му что под рукой был”.
Пяте­ро жда­ли по пят­на­дцать минут, пока “систе­ма загру­зит­ся”, забыв нажать Next.
И вишен­ка на тор­те — один чело­век напи­сал CAPS LOCK’ом всё под­ряд и не мог понять, поче­му “не при­ни­ма­ет­ся пра­виль­ный пароль”.

Мои нер­вы вро­де бы были сталь­ные, а ока­за­лись пла­сти­ли­но­вые.

Пой­ду зава­рю ещё кофе — если, конеч­но, никто не попы­тал­ся авто­ри­зо­вать­ся в кофе­ма­шине с про­бе­лом в паро­ле…
…и не забло­ки­ро­вал её нахуй.

Ути-пути

Какая вне­зап­но кавай­ная сер­вер­ная!!

Это ама­зо­нов­ский дата-центр, обслу­жи­ва­ю­щий вычис­ли­тель­ный кла­стер «Рей­нир», на кото­ром рабо­та­ет систе­ма искус­ствен­но­го интел­лек­та «Клод» ком­па­нии Антро­пик.

Игри­во-розо­вые шка­фы на перед­нем плане — это бло­ки пита­ния и жид­кост­но­го охла­жде­ния для каж­дой «ули­цы» сто­ек. Пита­ют­ся они, как пра­ви­ло, от трёх­фаз­ных 480 вольт. Оран­же­вое — несу­щие кон­струк­ции, жёл­тое, по всей види­мо­сти, — сило­вые линии, синее — ком­му­ни­ка­ции, серое — теп­ло­но­си­тель. Всё про­ду­ма­но до мело­чей — япон­ский бог, тут при­драть­ся реши­тель­но не к чему. Неспе­ци­а­ли­сту, навер­ное, непо­нят­но, чем я тут так вос­хи­ща­юсь, но поверь­те мне — это очень кру­то при­ду­ма­но, сде­ла­но, и выпол­не­но.

Рабо­тать, впро­чем, в таком месте, навер­ное, непро­сто. Вон сотруд­ни­ца совер­шен­но пра­виль­но наде­ла науш­ни­ки — шум в подоб­ном дата-цен­тре, долж­но быть, сто­ит про­сто нече­ло­ве­че­ский.

Даже страш­но пред­ста­вить, сколь­ко кило­ватт жрёт вся эта кра­со­та в сум­ме.

Вот так, доро­гие дру­зиа… выгля­дит капи­та­лизм.

Отсю­да и ещё фоток.

Анализ падения Амазона

Ама­зо­нов­цы опуб­ли­ко­ва­ли тех­ни­че­ский раз­бор при­чин недав­не­го паде­ния AWS. То, что вино­ват был DNS, уже было извест­но, но лич­но мне было любо­пыт­но понять — что же имен­но они смог­ли сло­мать в систе­ме, кото­рая, по идее, долж­на быть одной из самых про­стых и надёж­ных в инфра­струк­ту­ре интер­не­та?

Ока­за­лось, в их реа­ли­за­ции DNS скры­вал­ся ранее неза­ме­чен­ный баг, при­вед­ший к клас­си­че­ской race condition — ситу­а­ции, когда несколь­ко про­цес­сов или нитей про­цес­са одно­вре­мен­но пыта­ют­ся полу­чить доступ к обще­му ресур­су и в ито­ге меша­ют друг дру­гу. Такое состя­за­ние закан­чи­ва­ет­ся тем, что ресурс «зали­па­ет», а вся систе­ма рушит­ся, как кар­точ­ный домик.

При­знать­ся, изна­чаль­но у меня было подо­зре­ние на на чело­ве­че­ский фак­тор — дума­лось, что какой-нибудь неопыт­ный сисад­мин дёр­нул не за ту руч­ку, посо­ве­то­вав­шись с ИИ, но не спро­сив стар­ших това­ри­щей. Такое быва­ет, и мне тоже дово­ди­лось такое устра­и­вать. Но, как выяс­ни­лось, всё ока­за­лось куда глЫб­же.

Боль­ше все­го впе­чат­лил мас­штаб тре­ша, уга­ра, и бед­ла­ма с содо­ми­ей, вызван­ных сбо­ем. Лег­ла такая туча сер­ви­сов, что толь­ко успе­вай пам­пер­сы менять. Наши систе­мы, к сча­стью, напря­мую не постра­да­ли — но один из наших вен­до­ров ощу­тил послед­ствия спол­на.

Хочет­ся верить, что в Amazon извле­кут из это­го инци­ден­та пра­виль­ные уро­ки — ведь даже гиган­там вре­мя от вре­ме­ни полез­но вспом­нить, что совер­шен­ство инфра­струк­ту­ры не отме­ня­ет зако­нов веро­ят­но­сти и чело­ве­че­ской при­ро­ды.