TrueCrypt Forever

O TrueCrypt é um tanto antigo e um projeto descontinuado, porém, tem uma história muito interessante e vou contar um pouco sobre ela em um artigo mão na massa.

[ Hits: 687 ]

Por: Carlos Affonso Henriques. em 16/10/2020


Introdução



História do Desaparecimento

O TrueCrypt teve um desaparecimento repentino e misterioso. Do nada, seus desenvolvedores e mantenedores alegaram que ele não era seguro e ponto.

Curiosamente, o seu desaparecimento deu-se em 2014, 5 anos após 1 ano de tentativas frustradas do FBI em quebrar a criptografia de um disco rígido do banqueiro Daniel Dantas na operação Satyagraha.

Claro que ainda não foi por isso, mas sim após e evento "Snowden Files". É... Snowden, Glenn Greenwald, Laura Poitras, Pepe Escobar, Oliver Stone, Michael More e uma legião de jornalistas investigativos usam e aprovam o TrueCrypt.

Sua ultima versão funcional é a 7.1, que pode ser obtida em:
E também a disponibilizo em meu Github. Ao que tudo indica, seus desenvolvedores receberam uma "proposal that cannot be refused".

Instalação e Uso

A distro que usei para escrever esse artigo foi Debian, mas não haverá maiores empecilhos para rodar em outras distros, podendo variar o nome dos pacotes e paths, mas no gera,l é tudo a mesma coisa.

Os pacotes necessários são:
  • Tor (não o browser e sim o Onion Router);
  • torsocks;
  • netcat-openbsd (no CentOS/RHEL, pode ser encontrado como "nmap-ncat");
  • libdigest-sha3-perl (caso não deseje usar o Sha3sum para gerar os passwords é dispensável, entretanto, terão que alterar os scripts. No CentOS e distros RH-like, o pacote se chama "sha3sum" e está disponível no repositório EPEL);
  • shred (vem instalado por default na maioria das distros e é usado para apagamento seguro de arquivos tornando impossível sua recuperação);
  • truecrypt-7.1a-linux-console-x64 ( baixe-o dos links que citei acima).

No Debian:

# apt-get update
# apt-get install tor torsocks netcat-openbsd libdigest-sha3-perl -y

Para instalar o TrueCrypt, basta descompactar o tar.gz e executar o instalador que é de modo interativo:

# tar -zxf truecrypt-7.1a-linux-console-x86.tar.gz
# ./truecrypt-7.1a-setup-console-x64

Se o seu sistema for de 32 bits:

# ./truecrypt-7.1a-setup-console-x86

O SSH deverá ter autenticação por chave pública, não vou explicar para não alongar demais o artigo. Há muitos tutoriais sobre isso na internet.

Tor Onion Router

Isso! Vamos usar o Tor para sofisticar a solução!

Não vou adentrar na instalação do Tor e do TorSocks, pois há muito material sobre o assunto na internet e pode variar um pouco de uma distribuição para outra. Fica apenas o arquivo de configuração que será usado em ambas as pontas.

Arquivo: /etc/tor/torrc

NewCircuitPeriod 8
OptimisticData 1
DNSPort auto
RunAsDaemon 1
KeepalivePeriod 10
HiddenServiceDir /var/lib/tor/hidden_ssh

# É muito comum que provedores de acesso bloqueiem o tráfego através de portas usuais de serviços como SSH, FTP, HTTP e HTTPS
# Se for esse o seu caso coloque uma outra porta:
# Ex: HiddenServicePort 3456 127.0.0.1:22
HiddenServicePort 22 127.0.0.1:22

# Essa parte é legal! Evitar tanto quanto o possível os 5 olhos que hoje já passam de 40. Por isso trafegaremos apenas pela Mãe Rússia.
# Para os que têm medo dos russos basta comentar as 3 linhas abaixo, e ficar à mercê da NSA, Mossad, CIA etc.

EntryNodes {ru} StrictNodes 1

