SlideShare a Scribd company logo
1 of 15
Portcullis Computer Security
DETECTING WINDOWS HORIZONTAL PASSWORD GUESSING ATTACKS IN NEAR REAL-TIME
Detecting Windows horizontal password
guessing attacks in near real-time
When attempting to gain a foothold into a Windows Domain, an attacker will
often attempt one or two likely passwords against every user in the Active
Directory, a so-called horizontal password guessing attack. A small number of
failed logons per user will usually not trigger a user account lockout policy and
can be very effective. This post will provide an example solution to detecting such
attacks in near real time, using only native Windows tools.
Even with password complexity requirements and custom filters there is no built-in
way to stop users choosing poor passwords. It is scary how may user accounts are
identified with the password Password1 for example. We need a method of
detecting password guessing attacks, preferably before someone takes control of
the Domain.
By following these instructions you can get hourly (can be trivially customised)
notifications of such horizontal password guessing attacks.
Note: The following method has been developed using Windows 2012.
Configuring the Domain Controller
First we need to configure the Active Directory
Domain Controller to log failed logon attempts:
From the Server Manager tool click Tools and
select Group Policy Management, as shown in
the screenshot :
Expand the nodes in the left hand pane so you
can see the policy Default Domain Controllers
Policy for Domain Controllers within the Domain.
Right-click it and select Edit, as shown :
In the Group Policy Management Editor expand
“Computer Configuration > Policies > Windows
Settings > Security Settings > Local Policies” and then
click “Audit Policy”
Right-click “Audit account logon events” and select
“Properties”, as shown below:
Ensure that both “Define these
policy settings” and “Failure” are
enabled then click “OK”. The
following screenshot shows both
“Success” and “Failure” are
selected:
When you click “OK” the
updated policy settings will be
visible. Next we force the server
to recognise the updated policy
settings by running the
command gpupdate /force by
pressing Windows key + r, as
shown:
Testing
To test that the policy has taken affect
we make a failed logon attempts (from
another system). Note the IP address of
the machine used in the screenshot:
By viewing the Event Viewer on the
Domain Controller we can see in the
following screenshot that failed logon
attempts now generate Audit
Failure events (in this case EventID 4771)
and that the IPAddress shown matches
the host from which the logon attempt
was made:
Parsing the event logs
PowerShell has a cmdlet called get-WinEvent that allows us to filter out all events with a specific
EventId within a given timespan.
Note: The backtick at the end of the first line is PowerShell’s multiline indicator and is required.
By running the above PowerShell command we get all events from the Security log with an ID
value of 4771 from the past hour. If we wanted to change the timespan we could replace
AddHours(-1) with AddMinutes(-30) for the last 30 minutes, or AddDays(-1) for the last 24 hours.
Those events will be accessed via the $events variable.
If we want to check additional EventIds we simply add extra calls to get-WinEvent like so:
Note the use of += to append the extra events.
Parsing the event logs continued…
We specify the parameter -EA silentlycontinue to avoid error messages if there are no events
returned.
Of course some of those events might well be innocent users who mis-typed their password.
Someone performing a horizontal password guessing attack against Active Directory users
will be running that attack from a single host on the network (E.g. an IP address). Or several
hosts might be being used, each testing a sub-set of user accounts and/or passwords. We
want to identify any IP address that failed to logon more than a specified number of times
within our timespan.
In order to obtain information from the event entry message we need to convert the event
to XML so that we can parse it. We will make a note of each IP address that generated the
failed logon event by looping through each event (remember we filtered only those events
we are interested in) and increment a counter specific for each unique IP address we
encounter.
Once we have counted each failed logon attempt originating from all the source IPs
referenced in the log event we simply report on any IP where the counted value exceeds
our specified threshold value by sending an email alert.
The Complete Script
The following PowerShell script implements the complete process:
The PowerShell script will
display information to the
PowerShell Console (if
visible) and send an email,
in this case to
ITSecurity@mydomain.com
from
alerts@mydomain.com,
using the Send-
MailMessage cmdlet.
Testing the Script
We can test the script with the following command :
Note: You may need to first enable external scripting within PowerShell:
For a more secure configuration of PowerShell you can specify Signed instead
of Unrestricted. More details on this can be found on Microsoft’s web site.
Running the script automatically
Now we need a method of running the script on the Domain Controller
each hour. We can use the task scheduler (as an Administrator):
Once we create the scheduled task we need to start it:
Note: For extra security you should create a service account with the minimum privileges required to access the
event log and send Emails, and specify that account in the /ru parameter, in place of NT
AUTHORITYLOCALSERVICE.
And that’s it. You may want to tweak the time period settings and the $mail_domainSr value, and the email settings
will need to be updated.
This solution can also be used to cover password attacks on local user accounts through the use of Centralised
Event Logging. Also see the National Security Agency’s (NSA)detailed paper on configuring centralised event
logging.
Download available
https://www.nsa.gov/ia/_files/app/Spotting_the_Adversary_with_Windows_Eve
nt_Log_Monitoring.pdf
https://labs.portcullis.co.uk/blog/detecting-windows-horizontal-password-
guessing-attacks-in-near-real-time/
Request to be added to
the Portcullis Labs
Newsletter
SIGN UP HERE

