Vai al contenuto principale

#windows

BTR Reforged: come il driver firmato di Defender può cancellare le difese di Windows all’avvio

Un driver che Windows non può bloccarePer anni la regola d’oro della difesa contro gli attacchi BYOVD (Bring Your Own Vulnerable Driver) è stata sempl

Altro...

Un driver che Windows non può bloccarePer anni la regola d’oro della difesa contro gli attacchi BYOVD (Bring Your Own Vulnerable Driver) è stata semplice: se un driver firmato è vulnerabile, lo si aggiunge alla Microsoft Vulnerable Driver Blocklist e lo si blocca via #Windows Defender Application Control (WDAC) o HVCI. Il problema è cosa succede quando il driver “vulnerabile” non è di terze parti, ma fa parte di Windows Defender stesso, ed è necessario al suo funzionamento.

È esattamente lo scenario descritto da Check Point Research nella pubblicazione “BTR Reforged”, firmata dal ricercatore Jiří Vinopal: il driver BTR.sys (Boot Time Removal Tool), componente integrato di Defender e presente in ogni installazione Windows da Windows 7 fino a Windows 11 25H2, può essere estratto, installato manualmente ed eseguito in una finestra di avvio in cui opera con pieni privilegi #kernel (Ring 0), prima che i servizi di sicurezza siano attivi.

Cos’è BTR.sys e perché esisteBTR.sys non è un file a sé stante distribuito con l’installer: è incorporato come risorsa (BOOTTIMETOOL) dentro MpEngine.dll, il motore di scansione di Defender. Il suo scopo legittimo è rimuovere #malware particolarmente persistente durante il boot, quando il filesystem è ancora scrivibile ma i processi in user-mode non sono ancora attivi: file bloccati, chiavi di registro danneggiate, artefatti lasciati da rootkit. Per fare questo ha bisogno, ed è progettato per avere, la capacità di cancellare file protetti, spostare oggetti in percorsi come System32\drivers ed eliminare o riscrivere chiavi di registro senza i normali controlli ACL.

Il punto debole individuato da Vinopal non è un bug di memoria o un buffer overflow, ma un problema architetturale di trust boundary: il protocollo di comunicazione con il driver è proprietario e non documentato, ma non è mai cambiato in modo sostanziale. Ogni pacchetto di configurazione inviato a BTR.sys è cifrato con RC4 usando una chiave a 256 byte hardcoded nel binario, rimasta identica per 18 versioni a 64 bit del driver. Una volta ricostruito il formato del protocollo, chiunque può parlare con BTR.sys come farebbe Defender stesso.

Come funziona l’attaccoIl proof-of-concept pubblico, denominato BTR_CLI, segue tre fasi:

Estrazione: individua MpEngine.dll sul sistema e ne estrae il binario BTR.sys incorporato.

Installazione “silenziosa”: registra il driver come servizio scrivendo direttamente nelle chiavi di registro sotto HKLM, bypassando completamente il Service Control Manager. Questo significa nessun log applicativo standard e, soprattutto, nessun Windows Event ID 7045 (“Service Installed”), l’evento su cui si basano molte regole SIEM per rilevare l’installazione di nuovi driver.

Esecuzione nella “golden window”: durante la finestra di avvio in cui il filesystem è scrivibile ma Defender non ha ancora avviato i propri servizi di protezione, BTR.sys esegue in Ring 0 le operazioni richieste: cancellazione di file e directory bloccati (inclusi eseguibili di EDR e antivirus di terze parti), spostamento di file arbitrari in percorsi di sistema e manipolazione di chiavi di registro critiche.

Il requisito d’accesso non è banale ma nemmeno estremo: serve un account amministratore che possieda (o a cui venga assegnato, dato che BTR_CLI se ne occupa automaticamente per gli account già idonei) il privilegio SeLoadDriverPrivilege. È lo stesso privilegio necessario per caricare qualunque driver kernel, quindi in molti ambienti aziendali è più diffuso di quanto si pensi tra account di servizio e amministratori locali.

Perché non basta la blocklistLa differenza sostanziale rispetto ai classici attacchi BYOVD è che qui non si tratta di un driver di terze parti compromesso da revocare. BTR.sys è parte integrante di Defender: aggiungerlo alla Vulnerable Driver Blocklist o bloccarlo tramite WDAC significherebbe rompere una funzionalità legittima di Defender su tutte le macchine Windows. Microsoft Security Response Center, contattato da Check Point, ha confermato che la scoperta non soddisfa i criteri per una #patch immediata, perché la tecnica presuppone privilegi amministrativi già ottenuti dall’attaccante — la classica linea di demarcazione “non è una vulnerabilità se serve già essere admin”. Il repository pubblico del proof-of-concept riporta inoltre l’indicazione “no patch is planned”, per quanto non si tratti di una dichiarazione ufficiale confermata pubblicamente da Microsoft.

Per un sistemista questo cambia l’approccio: non è un problema che si risolve con l’ennesimo aggiornamento, ma con il monitoraggio e con il controllo rigoroso di chi può caricare driver.

Come rilevare l’abuso in produzioneCheck Point Research suggerisce alcuni indicatori concreti da integrare nelle regole di detection, in particolare su ambienti che usano Sysmon:

Monitorare gli Alternate Data Stream (Sysmon Event ID 15) il cui nome termina con .sys:changelist, una firma tipica del comportamento di BTR.sys durante l’installazione.

Correlare eventi di registro (Sysmon RegistryEvent, ID 12-13) relativi al gruppo di servizio “Boot Bus Extender” in assenza del corrispondente Event ID 7045: se il driver viene registrato in quel gruppo senza che il Service Control Manager risulti coinvolto, è un forte indicatore di installazione manuale.

Osservare la creazione e cancellazione rapida del file \SystemRoot\Temp\BootClean.log da parte del processo System (PID 4): è l’artefatto lasciato dall’esecuzione del BTR durante il boot.