ExcludeNodes {br},{ac},{af},{ax},{al},{dz},{ad},{ao},{ai},{aq},{ag},{ar},{am},{aw},{au},{at},{az},{bs},{bh},{bd},{bb},{by},{be},{bz},{bj},{bm},{bt},{bo},{ba},{bw},{bv},{io},{vg},{bn},{bg},{bf},{bi},{kh},{cm},{ca},{cv},{ky},{cf},{td},{cl},{cx},{cc},{co},{km},{cg},{cd},{ck},{cr},{ci},{hr},{cu},{cy},{cz},{dk},{dj},{dm},{do},{tp},{ec},{eg},{sv},{gq},{ee},{et},{fk},{fo},{fj},{fi},{fr},{fx},{gf},{pf},{tf},{ga},{gm},{ge},{de},{gh},{gi},{gr},{gl},{gd},{gp},{gu},{gt},{gn},{gw},{gy},{ht},{hm},{hn},{hk},{hu},{is},{in},{id},{ir},{iq},{ie},{im},{il},{it},{jm},{jp},{jo},{kz},{ke},{ki},{kp},{kr},{kw},{kg},{la},{lv},{lb},{ls},{lr},{ly},{li},{lt},{lu},{mo},{mk},{mg},{mw},{my},{mv},{ml},{mt},{mh},{mq},{mr},{mu},{yt},{mx},{fm},{md},{mc},{mn},{me},{ms},{ma},{mz},{mm},{na},{nr},{np},{an},{nl},{nc},{nz},{ni},{ne},{ng},{nu},{nf},{mp},{no},{om},{pk},{pw},{ps},{pa},{pg},{py},{pe},{ph},{pn},{pl},{pt},{pr},{qa},{re},{ro},{rw},{ws},{sm},{st},{sa},{uk},{sn},{rs},{sc},{sl},{sg},{sk},{si},{sb},{so},{as},{za},{gs},{su},{es},{lk},{sh},{kn},{lc},{pm},{vc},{sd},{sr},{sj},{sz},{se},{ch},{sy},{tw},{tj},{tz},{th},{tg},{tk},{to},{tt},{tn},{tr},{tm},{tc},{tv},{ug},{ua},{ae},{gb},{uk},{us},{um},{uy},{uz},{vu},{va},{ve},{vn},{vi},{wf},{eh},{ye},{zm},{zw},{??}

ExitNodes {ru} StrictNodes 1

Lebrando que o Tor NÃO é 100% seguro, no que tange ao conteúdo. CIA, NSA, FBI, MI6, GCHQ, Mossad e até o Carluxo (com X ou CH?) dispõem de meios para interceptar e descriptografar seu tráfego.

O que é (até o momento) assegurado é a localização dos nós envolvidos. Por isso aumentaremos o custo para essa turma tanto quanto possível. É recomendável rotacionar suas chaves de tempos em tempos, obviamente, isso afetará o funcionamento dos scripts pois os endereços ".onion" irão mudar.

Portanto, altere os endereços em seus scripts. Ou ainda, melhore-os criando essa funcionalidade de alterar dinâmica e automaticamente os endereços e scripts. Afinal, isso é uma prova de conceito e não um produto. Bem... até é, mas isso não vem ao caso.

Para saber qual o endereço ".onion" do seu host, verifique seu arquivo: /var/lib/tor/Nome_Do_Seu_Servico_Oculto/hostname

Para quem quiser brincar com o Tor, recomendo a leitura da minha dica aqui mesmo no Viva o Linux:
Nossa implementação consistirá em duas máquinas, podem ser físicas, virtuais ou até mesmo containers. Pretendo, mais adiante, escrever algo sobre o TrueCrypt e seu uso em containers Docker.

A primeira máquina será onde estará o disco a ser criptografado. A chamarei de SERVIDOR e a segunda máquina que chamarei de TOKEN, pode ser física, VM, container, ou até mesmo um Raspberry Pi.

Se for colocar essa aplicação em produção, é altamente recomendável e por que não dizer OBRIGATÓRIO, que a máquina TOKEN não esteja nas mesmas dependências físicas onde estará instalada a máquina SERVIDOR e quanto menos pessoas souberem da sua localização, ou até mesmo da sua existência, melhor é.

Se for hospedá-la em algum serviço VPS, Cloud ou o que for, faça-o em algum serviço que não crie qualquer vínculo com você, ou sua organização, e que aceite pagamentos em criptomoedas ou em espécie, para não deixar pontas soltas.