More Related Content

Viewers also liked

5th grade finance (career lesson)
5th grade   finance (career lesson)5th grade   finance (career lesson)
5th grade finance (career lesson)jessied85
 
Transfer pricing
Transfer pricingTransfer pricing
Transfer pricingKapil Jain
 
How to set ASL (Access, Stair, Ladder) standard for pdms 12 in Module Design ...
How to set ASL (Access, Stair, Ladder) standard for pdms 12 in Module Design ...How to set ASL (Access, Stair, Ladder) standard for pdms 12 in Module Design ...
How to set ASL (Access, Stair, Ladder) standard for pdms 12 in Module Design ...Aliakbar Nouri
 
Steps to prepare MTO (Material Take Off) in PDMS
Steps to prepare MTO (Material Take Off) in PDMSSteps to prepare MTO (Material Take Off) in PDMS
Steps to prepare MTO (Material Take Off) in PDMSAliakbar Nouri
 

Viewers also liked (7)

Permanent-building
Permanent-buildingPermanent-building
Permanent-building
 
5th grade finance (career lesson)
5th grade   finance (career lesson)5th grade   finance (career lesson)
5th grade finance (career lesson)
 
NELP
NELPNELP
NELP
 
Finance
FinanceFinance
Finance
 
Transfer pricing
Transfer pricingTransfer pricing
Transfer pricing
 
How to set ASL (Access, Stair, Ladder) standard for pdms 12 in Module Design ...
How to set ASL (Access, Stair, Ladder) standard for pdms 12 in Module Design ...How to set ASL (Access, Stair, Ladder) standard for pdms 12 in Module Design ...
How to set ASL (Access, Stair, Ladder) standard for pdms 12 in Module Design ...
 
Steps to prepare MTO (Material Take Off) in PDMS
Steps to prepare MTO (Material Take Off) in PDMSSteps to prepare MTO (Material Take Off) in PDMS
Steps to prepare MTO (Material Take Off) in PDMS
 

Similar to Detecting windows horizontal password blog

Merged document
Merged documentMerged document
Merged documentsreeja_16
 
sfdx continuous Integration with Jenkins on aws (Part I)
sfdx continuous Integration with Jenkins on aws (Part I)sfdx continuous Integration with Jenkins on aws (Part I)
sfdx continuous Integration with Jenkins on aws (Part I)Jérémy Vial
 
Training Alcatel-Lucent WDM PSS 183x
Training Alcatel-Lucent WDM PSS 183xTraining Alcatel-Lucent WDM PSS 183x
Training Alcatel-Lucent WDM PSS 183xAbdelilah CHARBOUB
 
Windows Registry Auditing Cheat Sheet ver Oct 2016 - MalwareArchaeology
Windows Registry Auditing Cheat Sheet ver Oct 2016 - MalwareArchaeologyWindows Registry Auditing Cheat Sheet ver Oct 2016 - MalwareArchaeology
Windows Registry Auditing Cheat Sheet ver Oct 2016 - MalwareArchaeologyMichael Gough
 
Magento security best practices magento's approach to pci compliance
Magento security best practices  magento's approach to pci complianceMagento security best practices  magento's approach to pci compliance
Magento security best practices magento's approach to pci complianceRitwik Das
 
ANET SureLog SIEM IntelligentResponse
ANET SureLog  SIEM IntelligentResponseANET SureLog  SIEM IntelligentResponse
ANET SureLog SIEM IntelligentResponseErtugrul Akbas
 
GigaSpaces CCF Quick Tour - 2.3.6
GigaSpaces CCF Quick Tour - 2.3.6GigaSpaces CCF Quick Tour - 2.3.6
GigaSpaces CCF Quick Tour - 2.3.6Shay Hassidim
 
Windows logging cheat sheet
Windows logging cheat sheetWindows logging cheat sheet
Windows logging cheat sheetMichael Gough
 
Windows Logging Cheat Sheet ver Jan 2016 - MalwareArchaeology
Windows Logging Cheat Sheet ver Jan 2016 - MalwareArchaeologyWindows Logging Cheat Sheet ver Jan 2016 - MalwareArchaeology
Windows Logging Cheat Sheet ver Jan 2016 - MalwareArchaeologyMichael Gough
 
GigaSpaces Cloud Computing Framework 4 XAP - Quick Tour - v2
GigaSpaces Cloud Computing Framework 4 XAP - Quick Tour - v2GigaSpaces Cloud Computing Framework 4 XAP - Quick Tour - v2
GigaSpaces Cloud Computing Framework 4 XAP - Quick Tour - v2Shay Hassidim
 
Tips to Remediate your Vulnerability Management Program
Tips to Remediate your Vulnerability Management ProgramTips to Remediate your Vulnerability Management Program
Tips to Remediate your Vulnerability Management ProgramBeyondTrust
 
Intrusion Discovery on Windows
Intrusion Discovery on WindowsIntrusion Discovery on Windows
Intrusion Discovery on Windowsdkaya
 
Windows Event Analysis - Correlation for Investigation
Windows Event Analysis - Correlation for InvestigationWindows Event Analysis - Correlation for Investigation
Windows Event Analysis - Correlation for InvestigationMahendra Pratap Singh
 
Windows splunk logging cheat sheet Oct 2016 - MalwareArchaeology.com
Windows splunk logging cheat sheet Oct 2016 - MalwareArchaeology.comWindows splunk logging cheat sheet Oct 2016 - MalwareArchaeology.com
Windows splunk logging cheat sheet Oct 2016 - MalwareArchaeology.comMichael Gough
 
State management in asp
State management in aspState management in asp
State management in aspIbrahim MH
 
Windows 7 Application Compatibility
Windows 7 Application CompatibilityWindows 7 Application Compatibility
Windows 7 Application Compatibilitymicham
 
Monitoring of computers
Monitoring of computers Monitoring of computers
Monitoring of computers carlosrudy_45
 
Micro services from scratch - Part 1
Micro services from scratch - Part 1Micro services from scratch - Part 1
Micro services from scratch - Part 1Azrul MADISA
 

Similar to Detecting windows horizontal password blog (20)

Merged document
Merged documentMerged document
Merged document
 
sfdx continuous Integration with Jenkins on aws (Part I)
sfdx continuous Integration with Jenkins on aws (Part I)sfdx continuous Integration with Jenkins on aws (Part I)
sfdx continuous Integration with Jenkins on aws (Part I)
 
Training Alcatel-Lucent WDM PSS 183x
Training Alcatel-Lucent WDM PSS 183xTraining Alcatel-Lucent WDM PSS 183x
Training Alcatel-Lucent WDM PSS 183x
 
Windows Registry Auditing Cheat Sheet ver Oct 2016 - MalwareArchaeology
Windows Registry Auditing Cheat Sheet ver Oct 2016 - MalwareArchaeologyWindows Registry Auditing Cheat Sheet ver Oct 2016 - MalwareArchaeology
Windows Registry Auditing Cheat Sheet ver Oct 2016 - MalwareArchaeology
 
Magento security best practices magento's approach to pci compliance
Magento security best practices  magento's approach to pci complianceMagento security best practices  magento's approach to pci compliance
Magento security best practices magento's approach to pci compliance
 
ANET SureLog SIEM IntelligentResponse
ANET SureLog  SIEM IntelligentResponseANET SureLog  SIEM IntelligentResponse
ANET SureLog SIEM IntelligentResponse
 
