Irssi

Fonte: wirelesspt.net

A utilização do irssi encontra-se desapreciada devido a problemas de funcionamento, segurança e privacidade e favorece-se o weechat que é activamente mais desenvolvido e que oferece mais e melhores funcionalidades assim como maior segurança em particular com o uso de proxies como o tor o utilização de certfp.

Ver: Determinadas funcionalidades do irssi em relação a segurança e privacidade não funcionam totalmente ou correctamente.

Este artigo visa em explicar como utilizar o cliente de irc de linha de comandos conhecido como irssi para acesso á rede wirelesspt.net de forma relativamente segura, com criptografia e anonimato utilizando diferentes tipos de criptografia. O irssi é um cliente de irc avançado de linha de comandos compatível com linux e windows.

Instalar

Irssi é um cliente de irc de linha de comandos

GNU Gentoo, Pentoo, Sabayon, Funtoo Linux e derivados:

emerge irssi irssi-otr

GNU Debian, Ubuntu, Kali Linux e derivados:

apt-get install irssi irssi-plugin-otr

GNU Arch Linux e derivados:

sudo pacman -S irssi
wget https://aur.archlinux.org/packages/ir/irssi-otr/irssi-otr.tar.gz
tar xf irssi-otr.tar.gz ; cd irssi-otr ;  makepkg -si ;  echo load otr >> ~/.irssi/startup
sudo pacman -S irssi-otr

GNU Fedora Linux e derivados:

yum install irssi irssi-otr

Em windows o executável encontra-se obsoleto perante o uso de criptografia e livrarias openssl funcionando com ssl v2 e v3 e sem suporte tls.

Preparativos

Após a instalação do irssi no sistema operativo devemos proceder às configurações necessárias para as funcionalidades pretendidas e criar suporte de configuração base para o irssi na shell do utilizador do sistema operativo.

mkdir -p ~/.irssi/certs
mkdir -p ~/.irssi/scripts/autorun
wget -P ~/.irssi/scripts/autorun/  https://raw.githubusercontent.com/wirelesspt/irssi/master/scripts/cap_sasl.pl
wget -P ~/.irssi/certs/ https://url_to_CAs.pem ( a publicar mais tarde)
$ irssi
/network add Wirelesspt
/network add Wirelesspt -nick nick_escolhido' -user nome_de_utilizador -realname nome_escolhido
/server add -auto -ssl -network Wirelesspt hub.wirelesspt.net 6697

Certfp

Iremos agora gerar certificados de criptografia com ssl e durante este processo serão feitas algumas perguntas que devem ser respondidas ao gosto do utilizador.

Exemplo:

openssl req -x509 -nodes -days <dias> -utf8 -newkey <tipo>:<bits>-sha512 -keyout nick.key -out nick.crt -subj /CN=nick

Executar:

openssl req -x509 -nodes -days 1825 -utf8 -newkey rsa:4096-sha512 -keyout nick.key -out nick.crt -subj /CN=nick
cat nick.crt nick.key > nick.pem
chmod 400 nick.{key,crt,pem}

Podemos confirmar e ver a nossa fingerprint criada digitando:

openssl x509 -noout -fingerprint -text < nick.pem -sha256 | grep Fingerprint

Para adicionar a fingerprint ao nickserv caso tenhamos o nick registado na rede basta digitar na linha de comandos:

openssl x509 -sha256 -noout -fingerprint -in nick.pem | sed -e 's/^.*=//;s/://g;y/ABCDEF/abcdef/'

E no cliente de irc basta digitar:

/msg NickServ cert add fingerprint

Mover os certificados para o irssi

mv nick.{key,cer,pem} ~/.irssi/certs

De seguida devemos configurar o acesso à rede na linha de comandos do irssi executando o irssi num terminal:

Para quem pretender ter a sua aplicação de software a confirmar e obter fingerprints de servidores deverá consultar este artigo.

$ irssi
/network add Wirelesspt
/network add Wirelesspt -nick nick_escolhido' -user nome_de_utilizador -realname nome_escolhido
/server add -ssl -ssl_cert ~/.irssi/certs/nick.pem -ssl_cafile ~/.irssi/certs/CAs.pem -ssl_verify -network Wirelesspt irc.wirelesspt.net 6697