ATENÇÃO: a máquina onde estiver o disco, ou partição criptografada, DEVERÁ estar com SWAP DESABILITADO e recursos como hibernação, suspend to RAM etc... desabilitados para nenhum resquício sobre o acesso ao disco esteja disponível. Outro ponto OBRIGATÓRIO, é que todos os seus diretórios destinados a temporários sejam montados em "ramdisks tmpfs". Portanto, muita atenção com Laptops, Desktops e mesmo servidores que disponham dessa funcionalidade.

Ex.: de /etc/fstab para montagem de "temps" em RAM:

tmpfs    /tmp    tmpfs defaults 0 0
tmpfs    /var/tmp    tmpfs defaults 0 0

Para desabilitar os coredumps:

# echo "* hard core 0" >> /etc/security/limits.conf
# echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile
# echo "0" > /proc/sys/fs/suid_dumpable
# echo "fs.suid_dumpable = 0" >> /etc/sysctl.conf

Para desabilitar o SWAP: para fazê-lo de forma permanente, comente a linha alusiva ao SWAP em seu/etc/fstab:

swapoff -a

Outro ponto a ser observado é a eletrônica envolvida nas Motherboards, fontes de alimentação, bem como Laptops (esses são piores, porque possuem baterias e nos modelos atuais elas não podem ser facilmente removidas). As fontes possuem capacitores de filtragem de alta capacitância, assim como as Motherboards que, além dos capacitores de filtro que há em seus reguladores de tensão, possuem centenas de capacitores de desacoplamento ao longo de seus circuitos.

As memórias RAM são dinâmicas (procure por memórias RAM estáticas e dinâmicas), portanto, capacitivas podendo-se obter um dump de seu conteúdo, com um hardware específico e até mesmo com um PC comum, por até cerca de uns 10 ou 15 minutos, mesmo que sua máquina seja desligada em uma "emergência".

Se você tiver essa "emergência", não desligue sua máquina. Aperte o botão de RESET físico. Eu disse RESET e não Ctrl+Alt+Del. O reset irá extinguir qualquer carga residual em sua memória RAM e todo o conteúdo em áreas de cache será sobrescrito.

Alguém já se perguntou, por quê Laptops e Desktops de grife (Dell, HP, Lenovo, IBM etc.) não possuem um botão de reset como vemos comumente em Desktops montados com peças avulsas? Pois é! É uma "exigência" dos órgãos americanos, embora isso não seja publicamente admitido.

Procurem por "Cold Boot Attack", que acharão coisas bem interessantes. No YouTube há muita coisa legal sobre o assunto. Segue um link sobre o tema:

Os Shellscripts

Máquina SERVIDOR (a que contém o disco, volume, partição, chaveiro USB, arquivo em loopdevice, enfim, qualquer dispositivo de bloco).

#!/bin/bash

ONIONADDR ​="n3sauq5dx3mbs6ttekrvclrrjy40jfdvwrd6qaji4thprnvhv2eudfid.onion"

history -c; shred -n 1024 -u /root/.bash_history; >/root/.bash_history

torsocks nc -z "${ONIONADDR}" 22
if [[ $? -eq 0 ]]; then
sleep 2
    torsocks -i ssh -o ConnectionAttempts=5 -C [email protected]"${ONIONADDR}" <<< echo "/usr/bin/rtoken2.sh $1" &
fi

Na máquina TOKEN:

/usr/bin/rtoken2.sh
#!/bin/bash

ONIONADDR&#8203;="15jn60h5aqrfswxapfrqghroclxfqru4yyfwqqlug667ssnj5lsv1qd.onion"
mount()
{
    cat mounter.source | torsocks ssh -C [email protected]"${ONIONADDR}" "cat >/tmp/mounter.source"
    cat keyfile.key | torsocks ssh -C [email protected]"${ONIONADDR}" "cat >/tmp/keyfile.key"
    torsocks -i ssh -o ConnectionAttempts=5 -C [email protected]"${ONIONADDR}" &lt;&lt;&lt; echo "source /tmp/mounter.source; shred -n 1024 -u /tmp/keyfile.key /tmp/mounter.source"
}