GigaSpaces CCF Quick Tour - 2.3.6
GigaSpaces CCF Quick Tour - 2.3.6GigaSpaces CCF Quick Tour - 2.3.6
GigaSpaces CCF Quick Tour - 2.3.6
 
Windows logging cheat sheet
Windows logging cheat sheetWindows logging cheat sheet
Windows logging cheat sheet
 
Windows Logging Cheat Sheet ver Jan 2016 - MalwareArchaeology
Windows Logging Cheat Sheet ver Jan 2016 - MalwareArchaeologyWindows Logging Cheat Sheet ver Jan 2016 - MalwareArchaeology
Windows Logging Cheat Sheet ver Jan 2016 - MalwareArchaeology
 
GigaSpaces Cloud Computing Framework 4 XAP - Quick Tour - v2
GigaSpaces Cloud Computing Framework 4 XAP - Quick Tour - v2GigaSpaces Cloud Computing Framework 4 XAP - Quick Tour - v2
GigaSpaces Cloud Computing Framework 4 XAP - Quick Tour - v2
 
Tips to Remediate your Vulnerability Management Program
Tips to Remediate your Vulnerability Management ProgramTips to Remediate your Vulnerability Management Program
Tips to Remediate your Vulnerability Management Program
 
Remote Login
Remote LoginRemote Login
Remote Login
 
Intrusion Discovery on Windows
Intrusion Discovery on WindowsIntrusion Discovery on Windows
Intrusion Discovery on Windows
 
Windows Event Analysis - Correlation for Investigation
Windows Event Analysis - Correlation for InvestigationWindows Event Analysis - Correlation for Investigation
Windows Event Analysis - Correlation for Investigation
 
Windows splunk logging cheat sheet Oct 2016 - MalwareArchaeology.com
Windows splunk logging cheat sheet Oct 2016 - MalwareArchaeology.comWindows splunk logging cheat sheet Oct 2016 - MalwareArchaeology.com
Windows splunk logging cheat sheet Oct 2016 - MalwareArchaeology.com
 
State management in asp
State management in aspState management in asp
State management in asp
 
Windows 7 Application Compatibility
Windows 7 Application CompatibilityWindows 7 Application Compatibility
Windows 7 Application Compatibility
 
Monitoring of computers
Monitoring of computers Monitoring of computers
Monitoring of computers
 
Micro services from scratch - Part 1
Micro services from scratch - Part 1Micro services from scratch - Part 1
Micro services from scratch - Part 1
 
2310 b 05
2310 b 052310 b 05
2310 b 05
 

Recently uploaded

Cybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesCybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesLumiverse Solutions Pvt Ltd
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxmibuzondetrabajo
 
IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119APNIC
 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxMario
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
ETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxNIMMANAGANTI RAMAKRISHNA
 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxAndrieCagasanAkio
 

Recently uploaded (9)

Cybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best PracticesCybersecurity Threats and Cybersecurity Best Practices
Cybersecurity Threats and Cybersecurity Best Practices
 
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
Unidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptxUnidad 4 – Redes de ordenadores (en inglés).pptx
Unidad 4 – Redes de ordenadores (en inglés).pptx
 
IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119IP addressing and IPv6, presented by Paul Wilson at IETF 119
IP addressing and IPv6, presented by Paul Wilson at IETF 119
 
Company Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptxCompany Snapshot Theme for Business by Slidesgo.pptx
Company Snapshot Theme for Business by Slidesgo.pptx
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
ETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptxETHICAL HACKING dddddddddddddddfnandni.pptx
ETHICAL HACKING dddddddddddddddfnandni.pptx
 
TRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptxTRENDS Enabling and inhibiting dimensions.pptx
TRENDS Enabling and inhibiting dimensions.pptx
 

