* Senhas não são e nem devem ser armazenadas com SHA, pois elas não devem ser criptografadas, mas sim derivadas (o que é bem diferente). Pra isso, usa-se um algoritmo de derivação de senhas. O mais famoso e usado é o bcrypt. Ótimo, por sinal. Se algum sistema que tu usas, corra.
* Além da própria senha, a string de derivação contém o usuário, e também um termo chamado de salt.
* Bancos vazados são vazados em hashes e, sim, nesse momento, nem a empresa do sistema e nem os hackers sabem da sua senha.
* Ocorre é que há um esforço computacional assíncrono na comunidade cracker para criar o que chamam de rainbow tables. Esse esforço é bastante grande e consiste em derivar combinações de senhas com logins e salts sobre todo o banco vazado a fim de identificar conformidades.
* Eventualmente, após bastante GPU usada, são criadas essas rainbow tables e vendidas da deepweb.
* É bastante raro uma big tech ter seus bancos vazados e os hackers raramente tentam isso. A estratégia principal é atacar serviços menores e, eventualmente descoberta a senha, tentar o uso desse par de login e senha nos serviços grandes. Daí o mantra de nunca repetir senha e bom seria não repetir login também. Além disso, 2FA costuma ajudar horrores.
* Sou economista. Essa é minha formação acadêmica. Além disso, tenho décadas de experiência profissional com programação. Muito sistema de login já implementei e já ensinei tranquilamente bem mais de mil alunos a fazerem isso. Contudo, NÃO SOU UM PROFISSIONAL DE SEGURANÇA DA INFORMAÇÃO, então, abuse do seu direito de checar o que eu disse sobre o processo de hackeamento. Posso estar falando alguma bobagem ou estar desatualizado, mas é algo bem parecido com isso que fazem.