Ssl fingerprints

O uso de fingerprint do certificado eleva a nossa segurança assegurando a impossibilidade de um ataque man in the middle Podemos e devemos para maior segurança adicionar fingerprints ao irssi para esta rede.

Para obtermos a fingerprint do certificado de criptografia do servidor de irc basta digitar num terminal:

openssl s_client -connect hub.wirelesspt.net:6697 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin -sha512

O que nos resultará em algo como isto:

SHA512 Fingerprint=4E:BD:2E:4E:90:7F:9B:41:91:43:B6:CC:F3:5B:4B:C1:35:6D:64:FD:8C:9D:5C:60:16:1E:3C:A1:B2:A6:6D:59

Este comando obterá a fingerprint exactmente como necessita de ser utilizada:

openssl s_client -connect hub.wirelesspt.net:6697 < /dev/null 2>/dev/null | openssl x509 -sha256 -fingerprint -noout | tr -d ':' | tr 'A-Z' 'a-z' | cut -d = -f 2
$ irssi
/network add Wirelesspt
/network add Wirelesspt -nick nick_escolhido' -user nome_de_utilizador -realname nome_escolhido
/server add -ssl -tls_pinned_cert 4E:BD:2E:4E:90:7F:9B:41:91:43:B6:CC:F3:5B:4B:C1:35:6D:64:FD:8C:9D:5C:60:16:1E:3C:A1:B2:A6:6D:59 -network wirelesspt hub.wirelesspt.net 6697


Root trusted CAs

Para que o irssi reconheça a validade de certificados válidos como lets encrypt e ou auto assinados reconhecidos pelos os utilizadores devemos criar essa funcionalidade e consequentemente adicionar ao irssi os certificados.

mkdir ~/.irssi/ssl/

Opção 1:

Com certificados lets encrypt importados pelo sistema operativo:

/server add -auto -ssl -ssl_cafile ~/.irssi/etc/ssl/certs/ca-certificates.crt -network wirelesspt irc.wirelesspt.net 6697

Com certificados CA auto assinados:

wget https://wirelesspt.net/arquivos/ssl_certs/wirelesspt_trusted_CAs.crt
cat wirelesspt_trusted_CAs.crt >> ~/.irssi/ssl/wirelesspt_trusted_CAs.crt
/server add -auto -ssl -ssl_cafile ~/.irssi/wirelesspt_trusted_CAs.crt -network wirelesspt irc.wirelesspt.net 6697

Opção 2:

Para utilizar o que o sistema operativo nos fornece e adicionar certificados auto assinados reconhecidos por nós, em vez de executar o parâmetro mencionado anteriormente executamos:

cp /etc/ssl/certs/ca-certificates.crt ~/.irssi/ssl/ca-certificates.crt

wget https://wirelesspt.net/arquivos/ssl_certs/wirelesspt_trusted_CAs.crt
cat wirelesspt_trusted_CAs.crt >> ~/.irssi/ssl/ca-certificates.crt
 /server add -auto -ssl -ssl_cafile ~/.irssi/etc/ssl/certs/ca-certificates.crt -network wirelesspt irc.wirelesspt.net 6697

Nota: Este método requer actualização manual sempre que o sistema operativo actualiza os certificados de autoridade.

Tor

Para se entrar na rede via tor existem 2 formas base que necessitam pelo menos de duas aplicações de software em execução.

Após instaladas basta executar o irssi num terminal da seguinte forma:

torify irssi

Para maior anonimato podemos ainda estabelecer ligação via serviço escondido tor (hidden service). (a desenvolver)

Adicionar canais

Adicionar canais recomendados ao irssi para entrada automática na rede:

/channel add -auto #wirelesspt Wirelesspt
/channel add -auto #nixbits Wirelesspt
/channel add -auto #linux Wirelesspt
/channel add -auto #news Wirelesspt

Entrar na rede