terraformer()
{
    dd if=/dev/random of=/root/keyfile.key bs=512 count=1 iflag=fullblock 1>- 2>-
    >/root/terraformer.source
for PASS in vdb mapper/truecrypt1; do
    echo "truecrypt -c /dev/"${PASS} -k "/tmp/keyfile.key" --protect-hidden=no --volume-type=normal --encryption=Serpent-Twofish-AES --hash=SHA-512 --non-interactive -p ""$(date +%s%N | sha3sum -a 256 | awk -F  {'print $1'})"" --filesystem=none --quick >> /root/terraformer.source

done

paste -d " " terraformer.source <(cat terraformer.source | awk -F  {'print $3'}) | sed -e 's/-c.*-k //' -e 's/truecrypt/truecrypt -k/' -e 's/--quick //' > /root/mounter.source
paste -d ";" terraformer.source mounter.source > /root/universe.source
cat universe.source | torsocks ssh -C [email protected]"${ONIONADDR}" "cat >/tmp/universe.source"
cat keyfile.key | torsocks ssh -C [email protected]"${ONIONADDR}" "cat >/tmp/keyfile.key"
torsocks -i ssh -o ConnectionAttempts=5 -C [email protected]"${ONIONADDR}" <<< echo "source /tmp/universe.source; shred -n 1024 -u /tmp/keyfile.key /tmp/universe.source"
}

# Recebe a chamada da função como parâmetro
# Aqui fizemos uma substituição de variável ou seja,
# se nenhum parâmetro (mount ou terraformer) for passado
# a máquina TOKEN será desligada. Use-o "apenas em caso de necessidade"

${1:-init 0}

Agora uma coisa interessante, experimente alterar a linha: for PASS in vdb mapper/truecrypt1; do

Para, por exemplo:

for PASS in vdb mapper/truecrypt1 mapper/truecrypt2 mapper/truecrypt3 mapper/truecrypt4; do

Agora na máquina SERVIDOR, rode o script que manipula a TOKEN e veja a magia negra acontecer! Até fiz um videozinho, meio tosco reconheço, mas cosmética nunca foi meu forte:
# ./remotetoken.sh terraformer

O parâmetro "terraformer" é o nome da função que criará seus volumes.

O TrueCrypt, por default, já faz 3 camadas de criptografia. Nesse caso, foram 15 camadas.

Feitos esses passos, agora é só particionar e formatar o dispositivo de loop criado pelo TrueCrypt. Lembrando que sistemas Linux não requerem que o dispositivo seja particionado, você pode criar o seu sistema de arquivos diretamente:

# mkfs.ext4 -O ^has_journal /dev/mapper/truecrypt5

Lembrando que os loops /dev/mapper/truecrypt5_0 e _1, são as camadas intermediárias criadas pelo TrueCrypt.

Agora, é só montar seu volume:

# mount /dev/mapper/truecrypt5 /Path_Para_Seu_Ponto_De_Montagem

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Recuperando senha de administrador Windows NT/2000/XP/ com o Slax e Captive

Docker - Combatento o COVID-19

Access Point com cartão Atheros em Slackware 12.0

Autenticando Documento com Blockchain e Ethereum

Balanceamento de carga e alta disponibilidade com Bonding Driver e Iproute2

Leitura recomendada

Race Condition

O espaço e a segurança cibernética

Tor e Hidden Service Protocol - Explicando tecnicamente a "Deep Web"

Como funcionam os sistemas de biometria: um estudo geral

Instalação do ClamAV com DazukoFS

  
Comentários
[1] Comentário enviado por k1w3l em 16/10/2020 - 23:29h

Uso o truecrypt desde 2012, excelente ferramenta. No Windows a desculpa foi que o Bitlocker era seguro e já vinha por padrão nos Windows kkk.

[2] Comentário enviado por CapitainKurn em 17/10/2020 - 13:50h


[1] Comentário enviado por k1w3l em 16/10/2020 - 23:29h

Uso o truecrypt desde 2012, excelente ferramenta. No Windows a desculpa foi que o Bitlocker era seguro e já vinha por padrão nos Windows kkk.

Pretendo em publicar um outro com uma abordagem mais sofisticada com uso do Docker. Pretendia fazer com cryptoloop, mas infelizmente ele foi retirado da árvore do Kernel então aproveitei o Truecrypt para contar uma história.

[3] Comentário enviado por mauricio123 em 18/10/2020 - 13:46h


Interessante. Ótimo artigo.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[4] Comentário enviado por CapitainKurn em 18/10/2020 - 22:29h


[3] Comentário enviado por mauricio123 em 18/10/2020 - 13:46h


Interessante. Ótimo artigo.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Que bom que gostou.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts