38
SQL SERVER Anti-Forensics Cesar Cerrudo

BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

Embed Size (px)

Citation preview

Page 1: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 1/38

Page 2: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 2/38

Page 3: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 3/38

Page 4: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 4/38

Page 5: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 5/38

Page 6: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 6/38

Page 7: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 7/38

Page 8: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 8/38

Page 9: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 9/38

Page 10: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 10/38

Page 11: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 11/38

Page 12: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 12/38

Page 13: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 13/38

www.appsecinc.com13

Transaction log

• When the log is truncated the space of its internalsstructures is marked as free for reuse – Data is not deleted, it's overwritten

• Truncating does not reduce the size of the file – In order to reduce log file size it must be shrunk

• DBCC SHRINKFILE (log_name_or_id, size)• Space of internal unused structures is released to OS

• Logs records for the current database can be

displayed with:SELECT * FROM ::fn_dblog(null, null)

Page 14: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 14/38

www.appsecinc.com14

Transaction log

• What is saved? – The start and end of each transaction – Every data modification (DDL, DML) – Rollback operations – The transaction SID (Login security ID) – Etc.

• What is not saved? – SELECT statements

– Extended stored procedure execution

Page 15: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 15/38

www.appsecinc.com15

Data files

• They are files where the database data is saved – One database can have multiple data files – The main data file has an extension of .mdf – Their structure is not publicly known

•Data files store tables and indexes, every DDL or DML statement executed causes modification on datafiles.

• Data can be retrieved from data files by running

queries using T-SQL.

Page 16: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 16/38

www.appsecinc.com16

Data files

• Deleted data is not completely removed – Deleted records will remain in data files until

overwritten by new records

• They can be shrunk in the same way as transactionlog files

• What is saved? – User data, metadata – Results of DDL or DML statements

• What is not saved? – SELECT statements – Extended stored procedures execution – DBCC commands

Page 17: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 17/38

www.appsecinc.com17

SQL Server memory

• SQL Server caches data on memory• Most important caches are data and procedure cache

– Data cache is used to store data read and written from/todata files

• Information can be retrieved by DBCC PAGE command – Procedure cache is used to store execution plans of

executed statements• Information can be retrieved by executing the next

statement:

SELECT * FROM sys.syscacheobjects

Page 18: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 18/38

www.appsecinc.com18

SQL Server memory

• Memory addresses allocated by SQL Server can bedisplayed by running the next statement: – SELECT * FROM sys.dm_os_virtual_address_dump

• SQL Server memory can be directly read by runningDBCC BYTES command – It is possible to read clear text passwords from recently

created or modified logins

• What is saved?

– Actually everything at some point is in SQL Server memory

Page 19: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 19/38

www.appsecinc.com19

SQL Server Anti-Forensics

• From Forensics Wiki : “Anti-forensic techniques try to

frustrate forensic investigators and their techniques...”• Leave as few tracks as possible of non authorized

activity, evil actions, attacks, etc. – The breach can't be detected – If breach is detected these techniques can also be

used to confuse investigators.

• Sysadmin privileges are required – Attacker can get them: Exploiting a vulnerability, Brute

forcing/guessing user and pass, Trojan, Being an evil DBA,Etc.

• The scenario discussed is a default installation of SQL Server 2005 SP 3

Page 20: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 20/38

www.appsecinc.com20

SQL Server Anti-Forensics

• Some important facts in a default installation – Failed logging attempts are logged – Logging is always done to SQL Server error log and

Windows application log – Default trace is running

– Recovery model is set to simple in system databases(except model) and to simple or full on user databases

– SQL Server runs under a low privileged account

Page 21: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 21/38

www.appsecinc.com21

SQL Server Anti-Forensics

• Some actions an attacker will want to do – Steal data, modify data, install a backdoor, rootkit, etc. – Own the Windows server (Windows admin!=SQL Server

admin) – Leave as few evidence as possible, preferably no evidence

• How to accomplish attacker desired actions? – Don't care about failed logins (attacker has user/pass, exploits

SQL injection, etc.) – Some actions will be logged on 3 places, some on 2 places

and some on 1 place, also on transaction logs and datafiles if DML or DDL command are executed, and always on memory

Page 22: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 22/38

www.appsecinc.com22

SQL Server Anti-Forensics

• How to accomplish attacker desired actions? – Attacker can't delete Windows application log but she can

delete SQL Server error log• But needs to cycle error log which also gets logged

– Attacker can delete default trace file

• But he needs to disable default trace which also getslogged

– Attacker can run SELECT statements, but they are logged onprocedure cache in SQL Server memory

• Can be cleaned by DBCC FREESYSTEMCACHE('ALL') – But the command is logged on default trace

Page 23: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 23/38

www.appsecinc.com23

SQL Server Anti-Forensics

• How to accomplish attacker desired actions? – Attacker can modify data but it will be logged on transaction

logs• Transaction logs can be truncated and shrunk

– This gets logged on SQL Server and Windows logs

and on default trace – Breaks backup chain – Transaction logs will have unusual sizes

– It seems that it's pretty impossible to accomplish attacker

desired actions

Page 24: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 24/38

www.appsecinc.com24

SQL Server Anti-Forensics

• Accomplishing attacker desired actions – Logging mechanisms must be disabled (of course without

being logged) – SQL Server provides Extended Stored Procedures (XPs) – Similar to stored procedures but implemented in a Windows

DLL• DLL is loaded by SQL Server when XP is used• DLLs can execute code when loaded (DllMain())

– SQL Server version < 2008 will only log information after XP isused the first time

– XP can be used to patch memory to avoid logging and alsoto provide needed functionality for the attacker

Page 25: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 25/38

www.appsecinc.com25

SQL Server Anti-Forensics

• Accomplishing attacker desired actions – When loaded XP DLL will patch:

• ReportEventW API from Advapi32.dll to avoid logging onWindows application log

• NTWriteFile API from Ntdll.dll to avoid logging on SQL

Server error log – When the XP is added to SQL Server

• It gets logged on default trace – Default trace should be disabled after DLL is loaded

– Default trace file should be overwritten to erase tracks• Some records are created in master database

– After removing XP, master database must be “cleaned”

Page 26: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 26/38

www.appsecinc.com26

SQL Server Anti-Forensics

• Accomplishing attacker desired actions

– Cleaning master database and transaction log (order does matter)WHILE @i<1000BEGIN

BEGIN TRAN

... (code setting @randomvalue in each iteration)DBCC addextendedproc('randomvalue', 'randomvalue')ROLLBACK TRANSET @i=@i+1

END--Shrinking master.mdf data fileDBCC SHRINKFILE (1,1)DBCC SHRINKFILE (1,0)DBCC SHRINKFILE (1,1)

Page 27: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 27/38

www.appsecinc.com27

SQL Server Anti-Forensics

• Accomplishing attacker desired actions – Cleaning master database and transaction log (order does matter)

--Shrinking master.ldf transaction logDBCC SHRINKFILE (2,1)DBCC SHRINKFILE (2,0)

DBCC SHRINKFILE (2,1)

WHILE @i<1000BEGIN

CHECKPOINT --Emptying master.ldf transaction logSET @i=@i+1

END

Page 28: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 28/38

www.appsecinc.com28

SQL Server Anti-Forensics

• Accomplishing attacker desired actions – Cleaning procedure cache

• The next could raise alerts because slow downDBCC FREESYSTEMCACHE('ALL')

• Execute statements only from master database

avoiding views and stored procedures:SELECT * FROM targetdatabase..tableUPDATE targetdatabase..table set data=1

• Then just clean master database proc. cache

DBCC FLUSHPROCINDB(1) – Cleaning data cache (query results, etc.)

CHECKPOINTDBCC DROPCLEANBUFFERS

Page 29: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 29/38

www.appsecinc.com29

SQL Server Anti-Forensics

• Accomplishing attacker desired actions – Modifying user databases

• Cleaning transaction logs will break backup chain• DML and DDL statements can be run using a different

account

– SQL Server service account or Windows user accounts can be used

» Actions will be logged under a different accounteverywhere

– SETUSER and EXECUTE AS» Actions will be logged under a different account

in transaction log

Page 30: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 30/38

www.appsecinc.com30

SQL Server Anti-Forensics

• Accomplishing attacker desired actions – XP can provide the next functionality

• Elevating privileges• Running OS commands under different Windows

accounts

• Removing tracks• Insert a backdoor in SQL Server memory

Page 31: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 31/38

www.appsecinc.com31

SQL Server Anti-Forensics

• Elevating privileges• SQL Server process has impersonation tokens

– If an Windows administrator or SYSTEM token isfound then OS can be owned.

• Token kidnapping technique

– SQL Server service account can impersonate so it'spossible to get impersonation tokens from other processes

– 100% ownage guaranteed, DBA=Windows admin

• After OS is compromised it's possible to clean evenmore tracks – Disk can be wiped, any OS tracks removed, install a

rootkit, etc.

Page 32: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 32/38

www.appsecinc.com32

SQL Server Anti-Forensics

• Running OS commands under different Windowsaccounts

– XP can let the attacker to run any command – An impersonation token can be used to execute

commands under any available Windows account

Removing tracks – After finishing attacker desired actions tracks must be

removed – XP can provide functionality to remove all the tracks

and remove itself

Page 33: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 33/38

www.appsecinc.com33

SQL Server Anti-Forensics

• More advanced techniques – Insert a backdoor in SQL Server memory

• When connecting in an specific way or running someSQL statement

– Avoid logging automatically

– Allow to steal other user sessions at will – Schedule attacks

• Wait for victim user connection – Hijack connection

– All actions logged as victim user – Edit logs instead of erasing or avoiding them

Page 34: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 34/38

www.appsecinc.com34

SQL Server Anti-Forensics

• Attack steps – Add XP and execute it

– SQL Server error log and Windows log get disabled – Disable default trace – Corrupt or overwrite default trace

– Run desired commands – Execute XP to remove tracks and itself

– Enable default trace without running it – Remove XP

– Remove tracks (datafile, transaction log, caches, etc.) – Set default trace to run – Unload XP DLL

• SQL Server error and Windows log get enabled

Page 35: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 35/38

www.appsecinc.com35

Attack scenarios

• DBA is afraid of upcoming lay-offs (sounds familiar?) – Want to keep his job – Need to get rid of another DBA

• Disable logging with a XP or with xp_cmdshell if enabled• Execute commands as victim DBA

– Do things that will make look bad victim DBA• Remove tracks, go home and wait

Or • Install a SQL Server backdoor • If “X” command is not ran in 10 days• Fire payload• Corrupt data bit by bit, can take weeks to detect

Page 36: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 36/38

www.appsecinc.com36

Protections

• Use a third party database activity monitoring solution – DBA activity must be monitored – Built in database logging mechanisms can't be trusted

• Periodically scan databases for missing patches,misconfiguration, vulnerabilities, etc.

• Implement a strong password policy – Teach users to use pass phrases

Page 37: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 37/38

www.appsecinc.com37

Conclusions

• If an attacker can connect to SQL Server as

administrator the game is over – Attacker can complete manipulate database server leaving

almost no tracks – Attacker can also own Windows server too

• Third party monitoring and logging mechanisms mustbe used – If not used then your data is at SQL administrators will – Can't trust on SQL Server logging mechanisms

Page 38: BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

8/8/2019 BlackHat Dc 09 Cerrudo SQL Anti Forensics Slides

http://slidepdf.com/reader/full/blackhat-dc-09-cerrudo-sql-anti-forensics-slides 38/38

Fin

Questions?

Thanks

Contact:cesar>at<appsecinc>dot<com