Howie's Notes

Machine Learning and Cyber Security

source

source a.sh 在当前 Shell 中执行 a.sha.sh 不需要有执行权限。source 也可以简写为 .,比如 . a.sh

sh

sh a.sh 打开一个子 Shell 去执行 a.sha.sh 不需要有执行权限。在子 Shell 里执行的 a.sh 里设置的变量,不会影响到父 Shell。类似的,bashsh 同理。

./

./a.sh 打开一个子 Shell 去执行 a.sha.sh 需要有执行权限。注意,这里 ./a.sh 之间没有空格,换个角度看,其实没有使用任何命令,只是指定了当前文件夹下的这个文件而已。这就相当于双击这个文件去运行一样,那这个文件肯定要具有可执行权限。至于为什么要加 ./,我猜想是为了预防与环境变量中相同的名称引起冲突。

前面采用了相对路径的方法,当然也可以采用绝对路径,比如 /root/a.sh 这样,同样可以执行。

另外,./ 运行的文件里通常有 Shebang 一行,也就是以 #! 开头的第一行,用以指明执行这个脚本文件的解释程序。如果没有 Shebang 一行,那么以 ./a.sh 运行脚本时,会自动使用环境变量中的 $SHELL 变量所指定的解释器来运行。

最后,在以 sh a.shbash a.sh 这样的命令运行脚本时,即使文件中指明了 Shebang,也会自动忽略,因为在命令中已经明确指定了所采用的解释器。

不同 Linux 发行版的主要区别是其包管理机制不同,Linux 发行版大致可以分为 2 个派别:一派以 Red Hat 为首,主要包括 CentOS(社区版)、Fedora(桌面版)等;另一派以 Debian 为首,主要包括 Ubuntu、Kali 等。Red Hat 系采用 rpm 为其包格式,yum 为其包管理工具;Debian 系采用 dpkg 为其包格式,apt-get 为其包管理工具。

rpm 与 yum

rpm 全称 Red-Hat Package Manager(RPM 软件包管理器),是 Red Hat 系中的包格式,同时也是其本地包管理工具,常用命令有:

1
2
rpm -i a.rpm  # 安装a
rpm -e a # 卸载a

yum 全称 Yellow dog Updater, Modified(修改后的黄色狗更新器),是 Red Hat 系中的包管理工具,常用命令有:

1
2
3
4
yum update     # 更新包列表
yum upgrade # 更新包
yum install a # 安装a
yum remove a # 卸载a
Read more »

手机号码

国内手机号码为 11 位数,按照各部分编码的含义可以分为 3 段:前 3 位是网络识别号,用以标识一个通信运营商;第 4-7 位是地区编码,由 HLR 归属位置寄存器确定;第 8-11 位是用户号码,此段随机分配。

身份证号码

国内居民身份证号码为 18 位数,按照各部分编码的含义可以分为 4 段:前 6 位是地址码,即编码对象常住户口所在县的行政区划代码,其中第 1-2 位表示省,第 3-4 位表示市,第 5-6 位表示县;第 7-14 位是出生日期码;第 15-17 位是顺序码,即在地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号,其中第 17 位奇数分给男性,偶数分给女性;第 18 位是校验码,根据前面 17 位数字码,按照如下算法计算出来的:

浏览器密码、历史,电脑密码,邮箱密码,QQ 聊天记录,最近打开的文件,环境变量,持久后门

我们假设客户端为 Windows 系统,服务器为 Linux 系统,下面分别针对客户端与服务器进行信息收集。

Windows

登录密码

Windows 的登录密码保存在 %windir%\System32\config\SAM 中,

Linux

编码

编码(encode)是信息从一种形式或格式转换为另一种形式的过程。相应的,解码(decode)是编码的逆过程。

常见的编码算法有 ASCII 编码、URL 编码、HTML 编码、Base64 编码等。

加密

加密(encryption)是将明文(plaintext,cleartext)信息改变为难以读取的密文(ciphertext)内容,使之不可读。只有拥有解密方法的对象,经由解密(decryption)过程,才能将密文还原为正常可读的内容。

现代密码学中的加密算法可以分为两类:对称加密(Symmetric encryption)非对称加密(Asymmetric encryption)

对称加密就是将信息使用一个密钥进行加密,解密时使用同样的密钥,同样的算法进行解密。

非对称加密,又称公开密钥加密,是加密和解密使用不同密钥的算法,一个是公开密钥,一个是私有密钥,一个用作加密的时候,另一个则用作解密,虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个。在通信中,加密通常使用的是对方的公钥,当对方收到密文后可以使用自己的私钥解密。如果加密使用的是自己的私钥,则密文可由任何人解密,由此可验证该文件必定出自该用户,这亦称作数字签名(Digital Signature)

跑题一下,实际上为了性能,数字签名并不是直接使用私钥加密明文,而是使用私钥加密明文的哈希值。

常见的对称加密算法有 DES、3DES、AES、RC5 等。

常见的非对称加密算法有 RSA、DSA、ECDSA、Elgamal 等。

非对称加密在计算上相当复杂,速度远远比不上对称加密,因此,在一般实际情况下,往往通过非对称加密来随机创建临时的对称密钥,亦即对话键,然后才通过对称加密来传输大量、主体的数据。

加密算法实质上是密码算法中的一种,另一种则是哈希(hash)算法

Read more »

MACE 时间

反取证之 Linux 中的一样,Windows 也有 MAC 时间,不过在 Windows 中,C 指的是 Created,即创建时间,Windows 中默认显示的是修改时间,另外,在 Windows 的 NTFS 文件系统中还有 E 时间,即 MFT entry,其中包含了文件的大量信息,包括大小、名称、目录位置、磁盘位置、创建日期等,在擦除痕迹时也要擦除 E 时间,同样,meterpreter 中的 timestomp 命令可以方便的修改 MACE 时间。

隐藏新建账号

当在目标系统上新建了用户账号后,通常会在登录界面上显示出来,要实现隐藏,可以修改注册表项,采用如下命令:

1
REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList /v uname /t REG_DWORD /d 0

注意:这种隐藏只是在登录界面的隐藏,用户使用 net user 或“本地用户和组”仍然可以查到新建的账户。

日志文件

清除相关日志文件

系统日志

Windows 系统日志文件一般存放在 Windows 文件夹下,可以使用如下命令删除之:

1
del %windir%\*.log /a/s/q/f

另外,meterpreter 中的 clearev 命令可以删除事件查看器中的日志信息。

Web 日志

IIS 的日志文件位于 %windir%\System32\LogFiles 目录下。

最后,请不要忘记 HIDS/IPS/WAF/集中的日志服务器的痕迹擦除。

后渗透测试阶段的重要工作便是擦除痕迹,也即反取证,文件系统访问都会留下痕迹,最好的避免计算机取证的方法就是不要碰文件系统,这也是 meterpreter 的先天优势,它完全基于内存,Linux 中的反取证主要涉及 MAC 时间、日志文件、history:

MAC 时间

MAC 即 Modified/Accessed/Changed,也就是修改/访问/更改时间,修改时间指对文件内容修改时的时间,访问时间指对文件内容访问时的时间(例如通过 cat 查看时),更改时间指对文件属性、权限更改时的时间。

使用 ls -l 默认查看的是修改时间,要查看其余 2 个时间,可以加参数 ls -l --time=atime/ctime,另一个查看 MAC 时间的命令是 stat

使用 touch -d "5 days ago"touch -t 1805021030 可以修改 MAC 中的 MA 时间。meterpreter 中的 timestomp 命令可以方便的修改 MAC 时间。

Read more »
0%