Detecting windows horizontal password blog

  • 1. Portcullis Computer Security DETECTING WINDOWS HORIZONTAL PASSWORD GUESSING ATTACKS IN NEAR REAL-TIME
  • 2. Detecting Windows horizontal password guessing attacks in near real-time When attempting to gain a foothold into a Windows Domain, an attacker will often attempt one or two likely passwords against every user in the Active Directory, a so-called horizontal password guessing attack. A small number of failed logons per user will usually not trigger a user account lockout policy and can be very effective. This post will provide an example solution to detecting such attacks in near real time, using only native Windows tools. Even with password complexity requirements and custom filters there is no built-in way to stop users choosing poor passwords. It is scary how may user accounts are identified with the password Password1 for example. We need a method of detecting password guessing attacks, preferably before someone takes control of the Domain. By following these instructions you can get hourly (can be trivially customised) notifications of such horizontal password guessing attacks. Note: The following method has been developed using Windows 2012.
  • 3. Configuring the Domain Controller First we need to configure the Active Directory Domain Controller to log failed logon attempts: From the Server Manager tool click Tools and select Group Policy Management, as shown in the screenshot :
  • 4. Expand the nodes in the left hand pane so you can see the policy Default Domain Controllers Policy for Domain Controllers within the Domain. Right-click it and select Edit, as shown : In the Group Policy Management Editor expand “Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies” and then click “Audit Policy” Right-click “Audit account logon events” and select “Properties”, as shown below:
  • 5. Ensure that both “Define these policy settings” and “Failure” are enabled then click “OK”. The following screenshot shows both “Success” and “Failure” are selected:
  • 6. When you click “OK” the updated policy settings will be visible. Next we force the server to recognise the updated policy settings by running the command gpupdate /force by pressing Windows key + r, as shown:
  • 7. Testing To test that the policy has taken affect we make a failed logon attempts (from another system). Note the IP address of the machine used in the screenshot:
  • 8. By viewing the Event Viewer on the Domain Controller we can see in the following screenshot that failed logon attempts now generate Audit Failure events (in this case EventID 4771) and that the IPAddress shown matches the host from which the logon attempt was made:
  • 9. Parsing the event logs PowerShell has a cmdlet called get-WinEvent that allows us to filter out all events with a specific EventId within a given timespan. Note: The backtick at the end of the first line is PowerShell’s multiline indicator and is required. By running the above PowerShell command we get all events from the Security log with an ID value of 4771 from the past hour. If we wanted to change the timespan we could replace AddHours(-1) with AddMinutes(-30) for the last 30 minutes, or AddDays(-1) for the last 24 hours. Those events will be accessed via the $events variable. If we want to check additional EventIds we simply add extra calls to get-WinEvent like so: Note the use of += to append the extra events.
  • 10. Parsing the event logs continued… We specify the parameter -EA silentlycontinue to avoid error messages if there are no events returned. Of course some of those events might well be innocent users who mis-typed their password. Someone performing a horizontal password guessing attack against Active Directory users will be running that attack from a single host on the network (E.g. an IP address). Or several hosts might be being used, each testing a sub-set of user accounts and/or passwords. We want to identify any IP address that failed to logon more than a specified number of times within our timespan. In order to obtain information from the event entry message we need to convert the event to XML so that we can parse it. We will make a note of each IP address that generated the failed logon event by looping through each event (remember we filtered only those events we are interested in) and increment a counter specific for each unique IP address we encounter. Once we have counted each failed logon attempt originating from all the source IPs referenced in the log event we simply report on any IP where the counted value exceeds our specified threshold value by sending an email alert.
  • 11. The Complete Script The following PowerShell script implements the complete process: The PowerShell script will display information to the PowerShell Console (if visible) and send an email, in this case to ITSecurity@mydomain.com from alerts@mydomain.com, using the Send- MailMessage cmdlet.
  • 12. Testing the Script We can test the script with the following command : Note: You may need to first enable external scripting within PowerShell: For a more secure configuration of PowerShell you can specify Signed instead of Unrestricted. More details on this can be found on Microsoft’s web site.
  • 13. Running the script automatically Now we need a method of running the script on the Domain Controller each hour. We can use the task scheduler (as an Administrator): Once we create the scheduled task we need to start it: Note: For extra security you should create a service account with the minimum privileges required to access the event log and send Emails, and specify that account in the /ru parameter, in place of NT AUTHORITYLOCALSERVICE. And that’s it. You may want to tweak the time period settings and the $mail_domainSr value, and the email settings will need to be updated. This solution can also be used to cover password attacks on local user accounts through the use of Centralised Event Logging. Also see the National Security Agency’s (NSA)detailed paper on configuring centralised event logging.
  • 15. Request to be added to the Portcullis Labs Newsletter SIGN UP HERE