Ao estabelecer entrada na rede seremos informados de fingerprint do certificado que utilizamos e que se recomenda adicionar ao registo escolhido:

/connect Wirelesspt

Caso não tenhamos o nick_escolhido registado podemos registar digitando e adicionando os dados á configuração:

/msg nickserv register nick_escolhido senha_escolhida 
/network add -nick nick_escolhido -autosendcmd "/^msg NickServ identify senha_escolhida ; wait 5000" Wirelesspt

Caso já esteja registado devemos proceder à sua identificação digitando:

/msg nickserv identify senha_do_nick
/msg nickserv cert add fingerprint_do_crt

Sasl

O mecanismo (sasl_mechanism) de autenticação poderá ser escolhido entre: DH-AES ou DH-BLOWFISH ou no caso de falha; PLAIN. Com uso de certfp deverá ser identificado como EXTERNAL.

/sasl set wirelesspt nick_escolhido senh_escolhida EXTERNAL
/sasl save

No caso de não se utilizar certfp podemos optar por substituir EXTERNAL por DH-AES, DH-BLOWFISH OU PLAIN

Otr

Para criptografia adicional em mensagens privadas devemos iniciar a sessão de chat da seguinte forma:

/otr start

Terminar sessão otr com o contacto:

/otr finish

Trocar chave de segredo extra apenas conhecida pelo contacto:

/otr auth senha_segredo

Confiar na chave otr de um contacto:

/otr trust

Para quem usa o irssi, recomenda-se para que esteja informado do estado otr

/statusbar window add otr

Gerar manualmente uma chave otr para um contacto:

/otr genkey nick@irc.server.com 

Iniciar ou responder a um contacto para trocar chaves otr.

/otr auth <nick>@<servidor> <senha>

Abortar a troca de chave otr com um contacto:

/otr authabort <nick>@<servidor>

Confiar na chave otr de um contacto que está na janela aberta do momento mas apenas no fim de se comparar a chave otr:

/otr trust <nick>@<server>

Activar modo de debug:

/otr debug

Listar contexto otr chaves usadas e estado:

/otr contexts

Ver a versão otr utilizada:

/otr version

Blowfish

O uso de criptografia blowfish pode ser utilizado em conjunto com o uso do otr e para tal necessita o plugin, blowfish ou fishlim que após estar incorporado no cliente de irc basta digitar:

Para criptografar um nick ou canal:

/SETKEY <nick ou #channel> <senha>

Para remover a criptografia:

/delkey <nick ou #channel>

Problemas

Embora o uso normal de proxy parece funcionar correctamente; até à data desta revisão o irssi apresenta falhas no funcionamento com socks proxy, mais em concreto em conjunto com o tor. Quando em uso com tor se activa safe socks o irssi não consegue estabelecer ligação ao destino devido ao dns leak que revela na rede e que inviabiliza o anonimato do seu utilizador. Desactivando safe socks podemos constatar esse dns leak no próprio log do tor. Por este motivo se desaconselha o uso do irssi a quem valoriza a sua privacidade. O próprio developer nem sabe se esta funcionalidade na realidade funciona.

May 12 17:57:13.000 [warn] Your application (using ocks5 to port 6667) is giving Tor only an IP address. Applications that do dns resolves themselves may leak information.  Consider using Socks4A (e.g. via privoxy or socat) instead. For more information, please see https://wiki.torproject.org/TheOnionRouter/TorFAQ#SOCKSAndDNS. Rejecting.

Para activar a prevenção de dns leaks basta adicionar as seguintes definições à configuração do tor:

echo SafeSocks 1 >> /etc/tor/torrc 
echo TestSocks 1 >> /etc/tor/torrc
/etc/init.d/tor restart

É neste momento que quer com uso de socks proxy ou torify, que o irssi deixará de conseguir estabelecer ligação a qualquer servidor.

Adicionalmente ainda não suporta fingerprints dos certificados de segurança com hashes de 512, mantendo-se com sha1 que é actualmente fraco e considerado inseguro. Alternativa é sha256.

Ver ainda

Links

(em Inglês)

Editor

--Cmsv