Queste regole non richiedono un nuovo prodotto: si possono implementare con la configurazione Sysmon esistente e instradarle verso il proprio SIEM (#Sentinel, Splunk, Elastic) come regole di correlazione dedicate.

Mitigazione: il controllo primario resta l’accessoDato che non esiste una patch e la blocklist non è applicabile, la mitigazione più efficace, secondo i ricercatori, è restringere l’assegnazione del privilegio SeLoadDriverPrivilege tramite Group Policy, riducendolo ai soli account e gruppi che ne hanno realmente bisogno. In pratica:

Verificare in Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment > Load and unload device drivers quali account e gruppi sono attualmente autorizzati.

Rimuovere l’assegnazione implicita agli amministratori locali dove non strettamente necessaria, valutando l’uso di Privileged Access Workstation (PAW) per le operazioni che richiedono davvero il caricamento di driver.

Applicare il principio dei privilegi minimi anche agli account di servizio, spesso dimenticati in questo tipo di audit.

Integrare le regole Sysmon indicate sopra in un dashboard di detection dedicato, dato che la tecnica è pensata per non lasciare tracce negli event log standard.

Il caso BTR Reforged è un promemoria utile: man mano che gli attaccanti spostano l’attenzione dai driver di terze parti facilmente blocklistabili verso componenti “fidati per definizione” dei sistemi operativi, il perimetro difensivo si sposta sempre di più dal software alla gestione dei privilegi. Anche in assenza di una patch, un controllo rigoroso di chi può caricare driver e una detection basata su comportamento restano la difesa più solida disponibile oggi.

Fonte: Check Point Research, “BTR Reforged: Weaponizing Defender’s Remediation Driver as a Kernel Operation Primitive”, ripreso da 4sysops.

#sicurezza #windows

0 0 1

GeoPulse: riprendi il controllo dei tuoi spostamenti
#windows #macos #linux #selfhosted @opensource@diggita.com

https://webappsmagazine.blogspot.co

Altro...

GeoPulse: riprendi il controllo dei tuoi spostamenti
#windows #macos #linux #selfhosted @opensource@diggita.com

https://webappsmagazine.blogspot.com/2026/08/geopulse-riprendi-il-controllo-dei-tuoi.html

#linux #selfhosted #windows #macos

0 0 1

#fensterfreitag

"Dich" / "You"

Shot on:

• Sony a6000

• Sony FE 85mm f/1.8

#sony #a6000 #85mm #bremen #germany #streetphotography #windows #win

Altro...

#fensterfreitag

"Dich" / "You"

Shot on:

• Sony a6000

• Sony FE 85mm f/1.8

#sony #a6000 #85mm #bremen #germany #streetphotography #windows #windowfriday #reflection #pr #advertisement #amateurphotography #photography #urban #urbanphotography #nightphotography

#windows #photography #sony #urban #streetphotography #urbanphotography #germany #reflection #amateurphotography #nightphotography #fensterfreitag #windowfriday #bremen #a6000 #85mm #advertisement #pr

0 0 2

sofitel

I liked the orange - almost golden - windows at #sofitel in #warsaw

#warsaw #poland #streetphotography #architecture #urbanphotography #phot

Altro...

sofitel

I liked the orange - almost golden - windows at #sofitel in #warsaw

#warsaw #poland #streetphotography #architecture #urbanphotography #photography #Fotografie #Fensterfreitag #WindowFriday #Windows

A large, modernist building with the name "Sofitel" displayed at the top. The structure features a grid-like facade with numerous square windows, some of which have orange-golden-tinted glass. The building is set against a cloudy sky, with people walking and interacting in the open plaza in front of it. The plaza has a paved surface, and there are flags visible on the left side of the image.

#windows #photography #architecture #fotografie #streetphotography #urbanphotography #poland #fensterfreitag #windowfriday #warsaw #sofitel

0 0 2

#FensterFreitag #WindowFriday #Windows #WindowView #ThroughTheWindow #UrbanDetails #UrbanPhotography #ArchitecturePhotography #IndustrialArchitecture

Altro...

#FensterFreitag #WindowFriday #Windows #WindowView #ThroughTheWindow #UrbanDetails #UrbanPhotography #ArchitecturePhotography #IndustrialArchitecture #OldWindows #WindowPhotography #CityTextures #Tulips #StillLife #Photography

#windows #photography #architecturephotography #urbanphotography #stilllife #fensterfreitag #windowfriday #industrialarchitecture #throughthewindow #windowview #windowphotography #urbandetails #tulips #citytextures #oldwindows

0 0 2

Monts du Bugey, France

Nikon F4 / 50mm 1,4D / Ilford fp4

#fotografie #foto #photographie #filmisalive #filmisnotdead #believeinfilm #ilfordfp4 #blac

Altro...

Monts du Bugey, France

Nikon F4 / 50mm 1,4D / Ilford fp4

#fotografie #foto #photographie #filmisalive #filmisnotdead #believeinfilm #ilfordfp4 #blackandwhite #blackandwhitefilmphotography #35mm #nikon #argentique #france #ilford #analogphotography #photo #filmphotography #photography #FensterFreitag #fensterfreitag #windows

#foto #windows #photography #photographie #photo #fotografie #blackandwhite #france #nikon #filmphotography #analogphotography #35mm #believeinfilm #filmisnotdead #ilford #fensterfreitag #filmisalive #argentique #blackandwhitefilmphotography #ilfordfp4

0 0 1

Crittografia post-quantistica: perché il threat modeling non può più aspettare (con esempi in .NET 10)

C’è una minaccia alla #crittografia moderna che non richiede un computer quantistico funzionante oggi per essere reale oggi: si chiama “harvest now, d

Altro...

C’è una minaccia alla #crittografia moderna che non richiede un computer quantistico funzionante oggi per essere reale oggi: si chiama “harvest now, decrypt later” (raccogli ora, decifra dopo). Un attaccante con risorse sufficienti — uno stato-nazione, tipicamente — può intercettare e archiviare traffico cifrato con RSA o ECC adesso, per poi decifrarlo tra qualche anno, quando computer quantistici sufficientemente potenti saranno disponibili. Per dati con un ciclo di vita lungo — segreti industriali, cartelle cliniche, comunicazioni diplomatiche, chiavi di firma di lungo periodo — la finestra di esposizione è già aperta, anche se il computer quantistico “rompi-RSA” non esiste ancora.

È in questo contesto che Microsoft ha recentemente pubblicato una guida al threat modeling applicato specificamente alla migrazione verso la crittografia post-quantistica (PQC), invitando organizzazioni e team di sviluppo a non aspettare la disponibilità degli algoritmi per cominciare a muoversi.

Perché serve il threat modeling, e non solo un elenco di algoritmiIl problema centrale che Microsoft evidenzia non è tecnico in senso stretto, è organizzativo: la maggior parte delle aziende non ha un inventario completo di dove e come viene usata la crittografia nei propri sistemi. Certificati TLS, librerie di firma incorporate in applicazioni legacy, hardware embedded con chiavi hard-coded, protocolli proprietari che usano RSA “perché si è sempre fatto così” — sono tutte dipendenze crittografiche nascoste che un aggiornamento generico non intercetta.

Il threat modeling applicato alla PQC serve esattamente a questo: mappare asset, flussi di dati, confini di fiducia (trust boundary) e controlli di sicurezza esistenti per far emergere queste dipendenze prima che diventino un problema urgente sotto pressione regolatoria o, peggio, sotto attacco. Concretamente, significa rispondere a domande come: quali sistemi cifrano dati che devono restare confidenziali per più di 5-10 anni? Quali certificati di firma del codice hanno una validità che si estende oltre il 2030? Quali protocolli interni non supportano l’agilità crittografica, cioè non permettono di sostituire un algoritmo senza riscrivere l’applicazione?

Gli algoritmi: da NIST a nomi che iniziano a essere familiariDopo anni di standardizzazione, il NIST ha pubblicato tre standard che è ormai il momento di conoscere, perché stanno entrando nei prodotti che usiamo quotidianamente:

ML-KEM (Module-Lattice Key Encapsulation Mechanism, FIPS 203) — sostituisce lo scambio di chiavi basato su RSA o curve ellittiche (ECDH). È l’algoritmo che #entra in gioco nell’handshake TLS per stabilire un segreto condiviso.

ML-DSA (Module-Lattice Digital Signature Algorithm, FIPS 204) — l’algoritmo di firma digitale post-quantistico, pensato come sostituto di RSA e ECDSA per firmare certificati, codice e messaggi.

SLH-DSA (Stateless Hash-Based Digital Signature Algorithm, FIPS 205) — un algoritmo di firma alternativo, basato su funzioni hash anziché su reticoli, pensato come #backup conservativo nel caso in cui in futuro emergano debolezze crittanalitiche nei problemi su reticolo.

Sul fronte delle raccomandazioni pratiche, Microsoft insiste su un punto spesso sottovalutato: la migrazione a TLS 1.3 è il prerequisito, non un dettaglio. TLS 1.2 non supporta i meccanismi ibridi necessari per introdurre ML-KEM accanto agli algoritmi classici, e restare su TLS 1.2 significa restare bloccati fuori dalla transizione PQC anche quando gli algoritmi saranno pronti. In parallelo, si consiglia di alzare l’asticella anche sulla crittografia simmetrica e sulle funzioni hash, adottando AES-256 e SHA-384 come standard, per mantenere margini di sicurezza adeguati anche in scenari quantistici (dove alcuni attacchi, come Grover, dimezzano di fatto la sicurezza effettiva degli algoritmi simmetrici).

La timeline che Microsoft si è data per la transizione dei propri prodotti e servizi critici è il 2029 — una data che vale la pena tenere a mente come riferimento di settore, anche per pianificare le proprie migrazioni interne con lo stesso ordine di grandezza.

Cosa c’è già oggi: le API disponibiliLa parte più interessante per chi scrive codice è che la PQC non è più solo teoria da paper accademico: le API sono già disponibili e generalmente disponibili (GA) sulle piattaforme Microsoft.

Windows: CNGSu #Windows, il supporto arriva a livello di CNG (Cryptography API: Next Generation), con identificatori di algoritmo dedicati per ML-KEM e ML-DSA utilizzabili tramite le funzioni BCryptGenerateKeyPair e le relative API di key #exchange e firma. Il supporto nativo è arrivato a partire da Windows 11 con gli aggiornamenti di novembre 2025: chi gestisce flotte Windows dovrebbe verificare di essere allineato con le #patch più recenti prima di pianificare qualunque test.

.NET 10: MLKem e MLDsa in System.Security.CryptographyPer chi sviluppa in C#, la notizia più concreta è l’arrivo delle classi MLKem e MLDsa direttamente in System.Security.Cryptography con .NET 10. Ecco un esempio minimo di key encapsulation:

using System.Security.Cryptography;

if (!MLKem.IsSupported)
{
Console.WriteLine("ML-KEM non è supportato su questa piattaforma");
return;
}

MLKemAlgorithm alg = MLKemAlgorithm.MLKem768;

using (MLKem privateKey = MLKem.GenerateKey(alg))
using (MLKem publicKey = MLKem.ImportEncapsulationKey(
alg, privateKey.ExportEncapsulationKey()))
{
publicKey.Encapsulate(out byte[] ciphertext, out byte[] sharedSecret1);
byte[] sharedSecret2 = privateKey.Decapsulate(ciphertext);

bool match = sharedSecret1.AsSpan().SequenceEqual(sharedSecret2);
Console.WriteLine($"I segreti condivisi coincidono: {match}");

}E un esempio di firma con ML-DSA:

MLDsaAlgorithm alg = MLDsaAlgorithm.MLDsa65;

using (MLDsa key = MLDsa.GenerateKey(alg))
{
byte[] data = "Messaggio da firmare"u8.ToArray();
byte[] signature = new byte[alg.SignatureSizeInBytes];

key.SignData(data, signature);
bool verified = key.VerifyData(data, signature);

Console.WriteLine($"Firma verificata: {verified}");

}Entrambe le famiglie di algoritmi sono disponibili in più varianti — MLKem512, MLKem768, MLKem1024 per il key encapsulation, e MLDsa44, MLDsa65, MLDsa87 per la firma — con un compromesso crescente tra sicurezza e dimensione delle chiavi. Ad esempio, per MLDsa65 la chiave pubblica occupa 1952 byte, quella privata 4032 byte e la firma 3309 byte: numeri sensibilmente più grandi rispetto a ECDSA, un dettaglio da tenere presente quando si progettano protocolli o formati di messaggio con vincoli di banda o storage.

Un paio di note pratiche per chi vuole sperimentare da subito: su Linux serve OpenSSL 3.5 o superiore, mentre chi è ancora su .NET Standard 2.0 può accedere alle stesse API tramite il pacchetto NuGet Microsoft.Bcl.Cryptography. Per il supporto lato TLS 1.3, certificati basati su ML-DSA e SLH-DSA funzionano già in scenari di autenticazione quando sia il sistema operativo sia la controparte della connessione supportano i nuovi algoritmi — un altro motivo per cui la coordinazione tra client e server nella transizione non è opzionale.

Da dove cominciare, in praticaPer un team che affronta questo tema per la prima volta, un percorso ragionevole è: primo, effettuare un inventario reale di certificati, librerie crittografiche e protocolli in uso, distinguendo per criticità e durata di vita dei dati protetti; secondo, verificare che l’infrastruttura TLS sia già su 1.3 ovunque possibile, perché è il prerequisito tecnico per tutto il resto; terzo, iniziare a sperimentare le nuove API — su .NET 10 il costo di ingresso è basso, si tratta di poche righe di codice — in ambienti non di produzione, per capire l’impatto su dimensioni di chiavi, firme e tempi di calcolo prima che diventi un requisito con scadenza stretta.

La crittografia post-quantistica non è ancora un’emergenza operativa per la maggior parte delle organizzazioni, ma il messaggio di Microsoft è chiaro: il momento di mappare le proprie dipendenze crittografiche e cominciare a testare gli algoritmi è adesso, non quando arriverà l’obbligo normativo o il primo incidente.

Fonte originale: Microsoft Urges Threat Modeling to Prepare for Post-Quantum Cryptography Migration, Petri IT Knowledgebase

#sicurezza #microsoft #windows #c #net

0 0 1

Central Arcade

https://justin-farrimond.pixels.com/featured/central-arcade-justin-farrimond.html

In this dream you get one last chance to visit JG W

Altro...

Central Arcade

https://justin-farrimond.pixels.com/featured/central-arcade-justin-farrimond.html

In this dream you get one last chance to visit JG Windows in the Central Arcade.
A Tyneside tradition lost to time and so called progress.

#PhotoOfTheDay #Photography #Art #Print #PhotographyIsArt #Yesteryear #Dreamscape #Newcastle #Windows

Colour adjusted portrait photograph showing an entrance to the Central Arcade in Newcastle upon Tyne, England.

#windows #photography #art #photooftheday #print #photographyisart #dreamscape #yesteryear #newcastle

0 0 2

#moodymonday

Shot on:

• Sony a6000

• Sony FE 85mm f/1.8

#sony #a6000 #85mm #bremen #germany #streetphotography #windows #nightphotography #unde

Altro...

#moodymonday

Shot on:

• Sony a6000

• Sony FE 85mm f/1.8

#sony #a6000 #85mm #bremen #germany #streetphotography #windows #nightphotography #underexposed #amateurphotography #urban #streetart #graffiti #lights #moody #photography #architecture #architecturephotography

#windows #photography #architecture #architecturephotography #sony #urban #streetphotography #germany #streetart #lights #amateurphotography #graffiti #nightphotography #bremen #a6000 #85mm #moody #underexposed #moodymonday

0 0 1

227

Olympus OM-D E-M10

Panasonic 12-32mm

#monochrome #blackandwhite #microfourththirds #street #streetphotography #streetsaturday #urban #people

Altro...

227

Olympus OM-D E-M10

Panasonic 12-32mm

#monochrome #blackandwhite #microfourththirds #street #streetphotography #streetsaturday #urban #people #windows #frames #pub #Lichfield #Staffordshire #Day227 #3652026 #project365

#windows #urban #blackandwhite #monochrome #streetphotography #people #street #project365 #microfourththirds #pub #frames #staffordshire #lichfield #streetsaturday #day227

0 0 2

Day 226

#365project + #FensterFreitag

A close-up of the porthole window on the door from yesterday's Doorsday photo. I already didn't want to leave

Altro...

Day 226

#365project + #FensterFreitag

A close-up of the porthole window on the door from yesterday's Doorsday photo. I already didn't want to leave the house today and then I got a bollocking from some cranky old man about taking this photo. fml Remember my motto kids: It's always safe under the blankie. When in doubt, stay in bed.

#WindowFriday #window #Fenster #windows #porthole #nautical #maritimehistory #shipwindow #brass #patina #weathered #texture #texturetuesday #cottagecore #coastalliving #purple #purpledoor #reflection #reflections #windowreflection #closeup #closeupshot #magicinthemundane #photography #Fotografie #amateurphotography

Close-up of a vintage round brass porthole window with a hinge and screw bolt lock. The weathered, oxidised metal is set into a deep purple paneled door. The reflection of townhouses, ship masts, and tree branches can be seen in the porthole glass.

#windows #photography #fotografie #reflection #texture #closeup #amateurphotography #reflections #365project #fensterfreitag #windowfriday #window #fenster #texturetuesday #closeupshot #magicinthemundane #weathered #purple #cottagecore #purpledoor #patina #porthole #windowreflection #brass #nautical #maritimehistory #coastalliving #shipwindow

0 0 1

Walking down a summer street - City life - Aarhus

#peopleinthestreet #downtown #urban #photography #photo #color #cityscape #colour #art #streetphoto

Altro...

Walking down a summer street - City life - Aarhus

#peopleinthestreet #downtown #urban #photography #photo #color #cityscape #colour #art #streetphotography #streetphoto #streetart #street #fineart #fineartphotography #summer #summerday #colors #doors #windows

#windows #photography #urban #photo #art #colors #streetphoto #fineart #fineartphotography #streetphotography #streetart #color #street #cityscape #downtown #colour #doors #summer #summerday #peopleinthestreet

0 0 1

Walking down a summer street - City life - Aarhus

#peopleinthestreet #downtown #urban #photography #photo #color #cityscape #colour #art #streetphoto

Altro...

Walking down a summer street - City life - Aarhus

#peopleinthestreet #downtown #urban #photography #photo #color #cityscape #colour #art #streetphotography #streetphoto #streetart #street #fineart #fineartphotography #summer #summerday #colors #doors #windows

#windows #photography #urban #photo #art #colors #streetphoto #fineart #fineartphotography #streetphotography #streetart #color #street #cityscape #downtown #colour #doors #summer #summerday #peopleinthestreet

0 0 1

Before the Storm

📷️ Ricoh GRIIIX

#myfotokempi

#photography #photo #fotografie #color #ricoh #WindowFriday #FensterFreitag #windows #cityscape #we

Altro...

Before the Storm

📷️ Ricoh GRIIIX

#myfotokempi

#photography #photo #fotografie #color #ricoh #WindowFriday #FensterFreitag #windows #cityscape #weather

This color photograph captures an urban landscape in the hour before a storm. The upper part of the frame is occupied by a dense, heavy sky covered in dark gray, almost black clouds that loom over the city. Thin dark wires stretch across the sky, adding a graphic quality and a sense of tension to the frame. In the center of the composition is a gray panel apartment building with several enclosed balconies that stand out with their light frames against the gloomy walls. On the left, a building with a red roof and a tall antenna are visible. Below, there are tree canopies and bushes. The image conveys a feeling of calm before the storm, eerie silence, and the harsh beauty of urban weather.

#windows #photography #photo #fotografie #color #cityscape #ricoh #weather #fensterfreitag #windowfriday #myfotokempi

0 0 1