1 votes

Enregistrer les commandes SSH envoyées à un Mac depuis Windows

J'ai un peu de mal à comprendre : je suis administrateur sur une machine Windows 10 et un Mac Catalina.

La machine Windows exécute actuellement un logiciel qui présente un bogue connu - les commandes SSH sont envoyées à un Mac par un gros morceau de logiciel .NET qui est difficile à RE (plus en raison de sa taille que de sa complexité) par SSH. Les deux PC sont sur le même réseau.

Les commandes SSH échouent, mais je ne sais pas ce qu'elles sont. J'aimerais enregistrer ces actions, ou du moins les visualiser d'une manière ou d'une autre, afin de pouvoir modifier le comportement du destinataire (Mac) pour qu'il prenne la bonne action (contournement du bogue).

Voici ce que j'ai essayé de faire pour afficher les commandes SSH :

  • Exécuter Wireshark (des deux côtés), essayer de décoder l'échange Diffie-Hellman via les clés SSH (je ne sais pas comment cela fonctionne exactement, donc je tâtonne - par exemple, je ne sais pas comment utiliser les clés RSA pour décoder la conversation)
  • Essayez Strace - n'existe pas sur les machines Mac. Option alternative dtruss peut fonctionner mais je ne connais pas les commandes et je dois contourner le SIP.
  • Essayez d'enregistrer les commandes SSH en utilisant .bashrc l'enregistrement automatique - il a maintenant été remplacé par .zprofile y .zshrc - cela ne semble pas fonctionner, et aucun historique n'est laissé dans z_history ou bash_history. En revanche, cela fonctionne lorsque j'exécute des commandes de terminal interactives. Cela peut être dû au fait que les commandes sont enchaînées à la commande SSH initiale, par exemple ssh user@host SOMECOMMAND.
  • Exécuter ProcMon voir si les commandes sont dans un fichier de configuration secret. Je n'arrive pas à le trouver.
  • Décompiler en utilisant Réflecteur y dnSpy - Je trouve une certaine logique sur la façon de transmettre les commandes SSH, mais pas de commandes réelles codées en dur.

Qu'est-ce que je rate ? Y a-t-il un moyen évident de le faire que j'ai négligé ?

Je suis relativement versé dans l'art de faire fonctionner les choses, donc si j'ai une idée de la meilleure façon d'avancer, alors je concentrerai mon attention là-dessus. Il semble juste y avoir trop d'options dans un grand espace pour savoir comment procéder

J'ai lu qu'il y avait peut-être des moyens de faire cela via le sshd_config sur l'hôte SSH (Mac), mais je n'ai aucune idée des paramètres qui fonctionneraient réellement, et apparemment le Mac fait les choses d'une manière spéciale.

(N'hésitez pas à déplacer le site StackExchange approprié, je ne suis pas sûr qu'il soit le meilleur pour cela).

0 votes

Comme une mise à jour mineure - j'ai essayé d'utiliser pam_tty_audit.so pour enregistrer les commandes dans le fichier sshd fichier de configuration /etc/pam.d/sshd mais cette librairie fait planter SSH

0 votes

Vous dites qu'il s'agit d'un bug connu, avez-vous pensé à contacter la liste de bugs du développeur pour connaître les commandes qu'il essaie d'exécuter ? L'autre option serait de regarder du côté MAC de l'équation plutôt que d'essayer d'obtenir les commandes avant qu'elles ne soient exécutées, voir ce qu'elles sont du côté client. La session SSH est-elle créée (en dernier) ? Quelque chose est-il enregistré dans /var/log/dmsg ? Si vous ne voyez pas de session créée, alors vous avez un problème plus basique de configuration de la connexion. Pouvez-vous vous connecter en SSH au Mac depuis le PC ?

0 votes

@RowanHawkins - SSH fonctionne bien - MSFT est conscient du problème, mais je suis plus curieux de savoir comment faire une sorte d'enregistrement SSH. Il ne semble pas y avoir de /var/log/dmsg sur mon Mac, à moins que quelque chose ne m'échappe. De plus, si je lance une session SSH standard (sans enchaîner les commandes), je peux enregistrer les commandes en utilisant deux astuces, script y expect qui proviennent d'autres techniques. Mais je n'obtiens toujours rien de la session SSH de MSFT.

1voto

hargut Points 3820

Cela ressemble à un cas typique d'audit. Je n'ai aucune expérience de sa configuration sur Mac OS, d'où les références à de la documentation et des exemples :

https://opensource.apple.com/source/OpenBSM/OpenBSM-21/openbsm/man/

https://krypted.com/mac-os-x/quick-dirty-openbsm-auditing-macos/

Cela ressemble à un type de auditd est également disponible :

https://opensource.apple.com/source/system_cmds/system_cmds-336.10/auditd.tproj/auditd.8.auto.html

L'activation de l'audit et l'analyse des journaux devraient fonctionner et contenir toutes les commandes qui ont été exécutées sur le système de destination.

Par exemple, en connaissant l'utilisateur ssh, vous pouvez commencer avec audit_user et de config config configurer ex les appels système à enregistrer pour cet utilisateur spécifique. Dans le cas où l'utilisateur est changé pendant la session, il se peut que la capture ne soit pas complète, mais au moins jusqu'à la commande de changement d'utilisateur.

/etc/security/audit_user yoursshuser:ad,ex:no

Pour un démarrage rapide, essayez quelque chose comme auditreduce -u <userid> -c ex /dev/auditpipe | praudit

Cela devrait fournir des journaux en direct des utilisateurs exec syscalls.

Suggérer d'oublier toute approche par les histoires de Shell et autres, car on ne sait pas si un Shell est utilisé. Par exemple, un Shell est copié et Shell est juste commuté. Intéressant sont ex syscalls, ceux-ci contiennent toutes les exécutions, peu importe comment elles sont déclenchées.


EDIT FOR MAC : Spécifiquement pour Mac (avec la Protection de l'Intégrité du Système [SIP] activée, par exemple Catalina/El Capitan/etc), OpenBSM n'enregistrera pas les commandes bash qui ne résultent pas en une exécution réelle d'un programme.

Si vous souhaitez enregistrer des commandes incorrectes (par exemple, ASDFASDFASDF), la meilleure option semble être d'utiliser la fonction dtruss - dtrace peut également fonctionner, mais il semble plus difficile de le faire fonctionner correctement.

Tout d'abord, désactivez SIP, puis exécutez ce qui suit pour enregistrer tous les appels système des processus bash :

sudo dtruss -n bash

Les commandes incorrectes seront "recherchées" dans divers emplacements de l'environnement, dans les appels stat64. Par exemple stat64("/usr/bin/ASDFASDFASDF",...)

0voto

Spacerat Points 34

Si vous avez accès au Shell où les commandes sont exécutées, vous pouvez essayer de rediriger les descripteurs de fichiers dans le profil du Shell vers un fichier journal. Ou activer l'historique. Ou utiliser sysdig.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X