In breve: possibile per nascondere la lingua che stai utilizzando nel back-end. Esempio banale: considera una pagina "Hello World"; sarebbe estremamente difficile capire quale framework / linguaggio fosse usato nel back-end (assumendo che le cose di base come i cookie di sessione siano impostate manualmente o non siano in uso).
Tuttavia, il punto delle strutture è quello di risparmiare la necessità di ri-implementare le funzionalità e di farti lavorare in un modo standardizzato. Quasi tutti i framework hanno le loro specifiche piccole rivelazioni che li daranno via, se si guarda abbastanza vicino. Come altri hanno sottolineato, è possibile provare a nasconderlo, usando la configurazione o ri-implementando varie funzionalità standard. Tuttavia, direi che per i siti di grandi dimensioni sarebbe estremamente difficile nascondere completamente tutto, e anche se lo avessi fatto, avresti usato pochissimo del tuo framework.
In sintesi, direi che è quasi sempre possibile avere una buona idea di ciò che viene utilizzato sotto (con un esame attento e un pungolo). Nascondere il framework utilizzato è possibile, ma diventa rapidamente non fattibile per i siti di grandi dimensioni.
Le risposte precedenti hanno alcuni buoni esempi di varie spie che hanno framework e linguaggi. Vorrei aggiungere che vari motori di visualizzazione hanno comportamenti specifici relativi agli spazi bianchi che possono essere utilizzati per identificarli. Il motore Razor utilizzato in MVC3 + ha alcune stranezze abbastanza specifiche che potrebbero essere utilizzate per identificarlo, o almeno, restringere la lista dei sospetti (anche in questo caso, si può fare un passo laterale, ma poi, lo stai usando?).