├── .gitignore ├── README ├── excluded ├── sourcetar └── stealth ├── ACKNOWLEDGEMENTS ├── CHANGELOG ├── CLASSES ├── INSTALL ├── INSTALL.im ├── README ├── README.3.00.00 ├── README.4.00.00 ├── README.class-setup ├── README.flow ├── README.messages ├── TODO ├── VERSION ├── VERSION.h ├── build ├── changelog ├── documentation ├── example-policies │ ├── demo.pol │ ├── localhost.pol │ └── simple.pol ├── images │ ├── communication.jpg │ ├── ipcinterface.jpg │ ├── molds │ │ ├── 2jpg │ │ ├── README │ │ ├── comflow.odp │ │ ├── communication.odp │ │ ├── figure.odp │ │ ├── ipcinterface.odp │ │ └── nextjob.obp │ └── nextjob.jpg ├── man │ └── stealth.yo └── manual │ ├── access │ ├── client.yo │ ├── intro.yo │ ├── login.yo │ ├── monitor.yo │ └── using.yo │ ├── errors.yo │ ├── install │ ├── compile.yo │ └── intro.yo │ ├── intro.yo │ ├── kickstart.yo │ ├── policy │ ├── commands.yo │ ├── defines.yo │ ├── intro.yo │ ├── label.yo │ ├── local.yo │ ├── preventing.yo │ ├── remote.yo │ └── use.yo │ ├── running │ ├── checking.yo │ ├── checkingconfig.yo │ ├── checkingfind.yo │ ├── checkingsetuid.yo │ ├── commands.yo │ ├── cron.yo │ ├── define.yo │ ├── failing.yo │ ├── files.yo │ ├── firstrun.yo │ ├── installing.yo │ ├── intro.yo │ ├── logrotate.yo │ ├── mailed.yo │ ├── makepolicy.yo │ ├── newrundelta.yo │ ├── newrunsame.yo │ ├── obtaining.yo │ ├── options.yo │ ├── policy.demo │ ├── policy.yo │ ├── rotate.yo │ ├── rsyslog.yo │ ├── skipping.yo │ ├── status.yo │ └── use.yo │ ├── stealth.sty │ ├── stealth.yo │ ├── usage.cc │ ├── usage.yo │ └── whatsnew.yo ├── frame ├── icmake ├── backtick ├── clean ├── cuteoln ├── destinstall ├── findall ├── github ├── install ├── installer ├── log ├── logfile ├── loginstall ├── logzip ├── manpage ├── manual ├── md ├── pathfile ├── precompileheaders ├── remove ├── run ├── setopt ├── special └── uninstall ├── icmconf ├── icmconf2 ├── integrityscanner ├── addto.cc ├── checksize.cc ├── copy.cc ├── data.cc ├── datetime.cc ├── docheckcommand.cc ├── doplaincommand.cc ├── execute.cc ├── filename.cc ├── foreground.cc ├── frame ├── get.cc ├── getpath.cc ├── icmconf ├── integrityscanner.h ├── integrityscanner.ih ├── integrityscanner1.cc ├── killchildren.cc ├── loadskipfiles.cc ├── local.cc ├── nextcommand.cc ├── nodifferences.cc ├── put.cc ├── putcommand.cc ├── read.cc ├── remote.cc ├── removefirstword.cc ├── removelog.cc ├── replace.cc ├── run.cc ├── sameoutput.cc ├── setsentinel.cc ├── setskip.cc ├── skip.cc ├── skipdecision.cc ├── startcommandshells.cc ├── testexitvalue.cc ├── waitforsentinel.cc └── write.cc ├── logunit ├── frame ├── icmconf ├── logunit.h ├── logunit.ih ├── logunit1.cc ├── newlog.cc ├── newsyslogstream.cc ├── setuplogs1.cc └── setuplogs2.cc ├── main.cc ├── main.ih ├── msg ├── data.cc ├── driver │ ├── build │ └── driver.cc ├── frame ├── icmconf ├── msg.h ├── msg.ih ├── msg1.cc ├── msg2.cc └── setverbosity.cc ├── options ├── checkm.cc ├── checkmode.cc ├── data.cc ├── foregroundonly.cc ├── frame ├── getcwd.cc ├── icmconf ├── oldoptions.cc ├── options.h ├── options.ih ├── options1.cc ├── randomaddition.cc ├── requiresomeargument.cc ├── rfc2822.cc ├── setcommandnr.cc ├── setconfigoptions.cc ├── setdownloadsize.cc ├── setlog.cc ├── setmail.cc ├── setmode.cc ├── setparsepolicy.cc ├── setpolicypath.cc ├── setrandomdelay.cc ├── setrepeat.cc ├── setskipfile.cc ├── setstdout.cc ├── setsyslog.cc ├── setsyslogfacility.cc ├── setsyslogpriority.cc ├── settimestamp.cc ├── setverbosity.cc └── usage.cc ├── policyfile ├── chdirbase.cc ├── data.cc ├── directivesandcommands.cc ├── fetchcommands.cc ├── fixrelativelocations.cc ├── frame ├── icmconf ├── insert.cc ├── load.cc ├── loadoptions.cc ├── policyfile.h ├── policyfile.ih ├── policyfile1.cc └── replacedefines.cc ├── report ├── demo │ ├── demo.cc │ └── demo.h ├── destructor.cc ├── frame ├── hasmail.cc ├── icmconf ├── mail.cc ├── processmail.cc ├── refresh.cc ├── report.h ├── report.ih ├── report1.cc ├── rewind.cc ├── scanheader.cc ├── sendmail.cc └── timestamp.cc ├── required ├── runmode ├── data.cc ├── frame ├── icmconf ├── runmode.h ├── runmode.ih └── setmode.cc ├── share ├── etc │ ├── logrotate.d │ │ └── target │ └── stealth │ │ └── cleanup.rc └── usr │ └── bin │ ├── stealthcleanup │ ├── stealthcron │ └── stealthmail ├── stealth.xref ├── stealth ├── acceptmode.cc ├── autoscan.cc ├── childprocess.cc ├── data.cc ├── deniedmode.cc ├── destructor.cc ├── dotasks.cc ├── frame ├── icmconf ├── incomingrequest.cc ├── integrityscan.cc ├── ipcinterface.cc ├── ipcmode.cc ├── jobshandler.cc ├── logreportbuf1.cc ├── mailreport.cc ├── nextjob.cc ├── notifytask.cc ├── overflow.cc ├── parentprocess.cc ├── pingrequest.cc ├── policymode.cc ├── reload.cc ├── reloadrequest.cc ├── rerun.cc ├── rerunrequest.cc ├── resume.cc ├── resumerequest.cc ├── setuniqueptrs.cc ├── setupfatalreport.cc ├── stealth.h ├── stealth.ih ├── stealth1.cc ├── suspend.cc ├── suspendrequest.cc ├── sync.cc ├── terminate.cc ├── terminaterequest.cc ├── unknownrequest.cc └── waitforkey.cc ├── stealthenums ├── frame ├── icmconf ├── stealthenums.h └── stealthenums.ih ├── syslogstruct └── syslogstruct.h ├── util ├── abspath.cc ├── icmconf ├── mkdir.cc ├── realpath.cc ├── util.h └── util.ih └── version.cc /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fbb-git/stealth/fdf4f1e9a7174628684cca5b1f63ded739795630/.gitignore -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | The STEALTH program performs File Integrity Checks on (remote) clients. It 2 | differs from other File Integrity Checkers by not requiring baseline integrity 3 | data to be kept on either write-only media or in the client's file system. In 4 | fact, clients will hardly contain any indication suggesting that they are 5 | being monitored, thus improving the stealthiness of the integrity scans. 6 | 7 | 8 | Stealth's repository has moved to https://gitlab.com/fbb-git/stealth 9 | and is not maintained at this location anymore. 10 | 11 | The project's web-page can be found at http://fbb-git.gitlab.io/stealth/ 12 | 13 | -------------------------------------------------------------------------------- /excluded: -------------------------------------------------------------------------------- 1 | test 2 | documentation/images/molds 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sourcetar: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | PROJECT=stealth 3 | 4 | cd ~/git/${PROJECT}/src 5 | 6 | if [ -e /usr/share/common-licenses/GPL ] ; then 7 | cp /usr/share/common-licenses/GPL ${PROJECT}/LICENSE 8 | fi 9 | # load the version 10 | VERSION=`grep VERSION ${PROJECT}/VERSION | 11 | sed 's/#define[[:space:]]\+VERSION[[:space:]]\+"\(.*\)"/\1/'` 12 | 13 | DISTRIBUTION=${PROJECT}-${VERSION} # define the distribution's dir name 14 | 15 | tgz() 16 | { 17 | ln -s ${PROJECT} ${DISTRIBUTION} # distribution's dir name 18 | tar czvf $1 --exclude-from=excluded ${DISTRIBUTION}/* 19 | rm -f ${DISTRIBUTION} ${PROJECT}/LICENSE # rm the link/LICENSE file 20 | } 21 | 22 | case "$1" in 23 | (d) 24 | mkdir -p ../tarballs 25 | tgz ../tarballs/${PROJECT}_${VERSION}.orig.tar.gz 26 | ;; 27 | 28 | (l|o) 29 | tgz ${PROJECT}_${VERSION}.tar.gz 30 | 31 | if [ "$1" == "o" ] 32 | then 33 | scp ${PROJECT}_${VERSION}.tar.gz \ 34 | oosix:git/${PROJECT}/tarballs/${PROJECT}_${VERSION}.orig.tar.gz 35 | rm ${PROJECT}_${VERSION}.tar.gz 36 | fi 37 | ;; 38 | 39 | (*) 40 | echo " 41 | Provide arg: 42 | d (debian) to create a local .orig.tar.gz archive in 43 | ~/git/tarballs 44 | l (local) to create ${PROJECT}_${VERSION}.tar.gz in this directory 45 | o (oosix) same as 'l', but upload to oosix (IUO) 46 | " 47 | exit 1 48 | ;; 49 | 50 | esac 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /stealth/ACKNOWLEDGEMENTS: -------------------------------------------------------------------------------- 1 | The following persons have been very helpful in developing and testing 2 | STEALTH: 3 | 4 | Hans Gankema , 5 | For formulating the initial idea behind `stealth' 6 | 7 | Kees Visser 8 | For formulating the initial idea behind `stealth' 9 | 10 | Hopko Meijering 11 | For testing stealth on various computers, and for proofreading 12 | the documentation 13 | 14 | 15 | Thanks! 16 | 17 | Frank. 18 | 19 | 20 | -------------------------------------------------------------------------------- /stealth/CHANGELOG: -------------------------------------------------------------------------------- 1 | 1.31 2 | 3 | Added options --suppress and --resume to allow logfile rotations 4 | --resume implies a --rerun 5 | --terminate can be used following --suppress 6 | 7 | Removed ::exit() and atexit() calls, using exceptions instead. 8 | 9 | Added `Monitor', containing all process-control functions previously 10 | provided by Scanner itself. Scanner now only performs the scanning 11 | functions. 12 | 13 | 1.20.2 (Debian) and beyond: 14 | =========================== 15 | 16 | See the debian changelog file for all changes as of version 1.20.2 17 | 18 | 1.20 19 | ==== 20 | 21 | Long options added (1.11), `LOG =' may be specified with CHECK commands. 22 | 23 | Starting version 1.20, a Debian package is provided in parallel to the source 24 | package. The Debian package contains the full documentation, as well as the 25 | binary version of the stealth program. 26 | 27 | 1.10 28 | ==== 29 | 30 | -i