'winlogon'에 해당되는 글 2건

  1. 2012.10.30 윈도우 로그인 시 알림 보내는 방법
  2. 2010.04.21 시스템 사용 암호 도구--winlogonhack
2012. 10. 30. 18:35

윈도우 로그인 시 알림 보내는 방법

보안에 대한 예산이 많은 기업들은 대부분 솔루션을 도입하여 모니터링을 하겠지만,

일부 그렇지 않은 기업들의 보안 담당자들은 자체적으로 구축하거나 혹은 기본적인 부분만

모니터링 하고 있는 게 현실입니다.


그리고 항상 보안 사고는 해커가 다 뒤적거리고 나온 뒤에 알게 되거나 혹은 모르고 지나는 경우도 있을 겁니다.

또한 해킹사고 후 가장 중요한 것은 침입 시간입니다. 시간을 알 수 있으면 역추적이나 분석에 많은 도움이 되기 때문에

굉장히 중요한 단서입니다.


그리하여 오늘은 예산 0원으로 할 수 있는 효과적인 모니터링 방법에 대하여 공유 해보고자 합니다.

바로 윈도우 로그인 시 알림 메일을 발송하는 방법입니다.


윈도우 배치 파일을 이용하여 메일 발송하는 것을 해보고자 합니다.


> 준비물

- 메모장
- Netcat (NC)

- SMTP 서버


SMTP 서버는 설치 되어 있다는 전제하에 설명 드리겠습니다.

Netcat은 줄여서 NC 라고 많이 쓰고 있는데 간단히 설명 드리면 네트워크를 연결을 통한 작업을 할 수 있도록 제작 된 프로그램입니다.


시나리오는

1. SMTP를 이용한 메일 발송이 가능 하도록 필요한 정보를 텍스트 파일에 저장.

2. 그 정보를 NC 프로그램을 통해서 SMTP 서버에 접속하여 메일을 발송.




배치파일 스크립트입니다.

@echo off

title C:\Windows\system32\cmd.exe

※ title을 넣은 이유는 cmd창이 실행되었을 경우를 대비하여 눈속임을 하기 위함입니다.



rem Create mail contents
echo helo galaglobal.com>> "%userprofile%\alert.txt"
echo mail from:^<Mail@Address^>>> "%userprofile%\alert.txt"
echo rcpt to:^<Mail@Address^>>> "%userprofile%\alert.txt"
echo data>> "%userprofile%\alert.txt"
echo Subject:【-ALERT-】 Server LOGIN detected - [ %COMPUTERNAME% ]>> "%userprofile%\alert.txt"
echo Login by [ %USERNAME% ] on [ %Date% %TIME% ] to Server [ %COMPUTERNAME% ]>> "%userprofile%\alert.txt"
echo .>> "%userprofile%\alert.txt"


※ 위 부분이 메일 내용을 만드는 부분입니다. 일반 SMTP 명령어를 사용하여 메일을 보내도록 하기 위해

내용을 텍스트로 저장합니다. 여기서 중요한 점은 끝에 공백이 들어가면 오류가 나기 때문에 조심하셔야 합니다.



rem Connect smtp server and execute the script file
pushd \\ShareServer\share\nc
nc -w 2 -i 1 SMTP-Server 25 < "%userprofile%\alert.txt" > "%userprofile%\results.txt"
popd


※ 메일 발송 정보를 가지고 NC를 이용하여 SMTP 서버에 접속하여 메일을 보내는 부분입니다.

내용 중에 PUSHD/POPD 라는 명령어가 있는데 cmd를 통한 네트워크 드라이브를 잡아주는 역할을 합니다.

윈도우 cmd에서 UNC경로 사용하기 PUSHD/POPD



rem Delete create files
del /Q "%userprofile%\alert.txt"
del /Q "%userprofile%\results.txt"


※ 흔적을 없애기 위해 생성된 파일을 삭제합니다.




이제 배치파일을 다 만들었고 테스트도 다 끝나셨다면, 젤 중요한 로그인 할 때 배치파일이 실행 되도록 해야겠죠..


방법은 여러가지가 있을 겁니다.

1. 시작 프로그램에 등록

2. 레지스트리 시작에 등록

3. 그룹정책에 등록

4. 기타



등등 여러가지 방법을 통해서 등록을 할 수 있지만, 저는 winlogon 레지스트리에 등록하여 실행하도록 하였습니다.

(해커가 찾아서 삭제할 수 있을 거라는 가정하에.. 저 혼자 생각이지만..ㅡㅡ;)

윈도우 로그인을 할 때 winlogon 레지스트리가 실행이 됩니다.



