Covert channel is a hidden communication in which two Virtual Machine(VM) instances cooperate to send messages via shared resources. Covert channel communication is used to extract information from the target VM running on the same physical machine. This can also be used to verify the correctness of network-based co-residence checks as demonstrated in the work ~\cite{covertchannel.wp}. \par VMs on the same physical machine share the computing resources such as CPU, disks and memory. Hypervisor arbitrates the VM resource contention and provides sequential access to the shared resources. A VM can observe the latency in accessing shared resources to predict the allocation of the same to other VMs. Two processes running on two different VMs use these latency in accessing shared resources to establish covert communication channel.\par In Disk-based covert channel, sender(target) VM does nothing to send ~\emph{0} bit, but it reads from random locations on a shared disk volume to send \emph{1} bit. Listener VM observes the latency for reading from fixed location on the disk volume. Higher latency indicates \emph{1} bit and lower latency indicates \emph{0} bit.
Co-residence of VMs on the same physical machine can be detected using network-based techniques and load based techniques. In Network based co-residency, Dom0 IP address, small packet RTT and numerically close internal IP addresses are used to detect co-residency. A cloud provider can obfuscate this co-residence by making Dom0 not to respond to traceroute and assign random IP addresses during instance creation. In this case, load based co-residency can be used. An attacker instance can check for co-residence with target instance by observing the differences in load samples taken when externally inducing load on the target versus when not. In my implementation, I have used scp protocol to create variation in load in the target VM.