Winlogon 레지스트리를 찾아보면, Userinit 라는 값이 있는데 이 부분에 추가를 해 놓으면 로그인 할 때 실행이 됩니다.

위치 : [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

※ 덤으로 cmd 창 실행시 알림을 보내도록 설정 할 수도 있습니다. 위 메일 내용만 살짝 바꾸어 사용하시면 됩니다.

레지스트리에 아래 내용을 추가하시면 해커가 cmd창을 실행했을 때 메일을 받아 볼 수 있습니다.


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"AutoRun"="C:\\Windows\\System32\\\alert_cmd.bat"



▶ 참고로 기존 세션이 연결 되어 있으면 로그인 시에는 동작하지 않습니다.




출처 : cleverdj.tistory.com



Trackback 0 Comment 0
2010. 4. 21. 09:30

시스템 사용 암호 도구--winlogonhack

一、远程终端密码泄露分析

1.最新远程终端技术APP
对于大型企业来说,一般都部署有远程终端,微软最新的服务器操作系统Windows 2008 Server中更是重点打造远程终端。终端服务器远程APP是Windows Server 2008中新的远程应用演示方法。在远程连接的一些参数上进行了调整,增加了一些新的功能,据说性能也有较大提高!

2.远程终端密码泄露分析
在大型网络中,由于网络环境复杂,因此服务器之间往往通过远程终端来维护和管理,这种管理在方向不太固定,多是发散。有的可能是通过一台主机登录多台主机,也有的可能是通过多台主机来登录同一台主机,也可能是混乱交叉登录,黑客在入侵网络某一台主机后,肯定会想办法收集网络内部或者跟外部独立主机之间的远程终端登录用户名称和密码。收集方法不外乎三种:

(1)使用GetHashes、Pwdump等工具获取系统的Hash密码值,然后通过LC5以及彩虹表来进行破解,破解成功后得到系统密码,这些密码极有可能是远程终端的密码。

(2)在被控制计算机上安装键盘记录,通过键盘记录来获取用户在登录3389远程终端过程所输入的用户名和密码。这种方法有一定的限制,键盘记录在远程终端窗口最大化时有可能无法记录远程终端登录密码。

(3)使用WinlogonHacK工具软件截取远程登录时所输入的正确密码。这也是本文要重点介绍的部分。当然除了以上三种外,还有一些其它的泄露途径。


二、WinlogonHack工具软件截取密码原理

1.Gina.dll与Msgina.dll
Gina.dll在NT/2000中交互式的登陆支持是由WinLogon调用Gina.dll实现的,Gina.dll提供了一个交互式的界面为用户登陆提供认证请求。WinLogon会和Gina.dll进行交互,缺省是msgina.DLL(在System32目录下)。微软同时也为我们提供了接口,我们可以自己编写Gina.dll来代替Msgina.dll。

不知道什么原因,微软的Gina.dll在Windows XP以及后续版本中都不再出现,原来的Gina.dll改为Msgina.dll(加了ms表示是微软的,嘿嘿!)。Msgina.dll在WindowsXP系统中默认大小为967,680 字节(945K),在Windows 2003中其大小为1,180,672 字节(1153K),如果不是这个大小,估计就有问题了。

2.Msgina.dll文件被损坏和修改将导致严重错误
在DLL知识库(http://www.dofile.com/dlllibrary/msgina/)中是这样描述的:msgina.dll是Windows登陆认证策略相关模块,该模块用于完成所有用户登陆和验证功能,如果系统中的这个文件被修改或者破坏,将导致系统无法使用3389进行登录,如图1所示,这个系统的Msgina.dll文件就被破坏了,从而导致用户无法远程登录3389终端服务器。

图1 Msgina.dll被损坏或者被修改导致无法远程登录远程终端

3.WinlogonHack截取密码原理
WinlogonHack通过挂钩系统中的msgina.dll的WlxLoggedOutSAS函数,记录登录账户密码!WinLogon初始化时会创建3个桌面:

(1)Winlogon桌面:主要显示Windows 安全等界面,如你按下“CTRL+ALT+DEL”快捷看所出现的登陆的界面等。
(2)应用程序桌面:我们平时见到的那个有我的电脑的界面。
(3)屏幕保护桌面:屏幕保护显示界面。

在默认情况下,Gina.dll或者Msgina.dll显示登陆对话框,用户输入用户名及密码。所以要获得用户名和密码,则可以写一个新的Gina.DLL或者Msgina.dll,其中提供接口调用msgina.dll的函数是WlxLoggedOutSAS。启动就用winlogon通知包,当有3389,连上服务器时。新创建的 winlogon.exe会在登录前加载,注册了 “Startup”的dll,Hook了函数,登录成功后,记录密码到 boot.dat 文件,并取消Hook。退出3389后,dll文件即可删除。在实现上只要msgina.dll中WlxLoggedOutSAS函数的前五个字节:
mov edi,edi
push ebp
mov ebp,esp
关于WinlogonHack工具如何具体实现3389远程终端密码的截取,请查看Winlogonhack的源代码以及程序(http://www.antian365.com/bbs/forumdisplay.php?fid=180)。


三、使用WinlogonHack获取密码实例

在WinlogonHack之前有一个Gina木马主要用来截取Windows 2000下的密码,WinlogonHack主要用于截取Windows XP以及Windows 2003 Server。

1.执行install.bat安装脚本
一种方法是将WinlogonHack的安装程序文件Hookmsgina.dll、install.bat、On.reg以及ReadLog.bat复制到一个相同文件夹下面,然后在Dos提示符或者GUI界面写直接运行install.bat即可。执行完毕后不需要重启,当有3389登上时,自动加载DLL,并且记录登录密码!保存在系统system32目录的boot.dat文件中,另外一种方法是将所有文件都放在同一个文件夹中,然后执行install命令即可,如图2所示,表示安装正确的一些提示。

图2 远程安装WinlogonHack软件截取3389登录密码

2.查看密码记录
可以直接打开boot.dat文件查看,也可以运行“ReadLog.bat”脚本移动密码文件到当前目录查中查看。在本例中的操作系统是Windows 2003 Server,直接通过Radmin的telnet,然后先执行“dir boot.dat /a”命令,查看是否有人远程进行登录,如图3所示,boot.dat大小为5762字节,有货!使用“type boot.dat”可以看到记录的登录时间、用户、域名、密码以及旧密码。出现两个密码主要是用于记录用户更改了密码的情况下。

图3 查看密码记录boot.dat文件

3.卸载WinlogonHack
执行“Uninstall.bat”即可自动卸载该程序,如果“%systemroot%\system32\wminotify.dll”文件未能删除,可以重启后删除!


四、攻击与防范方法探讨

1.攻击方法探讨
(1)定制化开发
WinlogonHack代码是开源的,因此入侵者可以定制它,即在“lstrcat( LogPath , "\\boot.dat");”代码中将boot.dat换成其它一个文件,执行Winlogonhack后,一般人员很难发觉。入侵者还可以在此基础上增加一个邮件发送功能,将记录下来的3389远程终端用户名和密码发送到指定的邮箱,笔者在安全加固过程中就曾经碰到过具有这种功能的3389密码截取木马软件。

(2)对WinlogonHack软件做免杀处理
由于WinlogonHack工具软件在网络入侵中扮演了一个重要的辅助角色,因此一些厉害的杀毒软件会自动查杀wminotify.dll文件,如图4所示,我在做试验时,我的avast!杀毒软件就能查出来,作为病毒处理。因此可以通过加花指令、修改特征码等方法修改wminotify.dll文件,使其能够绕过杀毒软件。

图4 杀毒软件会自动查杀wminotify.dll文件

(3)WinlogonHack在攻击中应用
WinlogonHack工具软件主要用于截取3389登录密码,因此在被入侵计算机上运行mstsc后,如果发现在mstsc的计算机地址栏目中出现有多个登录IP地址列表,如图5所示,那么在该计算机上就有安装WinlogonHack软件的必要,通过它来记录在服务器上管理员所登录的3389用户名和密码。

图5 获取3389登录地址列表

2.防范方法探讨
(1)在系统目录查找“wminotify.dll”文件,如果发现有这个文件,则说明系统中一定安装了Winlogonhack工具,可以通过登录一个3389终端来测试,系统目录下是否存在boot.dat文件,如果存在,则可以尝试使用“Uninstall.bat”批处理来卸载它,如果还不能卸载,可以重启后再次卸载。

(2)直接到注册表的键值“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\wminotify”下进行查看,如果存在,则删除即可。

(3)对于定制的WinlogonHack比较难于根除,一个好的办法就是在系统安全状态下做一次文件名称列表备份,以后每次检测系统是通过比较系统目前状态下的文件列表的异同来查看。

(4)如果使用3389远程终端登录多台服务器进行管理,最好在管理完毕后,及时清除3389登录地址列表。

(5)定期杀毒,杀毒软件在一定程度上面能够防范一些已知的病毒,因此勤杀毒,勤看日志,在确认系统被入侵后,一定要仔细彻底的做一边系统的安全检测。


출처 : http://www.sai52.com


Trackback 0 Comment 0